C# 语言类设计时属性和方法有建议遵循的一些原则

最小暴露原则

如无必要,不要向外暴露过多的方法和属性。隐藏内部实现是编程的一个重要原则,良好的设计应该隐藏实现的细节,仅把真正有用的 API 清晰地提供给使用者。这不是为了保密,而是消除各个类之间的耦合度,提高代码的可维护性和健壮性。

单一职责原则

方法和属性应该遵循单一职责原则,即一个属性和方法的代码也许会比较长、逻辑也可以复杂(当然,最好还是简洁为妙),但实现的功能必须是简单、明确的、单一的。

最大自由原则

属性和方法的调用应该可以任意顺序设置。也就是说,先设置属性一、再设置属性二应该和先设置属性二、再设置属性一效果是一样的,如果不一样,那就表明必须按照某一特定顺序设置属性,这种设计不推荐,表明属性耦合很高,而且对使用者来说增加了复杂度。

这个概念也包括读取属性值。即属性能够以任意顺序读取,任意顺序也包括同时性,也就是说属性的读取不能是互斥的。比如,在多线程环境下,能够被同时被读取,如果读取的顺序影响读取的结果,那表明设计存在问题。

对于方法来说,也应该尽量遵循这个原则,减少必须先调用方法一才能调用方法二的情况。另外,最大自由原则这个词是我自己琢磨的,如果你觉得不贴切,理解意思就好。

正确区分属性和方法

在底层实现上,C# 的属性其实就是方法。但在开发过程中,还是要注意区别两者,在以下几种情况下,建议用方法替代属性。

  • 资源耗费比较多,实现逻辑比较复杂
  • 有较强的副作用,即除了直接关联的字段,还会修改对象的其它状态数据
  • 相同状态下返回结果可能不一样,比如 NewGuid ,这种情况下用属性会非常困惑。
  • 类型转换,比如 ToString()



发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章