编码红线
最近在看《A Philosophy of Software Design》,总结和记录一下读后感。顺便长期维护一下这个文章,将自己在编码过程中常出现的一些错误总结起来。
本书主要是在讲解一些开发中不好的coding习惯或者方法,以及如何去避免和解决这些问题。书中主要提及了两个概念:dependency 和 obscurity。dependency回导致change amplification和cognitive load。而obscurity会导致cognitive load和unknown unknowns。所以开发中都是在避免这两个特性出现,而他们的具体表现则是下面列举的一些场景。
Tactical Programing
在开发过程中,很多时候我们会急于去完成需求,从而忽略了如何写出更好的设计的代码,但是如果是一个长期需求维护的需求,越到后面,前期因为tactiacl programming带来的副作用就会越来越明显,甚至到最后不得不重写或者花很大的力气重构代码。
过度封装(shallow module)
封装的原则是高内聚、低耦合。对外的接口要尽可能的少,同时不要对一些简单功能去封装一层函数或者类,这样会导致在看代码的时候返回查看封装的代码,看代码的流畅感会被阻断。但是对一些复用性很高的方法和类的封装还是很有必要的。
不写注释或者注释复述代码
不写注释的都是坏蛋。注释是去阐述一段代码是做什么的,而不是怎么做的。所以,注释不要去解释代码是怎么执行的,读代码的人会自己去看代码是如何运行的。注释只需要给需要用到这段代码讲清楚这段代码是干嘛的就好了。
代码不动,注释先行。先写注释,可以整理开发思路,给后续写代码提供一个整体的思路。而且在开始的时候就把重要的方法和变量的命名给定下来。
命名模糊
命名要满足这些:
能够让自己和其他人对这个命名能够清晰的概念在。知道这个变量或者方法是干什么的。
命名不要含糊不清,要表达的精确。如何你不知道如何去命名,那么可能你还没有弄清楚这个变量或者方法需要完成的是什么。这个时候,你可能需要去将这个模糊的概念再去细分,直到能够细分出来的东西都有一个精确的命名。
同时,命名要坚持从一而终。不要一会用这样的名字,一会儿用一个名字。比如标签,不要一会儿起tag,一会又叫label,这样会很混乱。或着弹窗的展示都叫popupVisible,就不要再用什么shouldShowPopup。要有统一的命名规范。
原文作者: Billy & Barney
原文链接: https://liangbilin.github.io/2020/04/20/Barnery--编码红线/
版权声明: 转载请注明出处(必须保留作者署名及链接)