休息的时候趴在同事旁边, 看他写代码.
为了对某些方法注入相同的处理逻辑, 他选择在方法上增加Attribute的方式,
但是对于一些Web Service代理类的方法, 则是采用另外一种方式:将方法名放到配置文件中。
两者皆是通过某第三方框架完成实际的注入.
他的考虑是代理类是工具自动生成的, 依赖于外部变化, 所以没有采用在代理类中为方法加上Attribute的做法.
这点很对. 但是当外部变化发生时, 手工维护那么多配置项会是件低效易错的事.
于是我们讨论了改进的方法:
1) 利用Visual Studio的自动从类中提取接口的功能, 为代理类生成对应的接口.
2) 原本使用代理类的地方替换为接口.
3) 在接口中需要注入处理的方法上增加Attribute.
这个方法的思想没有特殊之处, "语言的强类型特征+强大的编译器+现代的集成开发工具", 减少人为犯错的机率, 尽量在编译期而不是运行期就能发现大多数问题.
另外一个好处, 当代理类重新被生成时, 编译器可以帮助发现一些兼容问题, 特别是在某个方法没有在所属组件中直接使用, 并且原先不是通过组件引用的方式被其他组件使用的情况下.
2011年07月06日 22:11 |