`
ojava
  • 浏览: 2187 次
  • 来自: 烟台
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

我的重构哪里不规范?

阅读更多
在项目中,由于没有经过大脑思考,结果产生了流水账形式的代码。

流水账代码:就是根据是详细设计书把整个业务的流程顺序完成到一个类的一个方法中,
而没有根据功能划分成若干个小的方法。

这种流水账式的代码非常不容易测试,因为详细设计中已经将设计细化到对字符串如何操作了,
所以从这样的设计书的高度看业务,简直就是乱七八糟!

所幸,还有重构这个工具,就重构,发现很多的局部变量,因为在多处改变值,而且后续还要使用,
所以只能把这种变量,提到类变量的高度,好多啊。

这样一来,
1。如果要用junit测试,还需要再给相应的提出来的变量加上set,get方法。
2。因为重构出来的方法都是private的,所以测试的时候还要用反射的方法。

上面这两种情况可以避免吗?这是一个问题。
还有一个对自己的警告:小心费力不讨好!
分享到:
评论
47 楼 topcloud 2008-05-24  
设计不良埋下的祸端,要在后期代码重构中解决。开发者的悲哀!
46 楼 szlyf 2008-05-24  
<div class='quote_title'>ojava 写道</div>
<div class='quote_div'>所幸,还有重构这个工具,就重构,发现很多的局部变量,因为在多处改变值,而且后续还要使用,<br/>所以只能把这种变量,提到类变量的高度,好多啊。<br/></div>
<p><br/>重构不仅仅是简单的将一个方法分成几个方法,要考虑接口、类的重新设计以达到代码间耦合度的最低。</p>
45 楼 geszJava 2007-07-30  
同意楼上的,平均多少行要看情况.不过有没有这个习惯就是另外一回事了.
44 楼 xinbo.tang 2007-07-30  
gigix 写道
我觉得,重点在于
一个方法应该做并且只做一件事
所以,如果一个方法纯粹是delegate另一个方法,那是不好的,因为它什么都没做
但如果方法长度普遍地超过10行,也很可能是有问题的,因为根据我的经验,需要用10句话才能说清楚的事情并不是太多的



强烈支持噢,
说平均10行,只是给你一个准则作为参考,当你的方法超过10行的时候,
你就自己问自己一下,我这个方法粒度最小了麼?
在很多情况下立马就能发现可以改进的地方...

人家ruby4行,java 罗嗦点,自己控制一下,
每当超过10-15行就去多思考一下,并不为过,
又不是强迫你只能写10行,只是强迫自己养成一个良好的习惯而已。

43 楼 小天蝎 2007-07-26  
gigix 写道
xly_971223 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。

100行?太长了吧
我一般情况保持在20行左右

3.5 lines in average


理想状态吧 很多公司都不搞敏捷、TDD之类的东东
你叫他3.5 难啊
42 楼 hlxiong 2007-07-23  
我觉得对外暴露的主体方法在10行以内大部分都是可以做到的,但是处理具体业务的私有方法可能不太好控制,应该是由业务来决定规模。
41 楼 Godlikeme 2007-07-20  
先是有剑,才能无剑。
这是一种升华,基本的招式还不了解,怎么可能升华。
重构在一些具体问题上,肯定有不同理解,是正常的。
顺其自然感觉是一种主观无用论。
40 楼 jjx 2007-07-20  
重构是水到渠成的事情

你到一定的阶段,就自然知道代码该怎么重构,所谓手中无剑,心里有剑,哪里有那么多规则

39 楼 fanth 2007-07-18  
平均10行倒也没有什么,如果每个方法都10行以内可能有些牵强了。
38 楼 yeshucheng 2007-07-16  
Godlikeme 写道
同意尽量避免long method,但 重构方法到10行这个级别,我一直认为martin在这个问题上有点学究。
个人认为重构是对已有设计、实现的一个优化过程,让类职责更清晰,消除重复、冗余代码、使层次明确、逻辑清晰、增进可理解性、可测试性、可维护性、可扩展性。
写代码很多时候实现了事,没必要那么严格的照搬martin的原则。理论性可以帮助实践,在实践中也要灵活运用,别教条。优化是无止境的过程,关键要权衡,“是否值得”。当发现为了优化而优化,或者说为了重构而重构就有些过了,该打住了。

简单的就是最好的,有必要再重构。


这个话我很赞同!重构的目的就是为了使代码更加简洁而且易用,但是一味的寻求简单,我到觉得没有这个必要,毕竟重构不是为了最短化
37 楼 Godlikeme 2007-07-16  
同意尽量避免long method,但 重构方法到10行这个级别,我一直认为martin在这个问题上有点学究。
个人认为重构是对已有设计、实现的一个优化过程,让类职责更清晰,消除重复、冗余代码、使层次明确、逻辑清晰、增进可理解性、可测试性、可维护性、可扩展性。
写代码很多时候实现了事,没必要那么严格的照搬martin的原则。理论性可以帮助实践,在实践中也要灵活运用,别教条。优化是无止境的过程,关键要权衡,“是否值得”。当发现为了优化而优化,或者说为了重构而重构就有些过了,该打住了。

简单的就是最好的,有必要再重构。
36 楼 yeshucheng 2007-07-14  
gigix 写道
xly_971223 写道
方法越短越有利于复用
我一直把方法的长短 作为判断一个coder水平的标准

我觉得,重点在于
一个方法应该做并且只做一件事
所以,如果一个方法纯粹是delegate另一个方法,那是不好的,因为它什么都没做
但如果方法长度普遍地超过10行,也很可能是有问题的,因为根据我的经验,需要用10句话才能说清楚的事情并不是太多的


能否举个实例呢:)JAVA方面的,大家也好学习下
35 楼 gigix 2007-07-13  
xly_971223 写道
方法越短越有利于复用
我一直把方法的长短 作为判断一个coder水平的标准

我觉得,重点在于
一个方法应该做并且只做一件事
所以,如果一个方法纯粹是delegate另一个方法,那是不好的,因为它什么都没做
但如果方法长度普遍地超过10行,也很可能是有问题的,因为根据我的经验,需要用10句话才能说清楚的事情并不是太多的
34 楼 xly_971223 2007-07-13  
方法越短越有利于复用
我一直把方法的长短 作为判断一个coder水平的标准
33 楼 gigix 2007-07-13  
songail 写道
gigix 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。

TDD is THE solution of your problem:
you just can't write a test for a hundred-lines-long method.
Actually, in normal cases,
methods should not be longer than 10 lines.
(I'd say 5 lines indeed.)

真的有必要达到这个程度?

我只是告诉你,我这样做了,感觉不错
真的有必要吗?
真的有必要把身体锻炼得那么好吗?只要不生病就行了吧。
真的有必要把自己打扮得那么精神吗?只要衣服不太邋遢就行了吧。
真的有必要赚那么多钱吗?够吃饭就行了吧。
就是这样。
32 楼 songail 2007-07-13  
gigix 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。

TDD is THE solution of your problem:
you just can't write a test for a hundred-lines-long method.
Actually, in normal cases,
methods should not be longer than 10 lines.
(I'd say 5 lines indeed.)

真的有必要达到这个程度?
31 楼 yeshucheng 2007-07-11  
LZ可是说JAVA代码哦?
30 楼 gigix 2007-07-11  
yeshucheng 写道
这个总觉得很神话,呵呵。可能最后程序员会为了重构而重构

又一个例证:FoR(Finance on Rails,http://for.thoughtworkers.org)
源代码在Google code上:http://code.google.com/p/finance-on-rails/
到目前为止,平均每个方法4行代码。请注意,这是把方法开头的“def”和结尾的“end”两行也算在内的。
29 楼 yeshucheng 2007-07-11  
gigix 写道
javastudy 写道
gigix 写道
xly_971223 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。

100行?太长了吧
我一般情况保持在20行左右

3.5 lines in average


有点太短了吧

that's our stat in previous project
you can try to show me an example: why do you need a method longer than 5 lines?
(some complex algorithm implementations are exceptions.)


这个总觉得很神话,呵呵。可能最后程序员会为了重构而重构
28 楼 pdw2009 2007-07-11  
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。


没有规则的流水方法确实能以重构,重构的工作量还不如重写,我觉得我的类设计都必须尊守面向对象设计5大规则!重构也不例外

相关推荐

    27丨理论一:什么情况下要重构?到底重构什么?又该如何重构?1

    重构是软件开发过程中的一个重要环节,它涉及到代码的优化、设计改进和质量提升,而不改变程序的外部行为。本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why...

    webui2重构规范

    **WebUI2重构规范** 在前端开发中,重构是一个至关重要的环节,它旨在提升代码质量、可维护性和可扩展性。WebUI2重构规范旨在为开发者提供一套清晰、一致的指导原则,确保项目的稳定性和效率。以下是根据标题、描述...

    加餐二丨设计模式、重构、编程规范等相关书籍推荐1

    在IT行业中,设计模式、重构和编程规范是提升软件质量、可维护性和团队协作效率的重要基石。以下是对标题和描述中提及的一些书籍的详细介绍: 1. **《设计模式》**:由Gang of Four(GoF)撰写,是设计模式领域的...

    网站重构,公用模板重构

    首先,重构是软件开发中的一个过程,它不改变软件的功能,而是通过改进代码结构和设计来提高其可读性、可扩展性和性能。在Web开发领域,重构通常涉及HTML、CSS和JavaScript的优化,以符合WEB标准和WEB2.0的原则。 ...

    解析重构利器与意图导向编程规范

    ### 解析重构利器与意图导向编程规范 #### 一、重构的重要性 重构是软件开发过程中不可或缺的一部分,尤其是在采用测试驱动开发(TDD)方法时。重构不仅能够提高代码的质量,还能增强程序的可维护性和可扩展性。在...

    重构-改善既有代码的设计

    重构是软件开发过程中一个至关重要的环节,它旨在不改变代码外在行为的前提下,改进代码结构,使之更易理解和修改。此书深入浅出地介绍了重构的概念、原则和实践方法,对于任何Java开发者来说,都是提升编码技艺的...

    .java代码重构

    在Java编程中,代码重构是一种常见的实践,尤其在大型项目中,为了保持代码的健康状态和持续优化,重构是必不可少的。 1. **重构的目的** - 提高代码质量:通过消除冗余代码,简化复杂的逻辑,使得代码更加清晰...

    java代码重构经验分享

    本文总结了 Java 代码重构的经验和技术规范,包括重构要求、重构的工作、代码的坏味道和异常处理。 重构要求 在进行代码重构时,需要遵守以下要求: 1. 安全第一,确保关键部分的代码正确无误,先做出 demo,各...

    jsoup和jtidy 对html操作,将不规范的html转换为xhtml

    在网页开发和数据抓取领域,处理HTML(超文本标记语言)文档时,经常会遇到不规范的HTML代码,这些代码可能由于各种原因如拼写错误、缺少闭合标签等导致解析困难。在这种情况下,jsoup和Jtidy这两个Java库就显得尤为...

    SQL应用重构 PDF

    《SQL应用重构》这本书主要探讨了如何通过优化SQL查询来提升数据库应用的性能和可维护性。在现代软件开发中,SQL是数据处理的核心语言,其效率和合理性直接影响到整个系统的运行效率。以下是对该书内容的详细解读: ...

    JAVA系统重构

    - **代码审查工具**:使用代码审查工具(如SonarQube、FindBugs等)来检测潜在的问题和不规范的编码习惯。 #### 六、总结 重构是软件开发过程中不可或缺的一环,它不仅能够提高代码质量和系统的稳定性,还能显著...

    重构 改善既有代码的设计.ppt,编程功底的体现,必修课

    《重构:改善既有代码的设计》是一门针对程序员和软件开发者的必修课程,它强调了在不改变软件功能的前提下,通过一系列系统性的方法优化代码结构,以提高代码的可读性和可维护性。重构是软件开发过程中不可或缺的一...

    重构你的Rails程式码

    ### 重构你的Rails程式码 在进行Rails版本升级时,重构代码是一个绝佳的机会。本文将深入探讨为何这是个好时机来进行重构,并提供一系列实用的方法帮助您优化代码。 #### 为什么这是一个好时机重构代码? 1. **...

    我的重构学习

    【重构】是软件开发中的一个重要概念,旨在改进代码的结构,提高代码的可读性和可维护性,而不改变其外部行为。在这个过程中,开发者通过一系列小型的修改逐步优化代码,而不是一次性进行大规模的改动,以降低引入...

    java代码重构经验总结

    在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、重构技巧以及常见的代码“坏...

    重构改善既有代码的设计第2版.pdf

    2. 重构的原则:包括何谓重构、两顶帽子、为何重构、何时重构、重构的挑战、重构、架构和YAGNI、重构与软件开发过程、重构与性能、重构起源何处、自动化重构等。 3. 代码的坏味道:包括神秘命名、重复代码、过长函数...

Global site tag (gtag.js) - Google Analytics