为什么在setter之前定义getter(编码约定)

Ric*_*chK 3 c# coding-style properties conventions

我很欣赏这个问题有点傻,所以如果这不是主题或非建设性的话,我会事先道歉.

为什么在C#中使用getter之前用getter定义属性是标准约定?对于具有这两者的属性,您几乎总是在getter之前使用setter,因此它处于有效状态.因此,我首先定义吸气剂似乎有些落后.

此外,setter通常会有一些验证逻辑,getter不需要.在吸气剂之前使用这个逻辑以使其更清楚地表明属性应该如何表现是不是更整洁.例如:

public decimal Price
{
    get { return _price; }
    set
    {
        if(value < 0m)
        {
            throw new ArgumentOutOfRangeException();
        }

        _price = value;
        OnPropertyChanged("Price");
    }
}
Run Code Online (Sandbox Code Playgroud)

setter中的代码比getter更有趣,如果它不优先并且首先定义?

*我知道这些东西没有规则,但实际上每个例子都有,属性在setter之前定义了getter.

Ada*_*rth 17

因为给予比接受更好.

更严重的是,我猜测是因为无论是谁编写了代码片段(或者是自动生成VS中的属性代码),都会下意识地选择此顺序.

然后,因为我们其余的人只是这个开拓牧羊人的羊,我们毫无疑问地追随.

直到你.

你质疑我们曾经伟大的牧羊人,无政府状态只会随之而来.提交您的代码并为山丘奔跑.

  • 我认为现在是时候将这个问题转移到哲学上了 (4认同)
  • 这是一个可爱的答案,+ 1 (2认同)

Sim*_*Var 11

吸气剂通常要短得多(通常是单线),所以把它放在开头可以让你更好地概览,就像你喜欢这样:

if (condition)
{
    // Short code
}
else
{
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

if (!condition)
{
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
    // Long code
}
else
{
    // Short code
}
Run Code Online (Sandbox Code Playgroud)

还有更多 - 只是因为.

  • @AdamHouldsworth我关心,因此这个问题 (2认同)