C#代码整洁之道:代码重构与性能提升
上QQ阅读APP看书,第一时间看更新

3.3 一个类应当只具备一种职责

类的职责就是类所具备的功能。在SOLID原则中,S代表单一职责原则(Single Respon-sibility Principle,SRP)。若对类应用单一职责原则,那么一个类应当仅仅处理需要实现特性的一个方面,并将该方面的职责完全封装在这个类中。因此请避免将多个职责放在同一个类中。

请看以下范例:

从上述范例代码中可见,MultipleResponsibilities类中的DecryptStringEncryptString方法实现了加解密的功能。此外,ReadTextFromFileSaveText-ToFile方法实现了文件访问功能。因此上述类破坏了单一职责原则。

上述类应当划分为两个类,其中一个类进行加解密操作而另外一个则执行文件访问功能:

上述代码将EncryptStringDecryptString方法移动到了核心安全命名空间中的Cryptography类中。这样不同的产品和技术组都可以复用其中的代码对字符串进行加密和解密操作。Cryptography类是符合单一职责原则的。

以下代码中,Cryptography类中的SecurityAlgorithm参数是枚举类型。我们将其放在了独立的文件中,使代码保持整洁、短小且组织良好:

以下TextFile类位于核心的文件系统命名空间(这个位置是比较合适的),遵守了SRP原则,具有良好的重用性。其代码可以跨越不同产品和技术组进行复用。

现在我们已经了解了类的组织形式及其职责。接下来将介绍如何对类进行注释,以方便其他开发者。