作者Lordaeron (Terry)
看板java
标题Re: [战] getter / setter
时间Wed Mar 12 08:36:16 2014
※ 引述《PsMonkey (痞子军团团长)》之铭言:
: 这标题取的又没 fu 又没意义
: 可是我懒得想啥好标题了 [死]
: getter / setter 有没有意义?
: 我觉得要讨论至少得先切割成两个子议题:
: a. 到底需不需要有 getter / setter
: b. 若 a 的答案是「需要」,那到底要不要有 syntax sugar 来辅助?
: a 的话,我是找不到反对的理由
: 或着说,这直接就是挑战封装的优点?
: 反璞归真不是不行,而是我们真的有能力突破当年设计出封装的原因吗?
: 至於 setter 时检查参数值之类的枝节末流 [误] 就更不在话下 XD
: 後来 getter / setter 也发展出很多应用
: 例如 GWT 的 Editor framework 我觉得就玩得不错
: 没有 getter / setter 要怎麽作到,我这种程度是想不太出来
: b(当然要先同意「需要 getter / setter」)
: 我是只知道 .net 的写法,我看不出来这种 syntax sugar 能甜到哪?
: 我反而觉得这只是多产生几种 coding style 所带来的混乱
: 最重要的重点在於,getter / setter 基本上都不用人打
: 自己写 generator 或是用 IDE 都很方便
: (这就是 Java 罗唆的好处)
: 要 coding style 整齐还是要能少打几个(根本不用自己打)字
: 如果一定得用,我还宁愿用 Lombok 这种招数
: http://projectlombok.org/features/GetterSetter.html
: (其实只是想婊 .net [喂喂])
: ========
: 最後以版主身份奉劝诸位版友... 好吧,其实主要是针对 L 先生所言
: 要人身攻击自己,说自己白痴说自己无能
: 这不会有太大问题,基本上我天天都在作这种事
: 但是如果把「白痴」之类的字眼写出来
: 而指称的对象又看不出来是在指自己
: 就麻烦三思而後下笔
版工, 国外10 年前就吵得很热了, 怎麽现在来战?
支持者的说法不外:
1. 这两个方法可以方便增加额外功能(比如验证)。
2. 内部存储和外部表现不同。
3. 可以保持外部接口不变的情况下,修改内部存储方式和逻辑。
4. 任意管理变量的生命周期和内存存储方式。
5. 提供一个debug接口。
6. 能够和模拟对象、序列化乃至WPF库等融合。
7. 允许继承者改变语义。
8. 可以将getter、setter用於lambda表达式。(大概即作为一个函数,参与函数传递和运算)
9. getter和setter可以有不同的访问级别。
但看上面的说法: 咦, 你的物件有以上的需要呼?
在伟大的JAVA案子中, 9 成以上, 不就是BEAN? 这不就是"简单" 的取值设值而已.
这要不要算是过度使用呢?
引一篇
http://www.importnew.com/9716.html
有兴趣的人可以去看看.
致於谁要信服什麽, 倒不必了, 这宗教式的OOP,
因为还有人, PERL, PHP, 甚致C++ 都要getter/setter一下的.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.243.108.52
1F:推 popcorny:所以你跟P大的论点没冲突啊..Java应该针对大部份的需求 03/12 09:19
2F:推 popcorny:提出syntax sugar,其实我也觉得写setter/getter有点丑 03/12 09:21
3F:→ danny8376:好烦啊 还是Ruby的getter/setter长最好(来乱的XD 03/12 12:15
4F:→ s3748679:C# getter, setter也可以有不同的访问级别不是吗 03/29 02:26