我一直在撰写个人项目,并且不断遇到字段需要公开阅读但不应公开写入的情况。据我所知,接受的良好做法"在这些情况下,就是让这个领域变得私密,写一个香草的吸气剂,让它成为一切。
似乎你可以通过允许程序员为读/写访问设置单独的宣传级别来节省getter的开销(包括执行和开发时间),就像UNIX文件权限一样。
是否有可能的语言?
答案 0 :(得分:1)
UNIX文件系统权限与类实例变量可见性(公共,受保护,私有,全局等)之间存在一些差异。前者是ACL,它定义了附加到对象的权限列表,后者defines how much the rest of the system can access the variable。
无论如何,在那之后......
Ruby通过定义:
来处理这个问题所以,如果我有一个Blog
类看起来像:
class Blog
attr_accessor :title
end
attr_accessor :title
被翻译成'getter'和'setter',如下所示:
def title=(value)
@title = value
end
def title
@title
end
相反,如果我在同一个班级中定义attr_reader :title
,它会被翻译成'getter':
def title
@title
end
当attr_writer :title
被翻译成'setter'时:
def title=(value)
@title = value
end
答案 1 :(得分:1)
在C#中,您可以使用auto-implemented property:
public int Foo { get; private set; }
这节省了编写单独的getter方法的大部分复杂性。并且这种getter的执行时间开销应该是none(由于内联)或非常小。