我的重构哪里不规范?

Posted on

我的重构哪里不规范? - 软件测试

您还未登录 !我的应用登录注册

JavaEye-最棒的软件开发交流社区

论坛首页软件开发和项目管理版软件测试

我的重构哪里不规范?

全部项目管理敏捷开发软件测试配置管理UseCaseUML单元测试XPTDDUPCMM « 上一页 1 2 3 4 5 下一页 »

浏览 17393 次 锁定老贴子 主题:我的重构哪里不规范?

精华帖 (3) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1) 作者 正文 * ojava

  • 等级: 初级会员
  • ojava的博客
  • 文章: 7
  • 积分: 33
  • 来自: 烟台
  • 发表时间:2007-06-15

<>猎头职位: 北京: Java搜索工程师

相关文章:

  • 你们的项目经常重构代码吗?
  • 重构的几大重要特点
  • 讨论:重构的前提是不是 TDD 推荐圈子: 火星常驻JE办事处 更多相关推荐 在项目中,由于没有经过大脑思考,结果产生了流水账形式的代码。 流水账代码:就是根据是详细设计书把整个业务的流程顺序完成到一个类的一个方法中, 而没有根据功能划分成若干个小的方法。 这种流水账式的代码非常不容易测试,因为详细设计中已经将设计细化到对字符串如何操作了, 所以从这样的设计书的高度看业务,简直就是乱七八糟! 所幸,还有重构这个工具,就重构,发现很多的局部变量,因为在多处改变值,而且后续还要使用, 所以只能把这种变量,提到类变量的高度,好多啊。 这样一来, 1。如果要用junit测试,还需要再给相应的提出来的变量加上set,get方法。 2。因为重构出来的方法都是private的,所以测试的时候还要用反射的方法。 上面这两种情况可以避免吗?这是一个问题。 还有一个对自己的警告:小心费力不讨好! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。

推荐链接

面向接口不要面向实现,谢谢 返回顶楼 回帖地址

0 0 请登录后投票 * 抛出异常的爱

  • 等级: 五钻会员
  • 抛出异常的爱的博客
  • 文章: 12050
  • 积分: 2782
  • 来自: 北京
  • 发表时间:2007-06-15

ojava 写道: 在项目中,由于没有经过大脑思考,结果产生了流水账形式的代码。 流水账代码:就是根据是详细设计书把整个业务的流程顺序完成到一个类的一个方法中, 而没有根据功能划分成若干个小的方法。 这种新式的代码非常不容易测试,因为详细设计中已经将设计细化到对字符串如何操作了, 所以从这样的设计书的高度看业务,简直就是乱七八糟! 所幸,还有重构这个工具,就重构,发现很多的局部变量,因为在多处改变值,而且后续还要使用, 所以只能把这种变量,提到类变量的高度,好多啊。 这样一来, 1。如果要用junit测试,还需要再给相应的提出来的变量加上set,get方法。 2。因为重构出来的方法都是private的,所以测试的时候还要用反射的方法。 上面这两种情况可以避免吗?这是一个问题。 还有一个对自己的警告:小心费力不讨好! 无设计,无定义(对每个类与方法),无规则,的重构。。。叶公好龙 返回顶楼 回帖地址

0 0 请登录后投票 * ojava

  • 等级: 初级会员
  • ojava的博客
  • 文章: 7
  • 积分: 33
  • 来自: 烟台
  • 发表时间:2007-06-15

无设计,无定义(对每个类与方法),无规则,的重构。。。叶公好龙 这句话,一针见血!!! 刚学习测试,准备在项目中实践,结果发现自己的代码根本没有办法测试,因为这个巨大的方法太大,看不清要实现的业务是什么! 头脑中就是因为缺少测试的思想,才导致出现这样的问题,果然没有思想是不行的,亡羊补牢,现在晚了吗? 返回顶楼 回帖地址

0 0 请登录后投票 * gigix

  • 等级: 资深会员资深会员
  • gigix的博客
  • 文章: 4810
  • 积分: 2991
  • 来自: 北京
  • 发表时间:2007-06-15

First of all you should have tests for you original method. During your refactoring those test should always pass. So you don't have to test new (and quite possible private) methods/fields you extract out. 返回顶楼 回帖地址

0 1 请登录后投票 * 抛出异常的爱

  • 等级: 五钻会员
  • 抛出异常的爱的博客
  • 文章: 12050
  • 积分: 2782
  • 来自: 北京
  • 发表时间:2007-06-15

gigix 写道

First of all you should have tests for you original method. During your refactoring those test should always pass. So you don't have to test new (and quite possible private) methods/fields you extract out. 是的,不用再加测试了,先写着, 不过对于拿不准的,写出来出错看不出来,找不到错的 还是要写中间测试帮助编码 PS:如果要测试中间的private方法,可以写在主函数中一个 public XXX (){ return 你要测试的方法 ;} PS:天啊。。。变的够快。。。认不出来了 返回顶楼 回帖地址

0 0 请登录后投票 * gigix

  • 等级: 资深会员资深会员
  • gigix的博客
  • 文章: 4810
  • 积分: 2991
  • 来自: 北京
  • 发表时间:2007-06-15

抛出异常的爱 写道

不过对于拿不准的,写出来出错看不出来,找不到错的 还是要写中间测试帮助编码 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.) 返回顶楼 回帖地址

0 0 请登录后投票 * 抛出异常的爱

  • 等级: 五钻会员
  • 抛出异常的爱的博客
  • 文章: 12050
  • 积分: 2782
  • 来自: 北京
  • 发表时间: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.) 那么不动老的代码。。。 写新方法,新的测试, 所有需要的方法都写完了(小步前进?) 再一次把老的代码删去 用新的代码顶上? 返回顶楼 回帖地址

0 0 请登录后投票 * gigix

  • 等级: 资深会员资深会员
  • gigix的博客
  • 文章: 4810
  • 积分: 2991
  • 来自: 北京
  • 发表时间: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. 返回顶楼 回帖地址

0 0 请登录后投票 * ojava

  • 等级: 初级会员
  • ojava的博客
  • 文章: 7
  • 积分: 33
  • 来自: 烟台
  • 发表时间:2007-06-15

公司新加代码规范条目:所定义的方法尽量不要超过100行。 某一方面来说,可以避免这种流水账式的代码吧! 并且强制我们进行Xiaohanne所说的面向接口不要面向实现的编程。 返回顶楼 回帖地址

0 0 请登录后投票

« 上一页 1 2 3 4 5 下一页 » 论坛首页软件开发和项目管理版软件测试 跳转论坛:Java编程和Java企业应用Web前端技术 移动编程和手机应用开发C/C++编程Ruby编程Python编程 PHP编程Flash编程和RIA Microsoft .Net综合技术软件开发和项目管理行业应用 入门讨论招聘求职海阔天空

© 2003-2010 JavaEye.com. 上海炯耐计算机软件有限公司版权所有 [ 沪ICP备05023328号 ]

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途