fuzhongzhe 2011-05-04 17:32
浏览 283
已采纳

帮忙解惑,在构造函数中初始化为什么不好

各位高手,我在看《Ajile Java Crafting Code With DDT》中的setup小节的时候看到了一句话,不是很理解,就请假各位,原文是这样“Even though you could create a constructor and supply common initialization code in it, doing so is considered bad practice. The preferred idiom for test initialization in JUnit is to use the setUp method.
”,为什么在构造函数里面初始化不是很好呢?请教各位帮忙解惑。先谢谢了,在前几节,作者也提到了“ you can have more than one constructor; initializing at the field level saves you from duplicate initialization code in each constructor.
”,但是构造函数可以互相调用,就没有作者说的那种情况了。

  • 写回答

1条回答 默认 最新

  • shadabing 2011-05-04 18:44
    关注

    也没有什么不好,事事无绝对,只是遵循一定的规则可以更多的避免将来可能的错误
    理论上来讲,构造函数只是让你构造一个对象,
    从这个职责上来讲的话,只要构造了这个对象就可以了。而使用这个对象的人也假定你在里面只做了简单的初始,没做什么复杂的东西。主要的其他 的动作放到其他函数里执行最好。

    要 理解这个比较困难,从面向对象的角度来讲的话,类提供了很多的函数,这些函数值应该做这些函数规定的事情,而且值应该做这个函数规定作的事情,这样才能在
    协议的基础上而不是在实现的基础上设计系统。构造函数也是这样的,从协议层次上来讲,构造函数就是做初始化相关东西的,不应该做其他的东西。你如果要打开 数据库,最好加一个明确的方法,这个方法用来打开数据库。这样从协议的层次上来讲变得完全了,你从构造函数里搞得话,缺少了数据库打开的操作,这样的类看
    起来不是很好。

    还有,在设计类的方法时,操作尽量的更小颗粒,就是把一些操作尽量分解成多点方法,这样给用户提供了更好的可控性。当然也曾加了使用的麻烦性,这样 可以通过一个更大的方法来实现。看起来复杂了,但是做出来的类比较好用。也比较健壮。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退