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

我的重构哪里不规范?

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

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

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

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

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

上面这两种情况可以避免吗?这是一个问题。
还有一个对自己的警告:小心费力不讨好!
分享到:
评论
27 楼 stonecat 2007-07-06  
小步快跑,不见的就要严格按照什么标准来执行。粒度还需要自己来把握。但一定要记住OO是根本。如果数据库设计的还可以的话,工作量也不会太大。每天早上花1个小时去review自己昨天的代码,应该是一种习惯。随便说一下,我写了7年的代码,依然喜欢。写代码不丢人,因为那是劳动。
26 楼 lzmhehe 2007-06-18  
ojava 写道
我工作时间不长,之所以这样问,是因为我想在项目中提高自己,我不会也不愿意一辈子编码,但是我想使我所作的一切尽量规范!
所以,我问的问题不光是针对这一个项目,而是从项目开发角度对自己的要求!

您的随便的一句话,就可能给我很多启发,谢谢!
使用一下spring 吧
我在没有使用spring的时候 也不太在意面向interface

使用了之后就不同了,更能体会到,模式中的“对于扩展开发,对于修改封闭”

现在写一些测试性的小东西都会不自觉的使用interface (尽管不使用spring)

还有那本重构的书真的是本好书,在不知不觉中就会影响你

还有一个我个人的经验(可能不对) 不要做太多的设计,到了真正coding 的时候,会发现可能根本就不是那么回事

25 楼 ojava 2007-06-18  
我工作时间不长,之所以这样问,是因为我想在项目中提高自己,我不会也不愿意一辈子编码,但是我想使我所作的一切尽量规范!
所以,我问的问题不光是针对这一个项目,而是从项目开发角度对自己的要求!

您的随便的一句话,就可能给我很多启发,谢谢!
24 楼 sun113 2007-06-18  
我告诉你快别干了!
23 楼 dongbin 2007-06-17  
ojava 写道
无知地问一句,详细设计书拿到手,怎样进行面向接口编程?

现把详细设计书烧掉。从测试开始。
22 楼 Xiaohanne 2007-06-16  
强制我们进行Xiaohanne所说的面向接口不要面向实现的编程??
如果你们对日外包,又这么强制的话我保证你们最后会操作成,为了面向interface而面向interface.
我要改建议,请面向详细设计书编程,这样会让你过得心理舒服点
如果你实在受不了这种日子的话,面向辞呈好了

21 楼 ojava 2007-06-15  
无知地问一句,详细设计书拿到手,怎样进行面向接口编程?
20 楼 ojava 2007-06-15  
引用
抛出异常的爱     4 小时前

我只能说呸。。。。只有日本人能想的到。。。


没错,外包的,不过还得做。设计不是自己做的。

我这里就有个例外---gigix说的exception

这里一个Bean竟然有13000行,编译过程中,eclipse累得哼了声:stackOverflow...(类似的),就直接挂了。真够痛苦的!
19 楼 gigix 2007-06-15  
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.)
18 楼 sg552 2007-06-15  
重构—— 改善现有代码的设计。 看看这本书吧。LZ

另外,多测试,常测试,保证每个重构都是成功的。

至于具体细节,就要看经验了。
17 楼 抛出异常的爱 2007-06-15  
javastudy 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。


得在设计时就得想到拉

我只能说呸。。。。只有日本人能想的到。。。
16 楼 xly_971223 2007-06-15  
gigix 写道
xly_971223 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。

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

3.5 lines in average

这个。。。。
有点难度 。。。

15 楼 xly_971223 2007-06-15  
诺铁 写道
因为要后续使用而把局部变量提到成员变量是最差的作法。
你需要的不是重构,是重设计。

重构跟重新设计是冲突的吗
在功能不变的情况下,我们可以通过重新设计完成重构
14 楼 gigix 2007-06-15  
xly_971223 写道
ojava 写道
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。

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

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

100行?太长了吧
我一般情况保持在20行左右
12 楼 gigix 2007-06-15  
诺铁 写道
因为要后续使用而把局部变量提到成员变量是最差的作法。
你需要的不是重构,是重设计。

please man ...
sigh
11 楼 诺铁 2007-06-15  
因为要后续使用而把局部变量提到成员变量是最差的作法。
你需要的不是重构,是重设计。
10 楼 gigix 2007-06-15  
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.)
9 楼 ojava 2007-06-15  
公司新加代码规范条目:所定义的方法尽量不要超过100行。
某一方面来说,可以避免这种流水账式的代码吧!
并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。
8 楼 gigix 2007-06-15  
抛出异常的爱 写道
gigix 写道
抛出异常的爱 写道
不过对于拿不准的,写出来出错看不出来,找不到错的
还是要写中间测试帮助编码

nope...
if you make any mistake during refactoring and break any test,
and if you can't fix it immediately,
you should revert to previous successful step immediately.
(that's why you should check in as frequently as you can.)

那么不动老的代码。。。
写新方法,新的测试,
所有需要的方法都写完了
再一次把老的代码删去
用新的代码顶上?

please man...
what is "refactoring"?
answer: to improve the internal structure of code, WITHOUT CHANGING ITS EXTERNAL BEHAVIOR
when you refactoring, you move forward by SMALL STEPS. you remove the bad smells little by little, and always keep all tests passing.

相关推荐

    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