从类内部返回私有值的最佳方法是什么?

本文关键字:最佳 方法 是什么 内部 返回 | 更新日期: 2023-09-27 18:05:07

我正试图优化我的代码以获得最大的可读性,为此我需要我的代码始终内联。我将提供两段代码作为示例。在我看来,下面的一个更容易的眼睛。这些片段(其中一个)将存储在一个类中,设置width应该只能在类中设置,而获取width应该总是可能的。

:

private int width;
public int Width
{
    get { return width; }
    private set { }
}

B:

private int width;
public int Width()
{
    return width;
}

在我看来,这两种达到相同结果的方法是相同的。因为我想在我所有的类中完全内联,所以我不想混合使用这两种方式。在我看来,b方法似乎更干净。

这两种方法都有优缺点吗?一种方法应该比另一种更受青睐吗?A和B的方法真的完全相同吗?

从类内部返回私有值的最佳方法是什么?

一般来说,最佳实践表明,在进行面向对象编程时,应该使用方法来执行可能会或可能会影响对象状态(除了单个属性值)的操作,并且应该使用属性(setter和getter)来获取或设置对象属性。

方法名因此(一般来说)应该描述方法的功能(语法应该像动词一样),而属性名应该是名词(引用对象的某些属性)

当然,在表面之下,. net编译器将所有的属性getter和setter转换为方法(在IL代码中没有属性这样的东西),但是上面所阐述的主体允许您一目了然地看到表达式是在"做"什么,还是只是访问一个属性。

不知道为什么所有内容都必须完全内联,或者为什么这样做会使内容更具可读性。

This在任何情况下似乎都是最简洁的实现。

public int Width 
{ 
    get; 
    private set; 
}

如果你真的必须删除空白,但我不确定这是否真的是一个改进。

public int Width { get; private set; }

MSDN在这种情况下提供了一些指导:

在大多数情况下,属性表示数据,方法执行操作。属性像字段一样被访问,这使得它们更容易使用。一个方法是成为属性的一个很好的候选者,如果其中之一存在条件:

  • 不接受参数,返回对象的状态信息。
  • 接受单个参数来设置对象的某些部分状态。

属性应该表现得像字段一样;如果方法不能,不应将其更改为属性。方法比

  • 该方法执行耗时的操作。该方法明显比设置或获取
    所需的时间要慢。字段值。
  • 该方法执行转换。访问一个字段不会返回它所存储的数据的转换版本。
  • Get方法有一个可观察到的副作用。检索字段的值不会产生任何副作用。
  • 执行的顺序很重要。设置一个字段的值不依赖于其他操作的发生。
  • 连续两次调用该方法会产生不同的结果。
  • 方法是静态的,但是返回一个可以被调用者改变的对象。
  • 检索字段的值不允许调用者更改该字段存储的数据。
  • 方法返回一个数组。