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

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

各位高手,我在看《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
    关注

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

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

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

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

报告相同问题?

悬赏问题

  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题
  • ¥15 有没有人能解决下这个问题吗,本人不会编程
  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测