मैं वर्तमान में रॉबर्ट मार्टिन का क्लीन कोड पढ़ रहा हूं । मुझे लगता है कि यह बहुत अच्छा है, और जब ओओ कोड लिखते हैं तो मैं उनके सबक को दिल में ले रहा हूं। विशेष रूप से, मुझे लगता है कि सार्थक नामों के साथ छोटे कार्यों का उपयोग करने की उनकी सलाह मेरे कोड प्रवाह को और अधिक सुचारू बनाती है। यह इस उद्धरण द्वारा सबसे अच्छा सारांशित है:
[डब्ल्यू] ई कार्यक्रम को पढ़ने में सक्षम होना चाहता है, क्योंकि यह टीओई पैराग्राफ का एक सेट था, जिनमें से प्रत्येक एब्सट्रैक्शन के वर्तमान स्तर का वर्णन कर रहा है और अगले स्तर पर पैराग्राफ के बाद पैराग्राफ का संदर्भ दे रहा है।
( क्लीन कोड , पृष्ठ ३ a: एक "टू पैरा" एक पैराग्राफ है जो कि शिशु में सुनाई देने वाले वाक्य के साथ शुरू होता है। "एक्स करने के लिए, हम स्टेप्स वाई और जेड करते हैं।" "टू वाई, वी ..." आदि। ) उदाहरण के लिए:
RenderPageWithSetupsAndTeardowns के लिए, हम यह देखने के लिए जांचते हैं कि क्या पृष्ठ एक परीक्षण पृष्ठ है और यदि ऐसा है, तो हम सेटअप और आंसू शामिल करते हैं। या तो मामले में हम पृष्ठ को 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
यह लगभग उतना ही दूर है जितना आप संभवतः मार्टिन की सलाह से प्राप्त कर सकते हैं, लेकिन यह संक्षिप्त, मुहावरेदार हास्केल है। अपनी पुस्तक में जावा के उदाहरणों के विपरीत, मैं किसी भी तरह से उस चीज को रिफैक्ट करने की कल्पना नहीं कर सकता, जिसमें उस तरह का तालमेल हो जो वह मांगता है। मुझे संदेह है कि स्वच्छ संहिता के मानक के लिए लिखा गया हास्केल लंबे समय से बंद और अप्राकृतिक है।
क्या मैं विचार करने के लिए गलत हूं (कम से कम कुछ) कार्यात्मक प्रोग्रामिंग सर्वोत्तम प्रथाओं के साथ बाधाओं पर स्वच्छ कोड ? क्या एक अलग तरीके से व्याख्या करने का एक समझदार तरीका है जो वह एक अलग प्रतिमान में कहता है?
xs
कि एक बुरा नाम है लेकिन यह i
लूप वेरिएबल्स के लिए कार्यात्मक भाषाओं में सामान्य है ।