第14章 组织直线型代码
Key Points:
组织直线型代码的最主要原则是按照依赖关系进行排列
可以用好的子程序名、参数列表、注释,以及——如果代码足够重要——内务管理变量来让依赖关系变得明显
如果代码之间没有顺序依赖关系,那就设法使相关的语句尽可能的接近
第15章 使用条件语句
首先写正常代码路径;再处理不常见情况(这和秒大刀惯用的“短路”写法是相反的)
把正常的处理放在if后面而不要放在else后面
switch-case中的default子句只用于检测真正的默认情况或用来检测错误
Key Points:
对于简单的if-else语句,请注意if子句和else子句的顺序,特别是用它来处理大量错误的时候。要确认正常的情况是清晰的。
对于if-then-else语句串和case语句,选择一种最有利于阅读的顺序
为了捕获错误,可以使用case语句中的default子句,或者使用if-then-else语句串中的最后那个else子句
各种控制结构并不是生来平等的。请为代码的每个部分选用最合适的控制结构
第16章 控制循环
for循环就是为了简单的用途,更复杂的循环最好用while循环去处理。在适当的情况下多使用for循环。
一个循环只做一件事
循环嵌套应控制在3层以内
Key Points:
循环很复杂。保持循环简单将有助于别人阅读你的代码
保持循环简单的技巧包括:避免使用怪异的循环、减少嵌套层次、让入口和出口一目了然、把内务操作代码放在一起
循环下标很容易被滥用。隐私命名要准确,并且要把它们各自仅用于一个用途
仔细的考虑循环,确认它在每一种情况下都运转正常,并且在所有可能的条件下都能退出
第17章 不常见的控制结构
Key Points:
多个return可以增强子程序的可读性和可维护性,同时可以避免产生很深的嵌套逻辑。但是使用它的时候要多加小心
递归能够很优雅的解决一小部分问题。对它的使用也要倍加小心
在少数情况下,goto是编写可读和可维护代码的最佳方法。但这种情况非常罕见。除非万不得已,不要使用goto
第18章 表驱动法
凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。查表法在应对复杂逻辑时会更有效。
编写到表里面的数据比嵌入代码的数据更容易维护
表驱动非常灵活并且容易修改
最好是去找一种好的方案而且同时避免引发灾难,而不要试图去寻找最佳方案
Key Points:
表提供了一种复杂的逻辑和集成结构的替代方案。如果你发现自己对某个应用程序的逻辑或者继承树关系感到困惑,那么问问自己它是否可以通过一个查询表来加以简化
使用表的一项关键决策是决定如何去访问表。你可以采取直接访问、索引访问或者阶梯访问
使用表的另一项关键决策是决定应该把什么内容放入表中