怎么判断代码是否是优质量的代码呢?下面来简单对代码质量的问题进行一个介绍。

代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。我们分别来看一下这5方面:

编码标准:一般来说,公司都会有一份编码规范,类命名、包命名、代码风格之类的都会有所要求。

代码重复:顾名思义就是重复的代码,如果代码中有大量的重复代码,就要考虑是否将重复的代码提取出来,封装成一个公共的方法或者组件。

代码覆盖率:测试代码能运行到的代码比率,代码经过了单元测试了吗?是不是每个方法都进行了测试,代码覆盖率是多少?这关系到代码的功能性和稳定性。

依赖项分析:代码依赖关系怎么样?耦合关系怎么样?是否有循环依赖?是否符合高内聚低耦合的原则?

复杂度分析:如果代码中嵌套了很多层的if else,就会让人很难阅读。要相信越优秀的代码,越容易读懂。

那么如何才能编写出优质代码呢?我相信每个开发人员都会有自己的理解。这里整理了一些方法,供大家参考。
上海尚学堂java培训写代码必须从开始就规范,这些都是刚学编程开始必须养成的好习惯。

1、养成一个好习惯

养成一个良好的习惯对我们的工作来说非常重要,当然不仅仅是工作,其他方面亦然。养成一个好习惯需要你从一开始就去培养,并且持之以恒,坚持不懈。而我们下面讲的很多内容,或者说绝大部分内容都可以算做这个好习惯中的一部分。

2、规范你的代码

俗话说得好:”没有规矩,不成方圆”。代码遵循统一的格式规范,首先便于自己日后维护,其次便于移交他人。好的编码规范可以尽可能的减少一个软件的维护成本,毕竟很少有一个软件从开始到结束,都由最初的开发人员来维护。好的编码规范还可以改善软件的可读性, 不仅自己读起来会清晰明朗,他人也更容易理解新的代码,可以最大限度的提高团队开发的合作效率,这对一个项目团队来说非常重要。

3、合理注释代码

永远不要过于相信自己的理解力!当你思路通畅,进入编程境界时,你可以很流畅的实现某个功能,但这种流畅可能是因为你当时正处于这种开发思路中,为了在再次阅读这段代码时,还能找回当初编写代码的思路,建议添加注释!如今,软件开发变成了协调作战,团队成员的沟通变得很重要,因此,一个人写的代码,需要被整个团队的其他成员所理解。而且,随着硬件设备的飞速发展,程序的可读性取代执行效率变成了第一考虑的要素。 程序注释是源代码的重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上。

4、不写过多参数方法

当你的方法参数超过5个时,你就要考虑你这个方法设计的是否合理了。真的需要这么多参数吗?是否可以精简?不但添加了理解难度,而且容易参数位置不正确出现运行异常,还不容易维护。如果实在必须,那么你也是到了必须改变的时候,封装对象来进行传递吧,这样不仅减少了参数个数,也为以后提供了无穷扩展的可能。同时使用者也不必去硬记参数的顺序。

5、不写重复代码

我想我们每个开发人员时时刻刻都要念上几遍来反复提醒自己。重复代码绝对是垃圾代码的第一特征,并且是最大的特征。复制粘贴的时候会很爽,但是一旦出错,意味着加倍的工作量和持续的不可控。不写重复代码的最高目标是不写两行一摸一样的代码,当然这仅存在理论的可能,我们需要做到是不写两份功能一致或相似的代码即可。

6、不做没有意义的事

我们开发的时候,常常会通过复制粘贴来实现一些功能,但是复制粘贴之后,会引入很多使用不到的东西,这些代码搁置在那边完全就是无意义的,可以删除。
另外我们经常会不经意的犯一些这样的错误:写if else if else 判断语句的时候,条件判断会出现重复,分支里面的代码可能永远不会执行等,这些其实都是我们在码之前没有理清思路导致的,也就是我们前面所说代码注释的重要性了。
过多的考虑将来的可能性:有的时候我们考虑代码的可扩展性时,会进入一个误区,也就是过犹不及的概念。带入了非常多当前并没有出现的可能性,这些内容可能永远不会用到,完全没必要在当前就写进去。

7、正确摆放代码

除了要实现功能外,还要考虑的事情非常多,正确摆放代码位置就很重要。检查方法,看里面的实现逻辑是否应该放在这个名称的方法中;检查类,看里面的方法是否应该放在当前类中;检查工程,看里面的类是否应该放在这个工程里面。一层层检查,该发现代码有多少问题了吧。这有时候就是人的过程性思维导致的,从大的方面来讲是我们抽象的不够。

8、多为你的使用者考虑

做任何事情如果没有服务的对象,也就失去了它本身的意义,同样,编码也是如此。如果你是做框架做产品的,那么你面对的就是普通开发人员;如果你是做项目的,那么你面对的就是我们通常意义上的客户。不管你面对的是什么对象,一个好的出发点非常重要:多为你的使用者考虑。也就说我们常说的,客户至上。这里我们拿编写工具方法为例:当你写出一个非常好的工具组件,最后你要考虑的肯定是开放的api接口,该开放哪些接口,接口的参数如何。这些都需要你从使用者的角度出发,你才能考虑的尽可能完善。不管是java里面的重载,还是设计模式里面的适配器,说的都是这个概念,为的都是让你的使用者尽可能的简单,少做事情。

9、拆卸你的代码

评价一份代码的优劣,其中一个非常重要的指标就是:是否易于拆卸。简单来说,就是它的耦合性。这里的耦合分为内耦合和外耦合。我们一般注意到的是外耦合,即我们的代码与外部代码之间。其实内耦合在某些时候更加的重要:我们的代码内部之间的关系。比如你做了一个持久化服务工具,里面涵盖了3块内容:增删改查、脚本操作、数据定义。整个持久化服务不依赖于外部的任何内容,或者依赖的层面会切割到一条线上,那么代表你这份代码的外耦合控制的非常好。这个时候想用到一个数据定义的功能,但是它想在里面加入非常多的个性化,也就是说他仅仅想要1/3的内容,这个时候你的代码如果能够很好的拆卸出来,而不破坏其他部分的平衡,你的内耦合才算达标。

10、合理利用检查工具

码完代码后,用上一些简单的静态检查工具,比如checkstyle、fingbug等,可以很方便的检查出你代码中格式、以及一些隐藏的漏洞。另外可以做下单元测试,让你的代码更健壮。

11、重构你的代码

重构能改善软件设计。
重构使软件更易理解。
重构有助于找到Bug。
重构有助于提高编程速度。

如何才能写出一手高质量优美的代码相关推荐

  1. [翻译Joel On Software]Joel测试:12步写出更高质量代码/The Joel Test: 12 Steps to Better Code

    Joel on Software The Joel Test: 12 Steps to Better Code Joel测试:12步写出更高质量代码 byJoel Spolsky Wednesday, ...

  2. 如何才能写出一手逼疯同事的烂代码?

    要是想写个烂代码,我们只需遵守这十九条准则? 「代码写得好」是对机器学习研究者及开发者最好的赞扬.其第一层意思是说,你的模型非常好,有自己的理解与修正:第二层意思是说代码的结构.命名规则.编写逻辑都非 ...

  3. PyTorch最佳实践,怎样才能写出一手风格优美的代码

    [摘要] PyTorch是最优秀的深度学习框架之一,它简单优雅,非常适合入门.本文将介绍PyTorch的最佳实践和代码风格都是怎样的. 虽然这是一个非官方的 PyTorch 指南,但本文总结了一年多使 ...

  4. 掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵

  5. 如何用 GitHub Actions 写出高质量的 Python代码?

    这篇博文将与你分享如何在Python项目中搭建起GitHub Actions工作流,以确保你写出的代码既优雅,又符合所有最佳实践,且已经过完备测试. 作者 | Wojciech Krzywiec 译者 ...

  6. 如何才能写出“高质量”的代码?

    作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想.很多初学者都会存在很多疑问,觉得 ...

  7. 如何才能写出高质量代码

    提醒:在发布作品前,请把不需要的内容删掉. 你是否曾经为自己写的代码而感到懊恼?你是否想过如何才能写出高质量代码?那就不要错过这个话题!在这里,我们可以讨论什么是高质量代码,如何写出高质量代码等问题. ...

  8. 11月9日云栖精选夜读 | 如何才能写出“高质量”的代码?

    作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想.很多初学者都会存在很多疑问,觉得 ...

  9. 如何才能写出好的软件设计文档?

    作为一名软件工程师,我花了很多时间在阅读和撰写设计文档上.在磨砺了数百篇文档之后,我发现,优秀的设计文档与项目的成功之间有着密切的联系. 这篇文章将介绍怎样才能写出一份优秀的设计文档. 为什么要写设计 ...

最新文章

  1. 跌宕中,特斯拉拿下上海工厂,给蔚来们留下不到两年窗口期
  2. 很好的linux启动说明( bootsect.S、setup.S、head.S)
  3. java web基础编程题_云课堂javaweb微专业Java基础测试题3
  4. MySQL限制CPU资源使用_压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明...
  5. java中如何设计答题小系统_java的一点问题,设计一个答题的程序
  6. 我的docker随笔33:在容器中连接oracle数据库
  7. android入门基础笔记,Sqlite数据库下载
  8. mysql中的sql
  9. 【CentOS 7笔记43】,防火墙和iptables filter表#
  10. 安装Lua For Windows
  11. 深度学习-文档检测方案整理
  12. 中国第一代技术网红,在阿里被当神一样崇拜:我不跟人拼智商,我就跟他们拼狠!...
  13. 劳动保障职业学院计算机专业,北京劳动保障职业学院2020录取分数线(附2017-2020年分数线)...
  14. mpc-hc设置说明
  15. Unity 回合制战斗系统(高级篇)
  16. 列举5种以上表单元素中input的type类型
  17. 这样的老板,真想把他拖进WC爆zou一顿.....
  18. vue3生命周期图示
  19. 12种方法优化苹果,解决机器变慢原因,给系统加速
  20. 优秀课程案例:图形化编程画圆方法汇总

热门文章

  1. python写入html文件带样式,使用pandas将数据帧写入html时应用样式映射
  2. java的object_Java中的Object类详细介绍
  3. Audition 2020安装教程
  4. mysql.info文件是什么_info 数据库
  5. Zookeeper分布式一致性原理(五):Zookeeper-Java-API
  6. java web系统拆分_Java系统中如何拆分同步和异步
  7. java领域对象_java的几种对象(po,dto,dao等)
  8. iis Service Unavailable解决方法(权限问题)
  9. 5-29 vscode占位
  10. 读《程序是怎样跑起来的》第七章有感