这是个小问题,但是每次我必须编写类似这样的代码时,重复都会困扰我,但是我不确定任何解决方案都不会更糟。
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- 这种逻辑有名称吗?
- 我也有点强迫症吗?
如果出于好奇,我愿意接受邪恶的代码建议...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
。确保您具有DoSomething()的数据的实质内容是较低的抽象级别,因此应使用其他函数。该函数将在较高的抽象级别中具有名称,而其实现将是低级别的。下面的好答案解决了这个问题。
DefaultAction
电话违反了DRY原则