因为篇幅很短, 所以尝试全文字写法. 几分钟看完的文字也没必要用十几分钟写完是吧.
- C# 中的 partial 关键字, 是一个非常有用的东西, 尤其是在代码组织方面.
- 1.
每一个项目都会构建大量的 class 文件, 也需要使用这些 class 创建非常多的对象. 但是出于业务安全性和调试方便, 在创建对象前需要对对象的参数进行有效性检测 (例如断言), 而对象的创建, 是一个非常复杂的事情, 有时需要一组函数才能完成. 这两者(class 本身的代码和创建对象的代码) 的代码混在一起, 搞得单个 class 文件非常臃肿.
partial 可以把类逻辑(new 我还是放在这里面的), 和对象创建代码彻底分开. 对我来说这是一个很有用的功能. 一般构建一组 class(通常是一个父类和一堆子类), 我会分成若干文件, Parent,Child1,Child2...... 等, 再使用一个专门的 XXXHelper 文件来编写各种 Child 的对象生成代码. Helper 中可能是 instance,create 等写法, 也可能是各种工厂, 再加上一些有效性检测和异常处理. 这样代码非常清晰, 尤其是 Child 的代码可以写的很干净.
2.
partial 还有一类非常有意思的写法. 很多项目都喜欢编写全局工具或数据类, 名叫 Global 或者 Config 等, 里面有很多数据和函数. 根据经验判断, 真正全局所有模块使用的东西不会很多. 很多东西都只是在部分模块中使用. 时间久的话, 你根本分不清楚这些函数或数据是对应哪个模块下面的, 这时候 partial 的分散写法就有很大优势了. 你可以写一些分散文件, 集成到各个模块的文件夹下面, 当然各个模块通用的还是放到一个文件里面好, partial 可以保证你依然能通过同一个全局名字访问他.
由于 partial 关键字, 代码都在同一个类名字下面, 你可以在不同的文件中自由移动这些代码.
3.
partial 对自动化支持非常有用, 你可以把代码分成两部分, 一部分是业务代码, 一部分是自动化生成代码(例如很多领域的 UI 编辑器就是这么干的, C++ 的做法也是类似, 只是没 partial 用的别的方法, 思路都是一样). 因为在不同文件中, 自动化生成代码不会干扰业务代码. 自动化生成对于提高开发效率至关重要.
来源: http://www.bubuko.com/infodetail-2695400.html