可持续开辟不仅在于项目架构设计,还与代码质量密切相干,代码的┞符洁度和质量成正比。—— Robert C. Martin, “Clean Code”
如不雅你还没有发明代码质量的差别,如不雅你大年夜未见过优良的代码,或者大年夜未见过糟糕的代码,那么本文将以直不雅地比较,告诉你代码质量毕竟会有多大年夜的差别。
定名是为了让代码加倍轻易浏览,应用规范的术语不仅加倍易懂,同时也是开辟者常识水平和开辟经验的表示。如不雅说以中文拼音定名显得奇怪,那么直接以a, b, c, d定名的便会显得可恨,谁记得你的a是神马器械!
[ 代码量 ]
我们知道代码量显示着功能的复杂程度,例如Windows XP的代码量跨越2000万行,Linux内核有1500万行(2012年)。然而代码量和功能数量之间并非线性关系。
优良的设计中,代码量和功能数的关系是如许的:
糟糕的设计中,代码量和功能数的关系是如许的:
优良的体系往往会有优良的构造设计:层次清楚、职责单一、模块化,便利扩大或者复竽暌姑。功能的添加往往只是在现有框架中添加少量代码。
然而糟糕的设计中,层次纷乱、互相耦合、难以浏览,艰苦以复竽暌姑又不易扩大。每当被请求添加功能时,不得不几乎完全地实现全部功能的流程,并修复竽暌闺原体系的所有兼容问题。
[ 注释 ]
优良的代铝闼楝注释是如许的:
糟糕的代铝闼楝注释是如许的:
最愚蠢的法度榜样员都能写出机械能读懂的代码,而优良的法度榜样员能写进出可以读懂的代码。
法度榜样的注释是为了让人读得懂。多半优良的代铝闼楝注释几乎接近代码行数的一半,描述函数功能、解释参数设备、指出陷阱地点。而糟糕的代码中不仅不含这些注释,甚至会保存大年夜量残存代码,可读性差又难以重构。
信赖我,一旦你写了如许的函数,它会跟着时光的推移变得越来越长,直到有一天,你也忘了个中的一段代码到底是做什么的。
[ 定名 ]
优良的代铝闼楝定名是如许的:
糟糕的代铝闼楝定名是如许的:
看一个经典的例子,字符串调换:
稍微有点Java常识的便会想到正则表达式:
何必拷贝这一堆的代码给老板看呢?开辟中确切有很多时刻,直接拷贝代码既能立竿见影地完成功能,又不会影响原有功能。但如许的代码多起来之后,万一功能调剂你便须要从新debug所有的副本。花一些时光进修更优雅的用法是值得的。
[ 函数 ]
保持函数的短小,使你的代码加倍易读,例如:
将复杂的逻辑分步调完成。如不雅写在一路将会是如许的:
推荐阅读
我们展示了深度线性收集(应用浮点运算实现)实际上并不是线性的,它可以履行非线性计算。我们应用这一点应用进化策略在线性收集中寻找参数,使我们可以或许解决重要问题。神经收集平日由一>>>详细阅读
地址:http://www.17bianji.com/lsqh/37729.html
1/2 1