这本书"清洁代码"罗伯特C.马丁说一种方法应该做一件事。现在举个例子,我有两个方法initialize()和play()。
应该在调用play()之前调用在我的代码中,initialize()。
play()方法将被调用数百次。我可以看到三种方法:
方法-1:
在play()之前调用initialize(),这可能会重复数百次。
initialize();
play();
...
initialize();
play();
...
方法-2:
将initialize()放在play()方法中。但这会违背"做一件事"方法
void play() {
initialize();
...
}
方法-3:
我应该编写另一个名为initializeAndPlay()的方法。
void initializeAndPlay() {
initialize();
play();
}
还有其他更好更清洁的方法吗?
答案 0 :(得分:4)
如果在初始化后播放通常,我会选择第三个,因为它是最清晰的。
如果没有初始化就无法进行游戏,请选择第二个。
另一方面,我会考虑提供方法的类的设计。在大多数情况下,初始化是在构造函数中完成的。
答案 1 :(得分:0)
我认为这很大程度上取决于你初始化方法的作用。如果它初始化当前对象,我会选择2号选项并保护它:
void play() {
if (!initialized) {
initialize();
}
...
}
如果初始化整个系统/ UI,我会选择3号选项。