追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧

追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧

ID:30940743

大小:356.00 KB

页数:7页

时间:2019-01-04

追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧_第1页
追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧_第2页
追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧_第3页
追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧_第4页
追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧_第5页
资源描述:

《追求代码质量(5)-驯服复杂的冗长代码-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、追求代码质量(5):驯I服复杂的兀长代码-编程开发技术追求代码质量(5):驯服复杂的冗长代原文出处:IBM中国我毫不惭愧地承认,在看到复杂的代码块时,我也会感到恐惧和心里发毛。事实上,我敢说您在遇到大量方法和乱七八糟四处蔓延的类时,仏会?有些心里发毛的。不能说在这些情况下寻求退路的人不是完人,这只是优秀开发人员的一•种木能。过于复杂的代码难以测试和维护,这通常还意味着更高的出错率。我在?本系列前面的文章屮已经解释了圈复杂性,它是令人讨厌的代码的一种先兆。具有高圈复杂度值的测试方法儿乎总是把事情弄得一

2、团糟,无法轻易收场。上一个月,我向您展示了如何使用ExtractMethod模式重构您的代码,从而将您带出迷宫。降低方法的复朵度可以使代码更易丁测试和维护,如图1所示:图1.降低复杂度可以使代码更易于维护和测试R歸涵咛啊y门不过,圈复杂性并不是确定高风险代码的惟一复杂性度量。您还可以利用类长度、方法长度和内部类耦合。这些度量Z间存在着错综复朵的关联,但是很容易发现这些关联。这个丿J,我将解释它们为什么那么重要,以及如何使用PMD和JavaNCSS跟踪它们。代码太多了!了解简单代码和流畅代码Z间的区别

3、非常重要。简单代码不必过分简单或易于编写,只需易于;即可。您可以使用C++编写简单代码,就像使用VisualBasic编写它们那样。不过,用任何语言友筋化?代码的最快方式都是一次编写大量的代码。考虑一下如何将此规则应用于方法和类。大多数人对记住信用卡号感到头疼的一个简单原因是,我们一次只能管理7(±2)片数据。了解了这一点,就会明白过多的条件会给以后带来麻烦,使测试和维护变得很困难。相同的原理也可以应用于逻辑块。所冇给定代码主体通常包含已分组的语句,它们拥冇共同的目标,比如创建一个集合,将数据项添加

4、到该集合中。但是,在一个长方法(lon£method)中分组数量众多的逻辑块可能会让人很快忘记该方法的总体意图,因为很少有人可以有效处理这样一个大的数据集。恰恰是这个缺点带來了代码基中的维护问题。兀长的方法是缺陷的避风港,因为很少有人可以有效地分析它们。长方法不仅完成太多的工作,也需要人们费很大的劲去理解!就像长方法会让开发人员讨厌一样,长类(longclass)也会令开发人员讨厌。相同的讨论也可以应用丁总体代码,冗长的类可能会做太多的工作,并承担太多的责任。什么样才算太长?当然了,长方法或类的划分

5、有点主观。冇一个很冇帮助的经验法则,您可以说非代码注释行超过100行的方法是长方法。不过,实际的数值是根据谈论的人而变化的。就我而言,截止点(cutoffpoint)大约是50行代码,但有些开发人员会说,如果某一方法需要您向下滚动整整一天才能看完,那么该方法太长了。截止点的定义取决于您口己。类似地,您必须有自己的确定止确类大小的良好判断。许多人所提倡的一条经验法则是,类的代码行超过1,000行就可以说该类太长了。而另一些人则认为最好不耍超过500行代码。内部类耦合对于一对象与其他对象Z间的关系,复杂

6、模式会不断重复其自身。对于导入许多外部依赖项或者拥有许多?public?方法的类,不但理解起来有些困难,而且所带来的责任重担的增加也会导致某种滋须我将从依赖项开始。如果某一对象导入的外部类超过80个(不包括普通的Java?系统库),那么就可以说该类具有高度输出耦合,这意味着更改导入的类可能会影响该类本身。在最糟糕的情况下,如果导入的是具体的类,并且它们的行为发生更改,那么执行导入的类可能会中断!(请参阅?参考资料,了解关于输出耦合的更多信息。)观察对象导入的数量就很容易预测脆弱性,但如果使用?•?符

7、号(例如?com.acme.user.)导入整个包,则很可能产生误导。为了更精确起见,可能需耍注意对象所拥冇的傩一类一孩的数量(该数量可通过解析代码获得一一3不渥?import?语句)。如果应用程序的包结构大致上以某种在少数包中包含许多类的方式设计,则惟一类型度量(typesmetric)可能很有帮助。包含许多?public?方法的类也冇许多导入。这些类通常会成为代码基的中心,就像Facades或工具类那样。因为存在这种责任(通过大量?public?方法导出),所以它们具冇高度的输入耦合,也会导致反

8、向的脆弱性。如果这些类屮的任何一个发生更改,各种表面上不相关的应用程序部分砂翹发生中断。复杂性是如何产生关联的到目前为止,所给出的模式都在暗示臃肿的代码(长方法、太多的public方法、过多的条件和导入,等等)将影响可读性、可测试性和可维护性。因为该模式用各种度量来重复自己,所以所有这些因素都会导致沁•夫燎。例如,长方法通常得容忍高圈复杂度值,如图2所示:图2.长方法与圈复杂性相互关联不过,相关性并不止于此。具有过多导入的类会有许多惟一类型。这些类通常非常大。而大型的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。