相关疑难解决方法(0)

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

我相信,预处理器指令的使用就像#if UsingNetwork是糟糕的OO实践 - 其他同事则没有.我认为,当使用IoC容器(例如Spring)时,如果相应编程,可以轻松配置组件.在此上下文中任一个属性格式IsUsingNetwork可由IoC容器或设置,如果"使用网络"实现的行为不同,该接口的另一种实现方式应当实现,并注射(例如:IService,ServiceImplementation,NetworkingServiceImplementation).

有人可以提供OO-Gurus的引用书籍中的参考资料,基本上是"如果你尝试配置应该通过IoC容器配置的行为,那么预处理器使用是不好的OO实践"?

我需要这种引用来说服同事重构......

编辑:我确实知道并同意在编译期间使用预处理程序指令更改目标平台特定代码很好,这就是预处理程序指令的用途.但是,我认为应该使用运行时配置而不是compiletime-configuration来获得良好的设计和可测试的类和组件.换句话说:使用#defines和#if超出它们的意图将导致难以测试代码和设计糟糕的类.

有没有人沿着这些方面阅读一些东西并且可以给我这样我可以参考?

c# oop dos-donts c-preprocessor

17
推荐指数
4
解决办法
4378
查看次数

为什么MyClass.class存在于java和MyField.field中不存在?

比方说我有:

class A {
    Integer b;
    void c() {}
}
Run Code Online (Sandbox Code Playgroud)

为什么Java有这样的语法:A.class,并且没有这样的语法:b.field,c.method

对于文字文字有什么用处吗?

java syntax

2
推荐指数
1
解决办法
212
查看次数

标签 统计

c# ×1

c-preprocessor ×1

dos-donts ×1

java ×1

oop ×1

syntax ×1