![]() |
1
26
我们以前有过这个主题,但现在什么都找不到了。 简而言之:你的需求可能会改变:如果现在没有健康检查,将来可能需要一个。但是,如果将公共字段更改为属性,则会破坏二进制兼容性:使用代码/库的每个客户机都必须重新编译。 这是 坏的 因为它可能要花很多钱。 从一开始就使用属性可以避免这个问题。这甚至对不属于库的代码也很重要。为什么?因为你永远不知道:代码(即使是高度特定于域的!)可能会证明有用,所以您希望将其重构到库中。如果您已经在使用属性来代替公共/受保护字段,那么重构过程显然变得容易得多。 此外,在C 3.0中编写公共属性很容易,因为您只需使用自动实现的属性,就可以节省大量代码:
将为您实现必要的支持字段和getter/setter代码。 我将添加一个个人注释:.net在这方面的行为有些懒惰。编译器可以随时将公共字段更改为属性,从而避免了这个问题。vb6已经为COM公开的类做了这项工作,我认为vb.net和c完全没有理由不这样做。也许是编译器团队中的某个人(jared?)可以对此发表评论。 |
![]() |
2
8
简而言之:
|
![]() |
3
4
Jeff Atwood has blogged about it :
|
![]() |
4
3
将来将字段更改为属性被视为 突破变化 . 字段被视为类的实现细节,公开它们会破坏封装。 |
![]() |
5
2
您还可以保护写访问,并允许使用属性进行读访问:
|
![]() |
6
1
如果你在一个封闭的环境中工作——你不开发一个SDK,所有的类都在同一个项目框架中使用——没有区别。 通常的论点是,“将来可能需要对值进行一些检查,这样对属性就更容易了”。我一点也不买。 使用公共字段更易读、装饰更少且更易于使用。 |
![]() |
8
0
对。 考虑一个公共变量,它现在包含一个字符串,您可以简单地设置它。但是,如果您决定公共变量应该包含一个应该用字符串初始化的对象,那么您必须使用原始对象更改所有代码。但是,如果您使用了setter,那么只需更改setter,就可以使用提供的字符串初始化对象。 |
![]() |
tomm · 谷歌表格-将两列相乘,复制第三列 3 年前 |
![]() |
ziemsterr · 无法在SQL SELECT语句中找出此语法错误 3 年前 |
![]() |
Andrés BolÃvar · AJAX请求未收到我想要的属性 3 年前 |
![]() |
clarkk · 当声明向量时,(1)是什么意思? 3 年前 |
![]() |
Mike C. · Bash错误[:检查文件是否存在时缺少“]” 3 年前 |
![]() |
michael · 错误的脚本和语法问题 3 年前 |