title: 编写可读代码的艺术 author: Gamehu tags:
全局观注释
当某个类或者文件使用盖住是,比如是表示系统的入口点、数据如何在系统中流动等,具有全局意义的代码,写几句精心选择的话说明该代码的意义,不宜过大的篇幅。
总结性的注释
对函数做的事情进行总结,让读者在深入了解细节之前就能明白该函数的主旨。
写注释拆分成几件事:
注释目的:
站在读者的立场上思考
怎样写出言简意赅的注释?
某些涉及到比较复杂或者不太好用文字描述的函数,用输入输出的例子进行说明。比如“格式化字符串为下拉框格式”
Example: listToOptionTags([{id:1,name:'a'},...]) returns [{$$typeof: Symbol(react.element), type: ƒ Option(), key: "daa7f2d8-bfd9-11e9-8...},...]
声明代码的意图,别描述字面上的意思。比如在一段for循环上写“遍历用户对象集合”,改成“以逗号分隔拼接所有用户的firstName属性”
具名函数参数,对难以理解的参数可以按照参数名对参数赋值,比如java中可以用嵌入注释的方式:
connect(10,false); 改成 connect(/*timeout_ms=*/30,/*use_encryption=*/false)
什么地方不需要注释?
把控制流变得易读
条件判断,比较的左侧通常是经常变化的值,右侧通常为不变化的值,比如:
if(length>10)和if(10<=length),很明显前者更易读
if/else的顺序,因为if/else的顺序可以自由变换,很多时候应该要考虑哪一种顺序更好,可以有以下准则:
所以有些规则是根据具体的情况而定的,需要我们自行判断该用哪一种形式,总之我们的目的是为了避免if/else顺序变得很别扭的情况。
该表达式的可读性是存在争议的,三目表达式是一行书写,当比较内容比较简单时,使用三目会让代码看上去很紧凑和易读,不过当比较的内容比较长或者比较复杂的时候,所有代码挤在一行,这样就变得冗长了。
*关键思想:相较于追求最小化代码行数,一个更好的度量方法是最小化人们理解它的时间。*所以可以遵循以下原则:默认情况下都用if/else,三目表达式只有在最简单的情况下使用。
用自然语言描述程序,然后用这个描述写出更自然的代码。
比较适用于稍微复杂一些的场景,通过这种方式,能根据描述用的词语和过程,进而拆分出一些子问题,从而简化代码,使代码看起来更自然。
本文引用的内容,如有侵权请联系我删除,给您带来的不便我很抱歉。