如何提高代码质量?( 十 )
在 elixir 的 linter 里,我把 ABC complexity size 设置为 70,Cyclomatic complexity 设置为 15。所谓 ABC complexity,是代码里的 assignments(A),branches(B),conditionals(C) 的平方之和开方根的结果,它代表了一段代码有多冗长。Cyclomatic complexity,或者说循环复杂度,是指由程序的源代码中量测线性独立路径的个数,它代表了一段代码有多难懂(我们的小脑仁最不擅长同时记几件事情,比如情人节和结婚纪念日)。还有一些其他的设置,比如 nesting(嵌套层数)不超过 3, arity(函数的秩,或者说参数个数)不超过 6 个等等。这些 lint 的约束,会强迫你在函数的实现细节层面,考虑地更好。大部分情况下,同一个功能的代码可以有不同的表述方式,linter 的目的就是建立约束,强迫你用更合理的方式去表达一个功能点。
比如我常常不经意写出的代码:
这样降低了代码的 complexity,提高了代码的 clarity,同时,还使得代码的 extensibility 大大提升 —— 以后要加一个 “type 3” 的处理,仅仅是加一个简单的函数而已,非常符合 open/close 原则。
- 失眠后如何治疗 有哪些方法呢
- 如何护理身体 早上晨练有何好处
- 练瑜伽为什么要选择瑜伽馆,而非健身房?
- 推进网络安全法治建设,提高网络治理能力
- 老司机教你如何赶上 “绿波带”
- 总结一些常见的运动问题!想提高运动体验的你,来开眼界吧
- 如何解决你的大象腿?其实用这些跑步方法就能收获好的效果!
- 网络时代如何保障“离线权”
- 戴上博士帽冲击东京奥运?孙杨是如何成为“学霸”的
- 心理学:在这张图里你第一眼看到的是什么?测你最近的状态如何