Saya sedang membaca Kode Bersih Robert Martin . Saya pikir itu hebat, dan ketika menulis kode OO saya mengambil pelajarannya ke dalam hati. Secara khusus, saya pikir sarannya untuk menggunakan fungsi-fungsi kecil dengan nama-nama bermakna membuat aliran kode saya jauh lebih lancar. Yang terbaik disimpulkan oleh kutipan ini:
[W] e ingin dapat membaca program seolah-olah itu adalah seperangkat paragraf TO, masing-masing menggambarkan tingkat abstraksi saat ini dan referensi paragraf TO berikutnya pada tingkat berikutnya ke bawah.
( Kode Bersih , halaman 37: "TO paragraf" adalah paragraf yang dimulai dengan kalimat yang disuarakan dalam infinitif. "Untuk melakukan X, kita melakukan langkah Y dan Z." "Untuk melakukan Y, kita ..." dll. ) Sebagai contoh:
UNTUK RenderPageWithSetupsAndTeardowns, kami memeriksa untuk melihat apakah halaman tersebut adalah halaman pengujian dan jika demikian, kami menyertakan pengaturan dan teardown. Dalam kedua kasus kami membuat halaman dalam HTML
Saya juga menulis kode fungsional untuk pekerjaan saya. Contoh-contoh Martin dalam buku jelas dibaca seolah-olah mereka adalah seperangkat paragraf, dan mereka sangat jelas - tetapi saya tidak begitu yakin bahwa "dibaca seperti seperangkat paragraf" adalah kualitas yang diinginkan untuk kode fungsional untuk memiliki .
Mengambil contoh dari perpustakaan standar Haskell :
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
Itu kira-kira sejauh mungkin dari saran Martin, tapi itu singkat, Haskell idiomatis. Tidak seperti contoh-contoh Jawa dalam bukunya, saya tidak dapat membayangkan cara apa pun untuk memperbaiki itu menjadi sesuatu yang memiliki jenis irama yang ia minta. Saya menduga bahwa Haskell yang ditulis dengan standar Kode Bersih akan dianggap bertele-tele dan tidak wajar.
Apakah saya salah untuk menganggap (setidaknya sebagian dari) Clean Code bertentangan dengan praktik terbaik pemrograman fungsional? Apakah ada cara yang masuk akal untuk menafsirkan kembali apa yang dia katakan dalam paradigma yang berbeda?
xs
adalah jenis nama yang buruk tetapi itu sama umum dalam bahasa fungsional seperti i
untuk variabel loop.