将变量设置为私有有一个理由:我们不想其他人以来这些变量。我们还在想心血来潮时能自由修改其类型或实现。那么,为什么还是有那么多程序员给对象自动添加复制器和取值器,将自由变量公之于众、如同他们根本就是公共变量一般呢?
1.数据、对象的反对称性
过程式代码便于在不改动既有数据结果的前提下添加新函数,面向对象代码便于在不改动既有函数的前提下添加新类。
2.德墨忒耳律
只跟朋友谈话,不与陌生人谈话。比如如下代码违反了得墨忒耳律
final String outputDir = ctx.getOptions().getSratchDir().getAboulutePath();