Nic*_*rey 23
我会咬人的.除了涉足OO设计深水的浅层边缘之外,我还要做一些我的经验法则:
静态属性非常值得怀疑.强烈质疑他们是否真的需要他们.
类的大多数属性/属性应该是私有的(只能由对象实例访问)或受保护,只能由类或派生类(子类)的实例访问.
如果一个类的属性/属性对公众可见,则它很可能是只读的.在大多数情况下,对象实例的状态应该仅通过响应一个方法来改变,要求它做一些有用的事情(例如,你请求一个窗口移动自己,而不是显式设置是坐标平面上的原点).
公共Getter/Setter方法或属性是有问题的,因为它们主要暴露对象状态(参见上面的第2项).
公共方法应主要公开对象实例响应的逻辑操作(消息).这些操作应该是原子的(例如,对于处于逻辑上一致的内部状态的对象,它不应该依赖于向其发送特定消息序列的外部参与者).对象状态应该更改是响应这些消息的结果,并且应该作为消息的副作用公开(例如,报告其位置作为要求移动的副作用的窗口是可接受的).
上面应该大大减少对象的公共接口.
最后,如果你的对象有多个它响应的消息,你可能有一个重构的候选者:它真的是一个整体对象,还是一个离散对象的集合?当然,"不止一些"是一个非常主观(和上下文)的数字 - 我会把10-12作为一个合理的限制.
希望这可以帮助.
在OO设计,分析和建模方面有很多书籍.
正如其他人所说的那样,当一个班级试图做不止一件事而违反单一责任原则时,它就太大了.
关于这个主题和其他主题(以及我强烈建议任何开发人员使用的一本)的优秀书籍是Bob Martin的Clean Code.
这取决于您是否可以将类拆分为子类。
编辑:我的意思是你应该问自己“这个方法适用于这个类还是属于一个子类?”
例如,
动物类 - 狗吠()Dog_bark() 可以移至名为 Dog 的类,并将该方法重命名为 bark()
| 归档时间: |
|
| 查看次数: |
15570 次 |
| 最近记录: |