我目前正在阅读Robert Martin的Clean Code。我认为这很棒,在编写OO代码时,我会牢记他的课程。特别是,我认为他的建议是使用带有有意义名称的小函数,这使我的代码流程更加流畅。最好通过以下引用来总结:
[W] e希望能够像读取一组TO段落一样阅读该程序,每个段落都描述了当前的抽象级别,并在下一层向下引用了后续的TO段落。
(清洁代码,第37页:“ TO段落”是一个以不定式表达的句子开头的段落。“要做X,我们执行步骤Y和Z。”“要做Y,我们...”等。 ) 例如:
对于RenderPageWithSetupsAndTeardowns,我们检查该页面是否为测试页面,如果是,则包括设置和拆卸。无论哪种情况,我们都以HTML呈现页面
我也为我的工作编写功能代码。马丁在书中的例子确实读起来好像是一段段落,而且非常清楚-但我不确定“读起来像一组段落”是否适合功能代码使用。
以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
从马丁的建议中可以得到尽可能远的信息,但这是简洁,惯用的Haskell。与他的书中的Java示例不同,我无法想象有任何方法可以将其重构为具有他所要求的节奏的东西。我怀疑按照清洁代码标准编写的Haskell 可能会long之以鼻且不自然。
我是否认为(至少是一些)干净代码与功能编程最佳实践不符?是否有一种明智的方式可以用不同的范式重新解释他的言论?
xs
,这是一个不好的名字,但在函数语言中i
和循环变量一样常见。