如无必要,不要向外暴露过多的方法和属性。隐藏内部实现是编程的一个重要原则,良好的设计应该隐藏实现的细节,仅把真正有用的 API 清晰地提供给使用者。这不是为了保密,而是消除各个类之间的耦合度,提高代码的可维护性和健壮性。
方法和属性应该遵循单一职责原则,即一个属性和方法的代码也许会比较长、逻辑也可以复杂(当然,最好还是简洁为妙),但实现的功能必须是简单、明确的、单一的。
属性和方法的调用应该可以任意顺序设置。也就是说,先设置属性一、再设置属性二应该和先设置属性二、再设置属性一效果是一样的,如果不一样,那就表明必须按照某一特定顺序设置属性,这种设计不推荐,表明属性耦合很高,而且对使用者来说增加了复杂度。
这个概念也包括读取属性值。即属性能够以任意顺序读取,任意顺序也包括同时性,也就是说属性的读取不能是互斥的。比如,在多线程环境下,能够被同时被读取,如果读取的顺序影响读取的结果,那表明设计存在问题。
对于方法来说,也应该尽量遵循这个原则,减少必须先调用方法一才能调用方法二的情况。另外,最大自由原则这个词是我自己琢磨的,如果你觉得不贴切,理解意思就好。
在底层实现上,C# 的属性其实就是方法。但在开发过程中,还是要注意区别两者,在以下几种情况下,建议用方法替代属性。
| 留言与评论(共有 0 条评论) “” |