相关疑难解决方法(0)

好坏练习?在getter中初始化对象

我似乎有一种奇怪的习惯......据我的同事说,至少.我们一直在一个小项目上工作.我编写类的方式是(简化示例):

[Serializable()]
public class Foo
{
    public Foo()
    { }

    private Bar _bar;

    public Bar Bar
    {
        get
        {
            if (_bar == null)
                _bar = new Bar();

            return _bar;
        }
        set { _bar = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,基本上,我只在调用getter并且字段仍然为null时初始化任何字段.我认为这可以通过不初始化任何地方没有使用的任何属性来减少过载.

ETA:我这样做的原因是我的类有几个属性返回另一个类的实例,而这个属性又具有更多类的属性,依此类推.调用顶级类的构造函数随后将调用所有这些类的所有构造函数,而不是总是需要它们.

除个人偏​​好外,是否有任何反对这种做法的反对意见?

更新:我已经考虑了很多关于这个问题的不同意见,我将坚持我接受的答案.但是,我现在对这个概念有了更好的理解,我能够决定何时使用它,何时不能.

缺点:

  • 线程安全问题
  • 当传递的值为null时,不遵守"setter"请求
  • 微优化
  • 异常处理应该在构造函数中进行
  • 需要在类'代码中检查null

优点:

  • 微优化
  • 属性永远不会返回null
  • 延迟或避免加载"重"物体

大多数缺点不适用于我当前的库,但是我必须测试"微优化"是否实际上是在优化任何东西.

最后更新:

好的,我改变了答案.我最初的问题是这是否是一个好习惯.我现在确信它不是.也许我仍会在我当前代码的某些部分使用它,但不是无条件的,绝对不是所有的时间.因此,在使用它之前,我会失去习惯并思考它.感谢大家!

c# getter coding-style

167
推荐指数
8
解决办法
2万
查看次数

标签 统计

c# ×1

coding-style ×1

getter ×1