Tag: dos donts

需要引用:预处理器使用是不好的OO练习

我相信,像#if UsingNetwork这样的预处理器指令的使用是不好的OO实践 – 其他同事则不然。 我认为,当使用IoC容器(例如Spring)时,如果相应编程,可以轻松配置组件。 在这种情况下,可以通过IoC容器设置有效的IsUsingNetwork ,或者如果“使用网络”实现的行为不同,则应该实现并注入该接口的另一个实现(例如: IService , ServiceImplementation , NetworkingServiceImplementation )。 有人可以提供OO-Gurus的 引用或书籍中的参考资料 ,基本上读取“如果你尝试配置应该通过IoC容器配置的行为,预处理器使用是不好的OO实践”? 我需要这种引用来说服同事重构…… 编辑:我确实知道并同意在编译期间使用预处理程序指令更改目标平台特定代码很好,这就是预处理程序指令的用途。 但是,我认为应该使用运行时配置而不是compiletime-configuration来获得良好的设计和可测试的类和组件。 换句话说:使用#defines和#if超出它们的意图将导致难以测试代码和设计糟糕的类。 有没有人沿着这些方向阅读并能给我这样的话我可以参考?