vb.net - 声明 bool 值时分配默认值与使用 if 语句的两个子句?

标签 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

最佳答案

都不是。

初始化时直接写赋值,不要用If完全在这里:

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

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

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

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

基本原理

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

第二个代码进行初始化两次:一次在声明中,因为每个变量在 VB 中都隐式默认初始化(因此 isLastWeekOfPeriod 在第一行中采用值 False) 。之后一旦进入条件 block 。哦,最后这个代码是我的五倍长。

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

关于vb.net - 声明 bool 值时分配默认值与使用 if 语句的两个子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623443/

相关文章:

vb.net 如何将带空格的字符串传递到命令行

android - 按下 GridView 中的按钮时如何更改黄色方形背景?

c - 这些编码风格的名称是什么?

c++ - 以下是C++单例实现吗?

java - 如何创建一个在用户登录后启动的桌面应用程序?

VB.NET 如何让 1 个子应用到多个项目?

.net - 在 .NET Framework 中引发自定义事件的不同方法

coding-style - C/PHP/Java 等中不同的支撑/缩进样式的名称是什么?

bash - 解析 BASH 脚本中的 heredoc 注释

vb.net - 在 Visual Basic.NET 中禁用字母和特殊字符