আমি বর্তমানে রবার্ট মার্টিনের ক্লিন কোড পড়ছি । আমি মনে করি এটি দুর্দান্ত, এবং ওও কোড লেখার সময় আমি তার পাঠগুলি হৃদয়গ্রাহী করে নিই। বিশেষত, আমি মনে করি অর্থপূর্ণ নাম সহ ছোট ফাংশনগুলি ব্যবহার করার জন্য তাঁর পরামর্শটি আমার কোডটিকে আরও সুচারুভাবে প্রবাহিত করে। এই উদ্ধৃতি দ্বারা এটি সর্বোত্তম সংক্ষেপে:
[ডাব্লু] আমি প্রোগ্রামটি এমনভাবে পড়তে সক্ষম হতে চাই যেহেতু এটি একটি অনুচ্ছেদের একটি সেট ছিল, যার প্রতিটিই বিমূর্ততার বর্তমান স্তরকে বর্ণনা করছে এবং পরবর্তী স্তরে পরবর্তী স্তরের অনুচ্ছেদে রেফারেন্স করছে।
( ক্লিন কোড , পৃষ্ঠা 37: একটি "টু অনুচ্ছেদ" একটি অনুচ্ছেদ যা ইনফিনিটিভ কণ্ঠে বলা একটি বাক্য দিয়ে শুরু হয় "" এক্স করতে, আমরা Y এবং Z পদক্ষেপগুলি সম্পাদন করি "" "Y করার জন্য, আমরা ..." ইত্যাদি) etc. ) উদাহরণ স্বরূপ:
রেন্ডারপেজ উইথসেটআপস এবং টিয়ারডাউনগুলিতে, পৃষ্ঠাটি একটি পরীক্ষার পৃষ্ঠা কিনা তা আমরা পরীক্ষা করে দেখি এবং যদি তা হয় তবে আমরা সেটআপ এবং টিয়ারডাউনগুলি অন্তর্ভুক্ত করি। উভয় ক্ষেত্রেই আমরা পৃষ্ঠায় HTML এ রেন্ডার করি
আমি আমার কাজের জন্য কার্যকরী কোডও লিখি। বইটিতে মার্টিনের উদাহরণগুলি অবশ্যই পড়তে হবে যেমন তারা অনুচ্ছেদের একটি সেট, এবং সেগুলি খুব স্পষ্ট - তবে আমি এতটা নিশ্চিত নই যে "অনুচ্ছেদের সংকলনের মতো পাঠ্য" কার্যকরী কোডের জন্য একটি পছন্দসই গুণ ।
হাস্কেল স্ট্যান্ডার্ড লাইব্রেরি থেকে একটি উদাহরণ গ্রহণ করা :
maximumBy :: (a -> a -> Ordering) -> [a] -> a
maximumBy _ [] = error "List.maximumBy: empty list"
maximumBy cmp xs = foldl1 maxBy xs
where
maxBy x y = case cmp x y of
GT -> x
_ -> y
এটি মার্টিনের পরামর্শ থেকে যতটা সম্ভব আপনি পেতে পারেন তবে এটি সংক্ষিপ্ত, মূর্তিযুক্ত হাস্কেল matic তাঁর বইয়ের জাভা উদাহরণগুলির বিপরীতে, আমি রিফ্যাক্টর করার কোনও উপায় কল্পনাও করতে পারি না যে তার কাছে যে ধরণের ক্যাডেন্স রয়েছে তার মধ্যে এটি রয়েছে। আমার সন্দেহ হয় যে ক্লিন কোডের স্ট্যান্ডার্ডটিতে লেখা হাস্কেল দীর্ঘ-বাতুল এবং অপ্রাকৃত হিসাবে বন্ধ হবে।
ফাংশনাল প্রোগ্রামিং সেরা অভ্যাসগুলির সাথে মতবিরোধের মধ্যে আমি কি ক্লিন কোড বিবেচনা (কমপক্ষে কিছু) বিবেচনা করা ভুল ? তিনি কী বলেছিলেন তা অন্য দৃষ্টান্তে ব্যাখ্যা করার কোনও বুদ্ধিমান উপায় আছে?
xs
খারাপ নাম তবে এটি i
লুপ ভেরিয়েবলের মতো কার্যকরী ভাষায় সাধারণ ।