作者回复: 多谢分享
作者回复: 正解
作者回复: 那种痛,经历过才懂。
作者回复: 你说得对,贫血模型本来就不是一个好的设计,只算把数据放到一起,谈不上封装。
作者回复: 用了 setter,习惯 setter,setter 才是去不掉的。 程序库中优秀的地方也许就是潜在的语言特性,这在《软件设计之美》讲程序库的时候提到过:程序库设计就是语言设计,语言设计就是程序库设计。
作者回复: 针对代码生成工具,如果它生成的是一个算法,比如编译器生成器,我可以去用,因为我只要关注接口,不需要关注细节。如果生成的是模型,我倾向于不用它,因为我要关注其中的细节。如果封装它,可能就失去了代码生成的意义。 我常常说到软件设计的品位,生成大量 setter 代码的工具,本身就是设计品位不佳的体现。基于一个品位不佳的工具谈改进,这可能不是我关注的方向。
作者回复: 这个 reviewStatus 就是可以保存不同的状态啊,使用 setter 的话,就等于你把实现细节暴露给其他人了,人家想怎么用就怎么用,而封装了之后,别人必须把自己的意图告诉你,比如这里,他必须说,我要审核通过。
作者回复: 其实,C 语言也是可以把代码写得很好的,我在《软件设计之美》中用过一个 Linux 文件系统的例子。只不过,花的精力比较多,很多人不愿意这么做而已。
作者回复: 难道数据不存回去,只在内存里吗?那就得考虑事务性内存了。😄
作者回复: 所有权机制,目的不是这个吧?