Haskell:
রিফ্যাক্টরিং

কিভাবে:

ধরুন, আপনার কাছে Haskell কোডের একটি খণ্ড আছে যা আপনার প্রিয় গানের চেয়ে বেশি নিজেকে পুনরাবৃত্তি করছে। এখানে আপনি কিভাবে ফাংশন ব্যবহার করে তা রিফ্যাক্টর করতে পারেন তার একটি দ্রুত দৃষ্টান্ত দেওয়া হলো।

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

printInvoice :: String -> Float -> String -> IO ()
printInvoice customer total item = do
  putStrLn $ "Customer: " ++ customer
  putStrLn $ "Total: " ++ show total
  putStrLn $ "Item: " ++ item

একটু রিফ্যাক্টরিং করার পর:

printDetail :: String -> String -> IO ()
printDetail label value = putStrLn $ label ++ ": " ++ value

printInvoice :: String -> Float -> String -> IO ()
printInvoice customer total item = do
  printDetail "Customer" customer
  printDetail "Total" (show total)
  printDetail "Item" item

-- নমুনা আউটপুট:
-- Customer: Alice
-- Total: $42.00
-- Item: Haskell Programming Guide

যেমন আপনি দেখতে পাচ্ছেন, পৃথক একটি printDetail ফাংশনে সাধারণ প্যাটার্নটি এক্সট্র্যাক্ট করে আমরা পুনরাবৃত্তি এড়াতে এবং printInvoice কে আরও স্পষ্ট এবং পরিচালনা করা সহজ করতে পারি।

গভীরে ডুব

যখন Haskell শেষ ৮০-এ দৃশ্যপটে এসেছিল, তখন এটি স্পষ্ট ছিল যে ফাংশনাল প্যারাডাইম কোডিং প্রথায় কিছু নতুন বাতাস নিয়ে আসতে পারে। সময় এগিয়ে, Haskell এ রিফ্যাক্টরিং বিশেষ করে সুন্দর হয়ে উঠেছে ধন্যবাদ ফাংশনগুলোকে প্রথম শ্রেণীর নাগরিক হিসেবে এবং এর শক্তিশালী স্থায়ী টাইপ সিস্টেমের কারণে। আপনি আপনার অ্যাপ্লিকেশন ভেঙে ফেলার ভয় ছাড়াই রিফ্যাক্টর করতে পারেন কারণ কম্পাইলার আপনার পিছনে আছে।

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

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

আরও দেখুন

Haskell এ রিফ্যাক্টরিং নিয়ে গভীরে ডুব দিতে, Martin Fowler এর “Refactoring: Improving the Design of Existing Code” বইটি ঘাটতে পারেন যেখানে ধারণাগুলি সর্বজনীনভাবে প্রযোজ্য। আপনার Haskell কোড উন্নতির জন্য অটোমেটেড হিন্ট পাওয়ার জন্য hlint টুল চেক করুন। তাছাড়া, সম্প্রদায় অন্তর্দৃষ্টি এবং আরও পাঠের জন্য Haskell উইকি (https://wiki.haskell.org/Refactoring) ভিজিট করুন।