把条件置于方法内外

时间:2015-08-12 11:33:59

标签: c# conditional-statements

我必须在两种完全相同的设计之间做出选择 从维护工作的角度来看哪一个更好? SRP违规?

设计#1

.btn[disabled]{
  opacity: .65;  //Comment this
}

设计#2

if(ConditionVerified())
{
    Process();
}

public void Process()
{     
    // Do a lot of work ...
}

2 个答案:

答案 0 :(得分:0)

如果可以从代码中的多个位置启动process,并且condition始终遵循相同的要求,则选项#2可能是可行的设计。在所有其他情况下,额外的跳是无用的,我会坚持#1。

答案 1 :(得分:0)

由于您的方法没有错误/成功条件的返回类型,我建议您使用Design#1。

但是,如果您正在做大量工作,则应考虑故障或执行前条件如何影响操作。在这种情况下,您应该使用设计#2。

我个人默认为#2,因为我喜欢保留所有相关的逻辑,但是有充分的理由不去#2:

  • 除了执行验证之外,您不需要其他任何变量
  • 您在其他地方使用该方法并且不需要条件逻辑