简单的setter功能还是设置属性?

时间:2014-12-28 11:15:17

标签: oop object getter-setter

只是想知道如果使用setter函数或属性来设置值会有什么不同?以上哪两项应该优先考虑?

column.setWidth(10);
column.width = 10;

2 个答案:

答案 0 :(得分:2)

那么,这在很大程度上取决于您正在使用的编程语言,或者换句话说,它是否支持属性的概念。但是,让我们从一般的角度来看问题。

最基本的观点是属性只是普通的语法糖,使得读取和写入某些假定的支持字段的值更容易,这是重要的一点,为您的代码用户定义明确的合同。 假设因为根本不需要任何支持字段,或者它们可以很多。

setter函数和native属性setter之间的高级语义差异可以认为如下:

  • setter函数 主要仍然是一个函数,因此读者假定它使用其参数执行某些操作;实际上是一个 setter 只是一个惯例。
  • 原生属性设置器 主要是一种将值写入某个假定的后备存储/后备对象的方法;虽然setter的隐藏实现细节可能会像那样工作,但是没有隐含的执行操作的概念。

this question及其答案中讨论了使用属性访问器(getter和setter)的许多实际后果。

答案 1 :(得分:0)

首选属性。实际上这取决于你的语言。如果您开发Python,则所有属性都在Python中公开。