官术网_书友最值得收藏!

第1章 衛述句

你常常會看到這樣的代碼:

或者稍好一點的:

代碼閱讀者很容易被嵌套條件搞暈。要像這樣整理上面的代碼:

這樣更容易讀懂。它的意思是:“在深入代碼的細節之前,需要處理一些前提條件”。但是,多條返回語句是怎么回事呢?一個例程(routine)只有一條返回語句的“規則”來自FORTRAN時代,那時一個例程可以有多個入口點和出口點。你幾乎無法調試這樣的代碼,也不知道執行了哪些語句。使用衛述句的代碼則更容易分析,因為前提條件是明確的。

不要過多使用衛述句。一個包含七八條衛述句的例程讀起來也并不輕松,往往需要我們投入更多的精力。

只有在精確匹配以下情形時,才能整理成衛述句:

像下面這樣的代碼則很難整理:

也許可以將前兩行提取到一個輔助函數中,然后再將之整理成衛述句,但要始終采取小步的方式。

下面是一個例子:https://github.com/Bogdanp/dramatiq/pull/470

主站蜘蛛池模板: 曲水县| 富裕县| 高碑店市| 云安县| 阿合奇县| 兴义市| 鄂托克前旗| 绍兴县| 昔阳县| 馆陶县| 连江县| 三河市| 青田县| 姜堰市| 黄石市| 咸宁市| 怀宁县| 密山市| 玉树县| 彭山县| 萨迦县| 潍坊市| 墨玉县| 澄江县| 南丰县| 云浮市| 靖边县| 栾城县| 喀什市| 延津县| 甘南县| 乳山市| 平乡县| 静海县| 华安县| 宁陵县| 安化县| 鄂伦春自治旗| 县级市| 慈利县| 满洲里市|