作家
登录

关于烂代码的那些事——什么是好代码

作者: 来源: 2017-04-11 09:00:06 阅读 我要评论

2.3.3.优化机能

机能是评价法度榜样员才能的一个重要指标,很多法度榜样员也对法度榜样的机能津津乐道。但法度榜样的机能很难直接经由过程代码看出来,往往要借助于一些机能测试对象,或者在实际情况中履行才能有结不雅。

如不雅仅大年夜代码的角度推敲,有两个评价履行效力的办法:

  • 算法的时光复杂度,时光复杂度高的法度榜样运行效力必定会低。
  • 单步操作耗时,单步耗时高的操作尽量少做,比如拜访数据库,拜访io等。

而实际工作中,也会见到一些法度榜样员过于热衷优化效力,相对的会带来法度榜样易读性的降低、复杂度进步、或者增长工期等等。对于这类情况,简单的办法是让作者说出这段法度榜样的瓶颈在哪里,为什么会有这个瓶颈,以及优化带来的收益。

当然,无论是优化不足照样优化过度,断定机能指标最好的办法是用数据措辞,而不是纯真看代码,机能测试这部分内容有些超出这篇文┞仿典范围,就不具体展开了。

2.3.4.日记

日记代表了法度榜样在出现问题时排查的难易程度,经(jing)验(chang)丰(cai)富(keng)的法度榜样员大年夜概都邑碰到过这个场景:排盘考题时就少一句日记,查不到某个变量的值不知道是什么,导致逝世活分析不出来问题到底出在哪。

2.3.5.扩大浏览

《Release It!: Design and Deploy Production-Ready Software》(不要看中文版,翻译的实袈溱是太烂了)

Numbers Everyone Should Know

2.4.可保护的代码

相对于前两类代率攀来说,可保护的代码评价标准更模糊一些,因为它要对应的是将来的情况,一般新人很难想象如今的一些做法会对将来造成什么竽暌拱响。不过根据我的经验,一般来说,只要反复的提问两个问题就可以了:

  • 他离职了怎么办?
  • 他没这么做怎么办?

2.4.1.避免反复

几乎所有法度榜样员都知道要避免拷代码,然则?销码这个现象照样弗成避免的成为了法度榜样可保护性的杀手。

代码反复分为两种:模块内反复和模块间反复。无论何种反复,都在必定程度上说清楚明了法度榜样员的程度有问题,模块内反复的问题更大年夜一些,如不雅在同一个文件里都能出现大年夜片反复的代码,那表示他什么弗成思议的代码都有可能写出来。

对于反复的断定并不须要反复浏览代码,一般来说现代的IDE都供给了检查反复代码的对象,只需点几下鼠标就可以了。

我见过一些新人乡⒚?每行代码前面写一句注释,比如:

看起来似乎很好懂,然则几年之后,这段代码就变成了:

  1. // 成员列表的长度>0并且<200  
  2. if(memberList.size() > 0 && memberList.size() < 200 || (tmp.isOpen() && flag)) {  
  3. // 返回当前成员列表  
  4. return memberList;  

再之后可能会改成如许:

  1. // edit by axb 2015.07.30  
  2. // 成员列表的长度>0并且<200  
  3. //if(memberList.size() > 0 && memberList.size() < 200 || (tmp.isOpen() && flag)) {  
  4. // 返回当前成员列表  
  5. // return memberList;  
  6. //}  
  7. if(tmp.isOpen() && flag) {  
  8. return memberList;  

如不雅在项目中发明好几个器械都在做同一件工作,比如经由过程注释描述代码在做什么,或者依附注释替代版本治理的功能,那么这些代码也不克不及称为好代码。

2.4.2.模块划分

一般来说可以大年夜代码长度上初步评价一个模块划分的是否合理,一个类的长度大年夜于2000行,或者一个函数的长度大年夜于两屏幕都是比较危险的旌旗灯号。

对于日记的评价标准有三个:

  • 日记是否足够,所有异常、外部调用都须要有日记,而一条调用链路上的人口、出口和路径关键点上也须要有日记。
  • 日记的表达是否清楚,包含是否能读懂,风格是否同一等。这个的评价标准跟代码的可读性一样,不反复了。
  • 日记是否包含了足够的信息,这里包含了调用的高低文、外部的返回值,用于萌芽的关键字等,便于分析信息。

另一个可以或许表现模块划分程度的处所是依附。如不雅一个模块依附特别多,甚至出现了轮回依附,那么也可以反竽暌钩出作者对模块的筹划比较差,往后在保护这个工程的时刻很有可能出现牵一发而动全身的情况。


  推荐阅读

  机器学习研究趋势分析:TensorFlow已超越Caffe成研究最常用框架

还有,在 InceptionNet 之前谁在评论辩论「inception」?对此也很好奇。开打趣地说,如今提交论文的主题是不是应当环绕把全卷积编码器解码器BatchNorm ResNet GAN应用于风格迁徙,用 Adam >>>详细阅读


本文标题:关于烂代码的那些事——什么是好代码

地址:http://www.17bianji.com/lsqh/34700.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)