Fish Shell:
রিফ্যাক্টরিং

কিভাবে:

কল্পনা করুন আপনি একটি স্ক্রিপ্ট নিয়ে কাজ করছেন যা সময়ের সাথে সাথে বেশ বড় হয়ে গেছে। এটা সরল হিসেবে শুরু হয়েছিল, কিন্তু এখন এটা একটা বৃহৎ প্রাণী হয়ে গেছে যা যুক্তিবিদ্যার শাখা-প্রশাখায় ছড়িয়ে পড়েছে। এখানে রিফ্যাক্টরিং একটি ফাংশনের ছোট একটি উদাহরণ দেওয়া হলো যা আরও পাঠযোগ্য এবং দক্ষ করার জন্য:

রিফ্যাক্টরিং আগে:

function old_and_clunky
    set color (cat ~/.config/fish/color_theme)
    if test "$color" = 'blue'
        echo 'Blue theme set!'
    else if test "$color" = 'red'
        echo 'Red theme set!'
    else
        echo 'Default theme set!'
    end
end

রিফ্যাক্টরিং পরে:

function set_theme_color
    set theme_color (cat ~/.config/fish/color_theme)
    switch $theme_color
        case blue
            echo 'Blue theme set!'
        case red
            echo 'Red theme set!'
        default
            echo 'Default theme set!'
    end
end

রিফ্যাক্টরিং ফাংশনের নামটি উন্নতি করেছে যাতে এর উদ্দেশ্যটি ভালভাবে বর্ণনা করা হয় এবং ইফ-এলস শৃঙ্খলাকে একটি পরিষ্কার switch বিবৃতিতে প্রতিস্থাপন করেছে।

নমুনা আউটপুট:

Blue theme set!

গভীর ডুব

রিফ্যাক্টরিং প্রথম বারের মতো বিস্তারিতভাবে মার্টিন ফোলারের ঐতিহাসিক বই “রিফ্যাক্টরিং: বিদ্যমান কোডের ডিজাইন উন্নতি” বইয়ে বর্ণিত হয়েছিল। বইটি নতুন কার্যকারিতা লেখা ছাড়াই কোডের উন্নতির একটি কাঠামোবদ্ধ পদ্ধতি উপস্থাপন করেছে। তখন থেকে অনেক রিফ্যাক্টরিং কৌশল চালু হয়েছে এবং এই ধারণাটি আধুনিক সফটওয়্যার বিকাশের একটি মৌলিক অংশ হয়ে উঠেছে।

ফিশ শেল পরিবেশে, রিফ্যাক্টরিং অন্যান্য প্রোগ্রামিং পরিস্থিতিতে থেকে সামান্য ভিন্ন দেখাতে পারে এর বিশেষায়িত সিনট্যাক্স এবং কমান্ড-লাইনের প্রকৃতির কারণে। ফিশ শেলে রিফ্যাক্টরিং স্ক্রিপ্টের বিকল্প হতে পারে অন্য শেল ভাষায় পোর্টিং বা আরও উন্নত স্ক্রিপ্ট ম্যানেজমেন্টের জন্য বাহ্যিক টুলস ব্যবহার। তবে, নেটিভ ফিশ সিনট্যাক্স রাখা মানে প্রায়শই শেলের বৈশিষ্ট্যগুলির সাথে ভালো একীভূতকরণ এবং সামগ্রিকভাবে একটি আরও সহজ অভিজ্ঞতা বোঝায়।

ফিশ শেলে রিফ্যাক্টরিং করার সময়, আপনি প্রধানত ফাংশন এবং কমান্ডগুলির সাথে ডিল করছেন অন্যান্য ভাষাগুলিতে দেখা যায় এমন প্রশস্ত স্কোপের ক্লাস বা মডিউল নয়। এই সূক্ষ্মতা রিফ্যাক্টরিং এর কাজটিকে একটি আরও সরাসরি ও চলমান প্রক্রিয়া করে তোলে, কিন্তু এটি স্পষ্ট, সংক্ষিপ্ত, এবং রক্ষণাবেক্ষণযোগ্য কোডের গুরুত্বকেও জোরদার করে।

আরও দেখুন