代码整洁之道(二)

结构化编程 ,

有些程序员遵循Edsger Dijkstra 的结构化编程规则。Dijkstra 认为,每个函数、函数中的每个代码块都应该有一个入口、一个出口。遵循这些规则,意味着在每个函数中只该有- -个return语句,循环中不能有break或continue语句,而且永永远远不能有任何goto语句。

我们赞成结构化编程的目标和规范,但对于小函数,这些规则助益不大。只有在大函数中,这些规则才会有明显的好处。

所以,只要函数保持短小,偶尔出现的retum、break 或continue语句没有坏处,甚至还比单入单出原则更具有表达力。另外-方面,goto 只在大函数中才有道理,所以应该尽量避免使用。

如何写出这样的函数

写代码和写别的东西很像。在写论文或文章时,你先想什么就写什么,然后再打磨它。初稿也许粗陋无序,你就斟酌推敲,直至达到你心目中的样子。

我写函数时,- -开始都冗长而复杂。有太多缩进和嵌套循环。有过长的参数列表。名称是随意取的,也会有重复的代码。不过我会配上-套单元测试,覆盖每行丑陋的代码。

然后我打磨这些代码,分解函数、修改名称、消除重复。我缩短和重新安置方法。有时我还拆散类。同时保持测试通过。

最后,遵循本章列出的规则,我组装好这些函数。

我并不从一开始就按照规则写函数。我想没人做得到。

 

posted @ 2019-04-10 01:25  忒儿  阅读(124)  评论(0编辑  收藏  举报