怎样编写高效java代码

2025-04-25 09:59:47

怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的意见。代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5方面很大程序上决定了一份代码的质量高低。

怎样编写高效java代码

工具/原料

eclipse,jdk,tomcat

概述

1、编码标准:这个想必都很清楚,每个公司几乎都有一份编码规范,类命名、包命名、代码风格之类的东西都属于其中。

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

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

4、依赖项分析:你的代码依赖关系怎么样?耦合关系怎么样?是否有循环依赖?是否符合高内聚低耦合的原则?通过依赖项分析可以辨别一二。

5、复杂度分析:以前有人写的程序嵌套了10层 if else你信吗?圈复杂度之高,让人难以阅读。通过复杂度分析可以揪出这些代码,要相信越优秀的代码,越容易读懂。

6、在实际开发环境中,已经有很多工具为我们解决以上5个方面的问题,下列5个eclipse插件分别对这5个问题有很唁赋獭狍好的支持:编码标准:CheckStyle 插件URL:http://eclipse-cs.sourceforge.net/update/代码重复:PMD的CPD 插件URL:http://pmd.sourceforge.net/eclipse/代码覆盖率:Eclemma 插件URL:http://update.eclemma.org依赖项分析:JDepend 插件URL:http://andrei.gmxhome.de/eclipse/复杂度分析:Eclipse Metric 插件URL:http://metrics.sourceforge.net/update

以checkstyle插件为例

1、在eclipse上安装好了CheckStyle插件后,我们来建一个类用它跑一下。这个类很简单,一个常见的用户实体,包含了id,用户名、密码、邮件等属性,并包含get set方法,一个标准的POJO。运行CheckStyle检查一下:

怎样编写高效java代码

2、一稍僚敉视个我们平时再普通不过的一个类,被checkstyle弄出这么多问题,情何以堪,我们来看看究竟是什么情况?看一下这些警告信息:line 1:说缺少package-info.java文围泠惶底件。line 2:说第一句注释要以“.”结尾。line 30:缺少java doc注释。line 35:getId不是继承的方法,必须指定abstract,final或空。另外也缺少java doc注释。这个类基本就这四类毛病,缺少package-info.java文件,这个文件是做什么的呢?他是用来描述包注释的类,有一定的特殊性,要想详细了解请 百度。如果对你的项目没有太大的影响,可以忽略它。配置CheckStyle的方法我们等会再说。第一句注释要以“.”结尾,这看你的习惯,你确定需要这 个,你就保留,不需要就忽略。缺少java doc,对于java类的属性来说,注释是必要的,所以这个要保留。不是继承的方法,需要加上final关键字,如果你有这个习惯,就保留,反之忽略。

怎样编写高效java代码
怎样编写高效java代码

3、常见的CheckStyle错误有这些:1.Type is missing a javadoc commentClass缺少类型说明2.“{” should be 泠贾高框on the previous line“{” 应该位于前一行3.Methods is missing a javadoc comment方法前面缺少javadoc注释4.Expected @throws tag for “Exception”在注释中希望有@throws的说明5.“.” Is preceeded with whitespace “.”前面不能有空格6.“.” Is followed by whitespace“.”后面不能有空格7.“=” is not preceeded with whitespace“=” 前面缺少空格8.“=” is not followed with whitespace“=” 后面缺少空格9.“}” should be on the same line“}” 应该与下条语句位于同一行10.Unused @param tag for “unused”没有参数“unused”,不需注释11.Variable “CA” missing javadoc变量“CA”缺少javadoc注释12.Line longer than 80characters行长度超过8013.Line contains a tab character行含有”tab” 字符14.Redundant “Public” modifier冗余的“public” modifier15.Final modifier out of order with the JSLsuggestionFinal modifier的顺序错误16.Avoid using the “.*” form of importImport格式避免使用“.*”17.Redundant import from the same package从同一个包中Import内容18.Unused import-java.util.listImport进来的java.util.list没有被使用19.Duplicate import to line 13重复Import同一个内容20.Import from illegal package从非法包中 Import内容21.“while” construct must use “{}”“while” 语句缺少“{}”22.Variable “sTest1” must be private and have accessor method变量“sTest1”应该是private的,并且有调用它的方法23.Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”24.“(” is followed by whitespace“(” 后面不能有空格25.“)” is proceeded by whitespace“)” 前面不能有空格 可以看出CheckStyle检查出来的问题,大多是编码规则以及风格上的问题,这是编写高质量代码最基本的。值得注意的是,我们将一些优秀的开源代码用 CheckStyle来检查也会检查出不少问题,这不能不说这些开源不优秀,而是每个公司组织有自己的编写规范度,这个度既可以减少程序员的工作量又可以 让代码的可读性合格,但这个度不一样符合CheckStyle的完整标准。所以我们一般使用CheckStyle都不会用他的默认标准,而是通过配置,制 定适合自己的编码规则。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢