Şu anda Robert Martin'in Temiz Kodunu okuyorum . Bence harika ve OO kodunu yazarken derslerini kalpten alıyorum. Özellikle, anlamlı isimlerle küçük fonksiyonları kullanma tavsiyesinin kod akışımı çok daha sorunsuz hale getirdiğini düşünüyorum. En iyisi bu alıntı ile özetlenir:
[W] programı, her biri geçerli soyutlama düzeyini tanımlayan ve sonraki TO paragraflarına sonraki seviyedeki aşağıya atıfta bulunan bir dizi TO paragrafıymış gibi okuyabilmek istiyor.
( Temiz Kod , sayfa 37: "TO paragrafı", mastarda sesli bir cümle ile başlayan bir paragraftır. "X için Y ve Z adımlarını gerçekleştiririz." "Y, biz ..." vb. ) Örneğin:
RenderPageWithSetupsAndTeardowns için sayfanın bir test sayfası olup olmadığını kontrol ediyoruz ve eğer öyleyse kurulumları ve gözyaşlarını ekliyoruz. Her iki durumda da sayfayı HTML biçiminde işleriz
Ayrıca işim için fonksiyonel kod yazıyorum. Martin'in kitaptaki örnekleri kesinlikle bir dizi paragrafmış gibi okuyorlar ve çok açıklar - ama "bir dizi paragraf gibi okuyor" işlev kodunun sahip olması istenen bir kalite olduğundan emin değilim .
Haskell standart kütüphanesinden bir örnek almak :
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
Bu, Martin'in tavsiyelerinden alabileceğiniz kadar uzak, ama bu özlü, deyimsel Haskell. Kitabındaki Java örneklerinden farklı olarak, bunu istediği türden bir kadansa sahip bir şeye yeniden yansıtmanın hiçbir yolunu hayal edemiyorum. Temiz Kod standardına göre yazılan Haskell'in uzun soluklu ve doğal olmayan olarak çıkacağından şüpheleniyorum .
İşlevsel programlama için en iyi uygulamalarla Temiz Kod'u (en azından bir kısmını) dikkate almam yanlış mı? Farklı bir paradigmada söylediklerini yeniden yorumlamanın mantıklı bir yolu var mı?
xs
bir tür kötü bir isimdir fakat işlevsel dillerde i
döngü değişkenleri kadar yaygındır .