使用if语句的两个子句声明boolean vs时分配默认值?

时间:2012-03-08 19:14:18

标签: vb.net coding-style

以下哪项更易读,更可取?

这是在声明中指定默认值的地方:

    Dim isLastWeekOfPeriod As Boolean = False
    If periodInfo.WeekCount = weekInfo.Week Then
        isLastWeekOfPeriod = True
    End If

或者,这个值在else子句中设置:

    Dim isLastWeekOfPeriod As Boolean
    If periodInfo.WeekCount = weekInfo.Week Then
        isLastWeekOfPeriod = True
    Else
        isLastWeekOfPeriod = False
    End If

1 个答案:

答案 0 :(得分:5)

都不是。

直接在初始化中写下作业,不要在这里使用If

Dim isLastWeekOfPeriod As Boolean = (periodInfo.WeekCount = weekInfo.Week)

括号不是必需的,但使得赋值与比较更具可读性。顺便说一下,使用Option Infer On你也可以安全地删除类型名称,从初始化表达式和变量名前缀is可以看出这一点:

Dim isLastWeekOfPeriod = (periodInfo.WeekCount = weekInfo.Week)

记住:短暂是好的(只要它不会对可读性产生负面影响)。

原理

您的第一个代码是可以接受的,但它与我上面的代码大致相同,并且代码行数增加了四倍,没有任何任何好处。

第二个代码初始化两次:一次在声明中,因为每个变量都在VB中默认初始化(因此isLastWeekOfPeriod取值False第一行)。并且在那之后的条件块中。哦,最后这段代码是我的五倍。

此外,写If a Then result = True Else result = False 总是做多余的工作。没有理由不直接写result = a