构造函数中的逻辑是代码气味。但是,构造函数中的代码数量是不好的还是代码类型(在构造函数中是否允许某些代码?)?
由于
答案 0 :(得分:2)
构造函数的主要目的是验证对象创建的上下文(参数,环境......)并在调用任何方法之前初始化实例。
例如,FileStream的一个构造函数在参数中采用文件路径和文件模式,如果文件不存在则会抛出异常。
IMO,只要您的代码是验证/初始化逻辑,即使它代表了大量代码,它在构造函数中也是完全有效的。什么可能是可疑的是构造函数中的代码与上下文的验证或实例的初始化无关。
答案 1 :(得分:0)
代码是否可能引发异常是我在构造函数中避免的一件事。我尝试限制构造函数代码以严格初始化对象,并且仅在默认值不起作用的情况下 - 并且不会经常出现。