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

3.2 组织类

显而易见,组织良好的类是整洁的项目的标志。归属相同的类将被聚合在相应的目录中。此外,文件夹中的类将包含在与文件夹结构匹配的命名空间中。

每一个接口、类、结构体和枚举均应当拥有其自身的源文件,并放置在合理的命名空间内。源文件应当按照逻辑归类存放在合适的文件夹中,且源文件所在的命名空间应当和程序集的名称与文件夹的结构匹配。图3-1展示了一个整洁的文件夹与文件结构。

图3-1

 在同一个源代码文件中定义多个接口、类、结构体或枚举并不是一个好主意。虽然有智能提示(IntelliSense)的帮助,但这样做也会增大定位项目的难度。

在考虑命名空间时,最好遵循Pascal命名方法并按照公司名称、产品名称、技术名称、分隔到各个命名空间中的组件的复数名称的顺序进行命名。请参考如下示例:

以公司名称作为起始命名空间可以避免命名空间类的冲突。例如,若Microsoft和Fake-Company都定义了名为System的命名空间,那么我们可以使用公司名称来区分具体用到的System命名空间。

当出现可以在多个项目中重用的代码时,最好将其放在可以被多个工程访问的独立的程序集中:

如需对代码进行测试,例如进行测试驱动开发(Test-Driven Development,TDD),最好将测试类定义在独立的程序集中,测试程序集的名称应当和待测程序集的名称相同,并在程序集名称的最后附加Tests命名空间。

不要将不同程序集的测试放在同一个程序集中,请将其放在独立的程序集中。

此外,命名空间与类型应当避免使用相同的名称以避免出现编译冲突。命名空间名称可以采用复数形式,但公司名称、产品名称和缩写词汇无须使用复数形式。

综上所述,在组织类时请遵循如下准则:

  • 请遵循Pascal命名方法并按照公司名称、产品名称、技术名称以及分隔到各个命名空间中的组件的复数名称的顺序进行命名。
  • 将可复用的代码放在独立的程序集中。
  • 命名空间和类型应避免使用相同的名称。
  • 公司名称、产品名称和缩写词汇无须使用复数形式。

接下来我们将介绍类的职责。