琪琪裙子网

什么样的代码叫好代码?好代码的标准

  好代码,满足两个条件:能实现预定效果、能被人容易看懂。

  代码的差别,不在于能否实现功能,更主要是实现的好坏。

  有些代码虽然实现效果了,但换个程序员就看不懂,无法维护,也是烂代码。

  现在的软件业,程序员加班都是普遍现象,疲劳工作,势必影响代码质量。

  大部分都在着急实现功能需求,完成领导安排的任务,只是以完成为目标。

  这种不考虑长远的工作方式,虽然短时间内达到了目的,但长期看问题很大。

  程序员一旦离职,新来的需要花很久才能接手,项目的扩展性和稳定性都没保证。

  尤其一些外行的领导,一味地只知道做出来给上级邀功,不能科学的排期。

  功能需求说改就改,新功能拍脑袋就来,导致项目设计不断调整,损伤整体的架构稳定。

  整个行业还没意识到代码质量的重要性,对代码没有敬畏之心,只看眼前不顾长远。

  只有行业人员达到饱和,把不合格的程序员和产品经理都淘汰下去,好代码才能形成风气。

  ·

  编程界有句名言:“计算机程序是写给人看的,只是顺带计算机可以执行”。程序易读,没有花架子、没有不必要的提前优化,这是通用的原则。

  但是在工程实践上,什么是好的代码,取决于代码满足要的需求的领域。

  上图是一段摘自我个人项目的 C 语言代码(业余时间写作,非公司资产),可以看到用到了各种教科书都极力反对的 goto 语句,但实际上,如果是 C 语言比较熟练的话,使用 goto 语句可以大大简化函数返回时的清理代码,达到类似 C++ 语言 RAII 的效果。

  再举个例子来说,当你的工作是实现一个被广泛调用的库函数,比如 C 语言 malloc 这样的内存分配函数,那么,速度和内存使用效率就是就是最大的需求,函数实现可以使用各种丑陋的优化技巧甚至内嵌汇编等等,但只要满足基本需求,这些破坏基本可读性原则的手段就不会影响你的代码成为一段好的代码。

  在满足需求的前提下,我认为好的代码还符合以下特征:

  简单性:能用简单实现的方法就不要用复杂的方法,越简单的代码越容易维护;

  可读性:无论是作者还是他人,都能很容易通过阅读代码了解到代码实现的功能,且代码的编写没有违反常理的地方;

  分层与模块化:从架构的层面让代码易于理解与修改;

  优雅与简洁:代码在满足功能需求的情况下尽量采用成熟的算法与逻辑,举个例子,计算从 1 加到 100 的总和,优雅简洁的方法是使用等差数列公式求和而不是用循环累加;

  效率:一般来说符合上面4条的代码效率不会差,但也应把效率问题牢记在心,比如写 Ja 程序,如果遇到多次字符串相加的情况,随时记得用 StringBuilder 来替换简单的字符串连接。

  以上是个人对好的代码的几点经验,希望对大家有用。

  一段好的代码,最少要遵守基本的编程规范,比如命名方式,注视等等,就拿变量名来说,必须让人通过字面意思大概能知道这个变量是做什么的,代表什么意思,阅读性要好,否则其他人看到代码跟看天书一样,完全不知道是在做什么。同样的,方法命名也是一个道理。

  以下图举例来说,两个方法都是检查用户名与密码是否为空,但是第一个方法明显规范于第二个方法,变量名就是账号与密码的英文单词,一看就明白,而第二个方法以a,b,c来命名,没人知道是啥意思,这种代码是最差的。

  ·

  在我看来,好的代码分成这几个层次:

  单纯的把需求实现,只能算“合格”的代码,如果要成为(初级)好代码,我认为还需要做到下面几点:

  代码的健壮性:需要多考虑规范要求以外的可能,我经常对组员说“不要相信别人,我们要把自己的代码考虑全面”;比如开发一个接口,双方已经约定某个字段是必传的,那么是相信对方系统会传这个字段,还是“不要相信对方”,接口中增加非空判断。

  代码效率:在工作期间,我发现很多开发人员很容易犯的一个错误,就是只关注功能的实现,而不会考虑代码执行效率;例如测试环境数据库中有一万的数据,随便写个SQL也不会发生效率问题,但是生产环境一千万的数据,代码一上生产就会出现问题(项目最好能提供一个准生产环境,或者生产环境的试运行)。

  一方面,软件开发需要团队合作,另外一方面,程序员岗位的流动性比较强,可能两三年过后,项目组成员已经完全换了一拨人了;所以代码容易阅读,是很重要的。

  遵守代码规范:代码分层、起名见名知意、代码样式等等;

  准确的代码注释,接口必须有接口文档;代码修改之后,对应的注释和文档必须也对应修改;

  少些代码不代表让你偷懒,要想写出【好代码】,一定不能只【看到代码】。

  深入了解需求,不合理的需求或者重复的功能,可以拒绝,或者给出其他的建议;

  设计和写代码的时间投入,一定要合理安排,甚至有些时候,设计的时间翻到更长;

  能复用的尽量复用,能抽象的尽量抽象,以便以后可以复用;

  如果有经过实际考验的【轮子】,那就直接拿来使用;

  时刻要注意“过犹不及”:千万不要学了什么新的技术(框架、设计模式等),一定要用到项目中,而不是考虑是否合理,是否适用。

  本人是软件行业从业者,也经常考虑这个问题,正好借这个机会说一下个人的一些想法。个人认为好代码,可能需要满足一下一些条件:

  第一,实现功能,我认为这也是最重要的。如果你写的代码连最基本的功能都没实现,即使再漂亮再优雅,但一点实用性都没有,这点不满足的话,根本谈不上好代码。所以,我认为最大的质量就是实现功能,没有实现功能,其他的都是白扯。

  第二,排版合理。必要的缩进、换行、空行、空格和括号的对齐要合理,代码有层次感。

  第三、必要的注释。类注释,说明类的用途,类的作者,可能还有类的用法等说明。方法注释,方法用途,方法作者,继承说明,参数说明,返回值说明等等。变量注释,主要说明变量的用途。代码块的注释,简明扼要的说明代码的作用,让其他人清楚明白。

  第四、合理的命名规则。类的命名、方法的命名、变量的命名要有意义,易懂。

  第五、编码中需要注意的一些事项和遵循的原则。比如输入流和输出流的关闭,需要在finally中进行操作。比如在代码中注意判空,防止NPE的出现。比如对大文件的处理,不要一下子读入内存,防止内存爆掉。比如注意抽取常量,统一处理,便于维护。比如对异常,最好进行精细化处理,可针对不同进行不同操作等等。还有一些基本原则,比如单一原则,方法实现功能尽量单一。比如开闭原则,比如依赖倒置原则,比如接口隔离原则,比如DRY原则等等。

  第六、设计模式的使用。合理的使用设计模式,可以减少你代码的耦合度,提高代码的扩展性,提高可维护性。另外,可借助框架来减少你代码的耦合度,比如我们经常提到的spring。

  第七、合理的设计。进行必要的设计,但不会过度设计,让代码满足当前的需求。好的架构一般是演化出来的,未必是一次设计出来的。

  本人具有多年的ja开发经验,熟悉多种框架,熟悉网络编程,熟悉ja安全编程,熟悉大数据,熟悉多种安全协议,熟悉并发编程,有兴趣的同学可以互相关注,互相学习!!!

  

什么样的代码叫好代码?好代码的标准

  

什么样的代码叫好代码?好代码的标准

  

什么样的代码叫好代码?好代码的标准

未经允许不得转载:连衣裙_裙子_长裙_睡裙_半身裙-琪琪裙子网 > 什么样的代码叫好代码?好代码的标准

评论

留言与评论(共有 0 条评论)
   
验证码: