本地变暗与分配给函数名的性能影响(VB.NET)

本地变暗与分配给函数名的性能影响(VB.NET),vb.net,Vb.net,无法显示实际代码,因为是专有软件,但本质上是这样的 Public FunctionA(ByVal paramOne As Int32) As Int32 FunctionA = SomeCalculation() If FunctionA < paramOne Then Return FunctionA Return 0 End Function Public function(ByVal paramOne作为Int32)作为Int32 FunctionA=Som

无法显示实际代码,因为是专有软件,但本质上是这样的

Public FunctionA(ByVal paramOne As Int32) As Int32
    FunctionA = SomeCalculation()
    If FunctionA < paramOne Then Return FunctionA
    Return 0
End Function
Public function(ByVal paramOne作为Int32)作为Int32
FunctionA=SomeCalculation()
如果function

Public FunctionA(ByVal paramOne As Int32) As Int32
    Dim temp As Int32 = SomeCalculation()
    If temp < paramOne Then Return temp
    Return 0 
End Function
Public function(ByVal paramOne作为Int32)作为Int32
尺寸温度为Int32=SomeCalculation()
如果温度<参数,则返回温度
返回0
端函数

这是一个非常简单的示例,但我想知道VB.NET在幕后会做什么,因此通常认为哪一个是更好的编码实践

你问错了问题。第一个代码段根本不应该被使用。使用隐式命名变量的关键在于,默认情况下会返回该变量。“正确”的使用方法如下:

Public function(ByVal paramOne作为Int32)作为Int32
FunctionA=SomeCalculation()
如果function>=paramOne,则返回0
端函数
如您所见,如果没有显式返回任何内容,则隐式返回该变量的值

这里的问题不是引擎盖下发生了什么。就在你眼前发生的事。VB不要求在调用方法时使用括号,因此,如果一个方法没有参数,只需使用其名称即可调用它。这意味着,在方法内部,使用隐式命名的局部变量看起来与在其他任何地方调用该方法完全一样。这是不一致的,而且容易出错,因此它是不好的


让你的代码可读应该是你首先关心的问题,你只应该牺牲可读性来换取其他领域的真正收益。使用隐式命名的变量没有好处,所以不要使用它。声明所有变量并始终使用显式的
Return
语句。

您问错了问题。第一个代码段根本不应该被使用。使用隐式命名变量的关键在于,默认情况下会返回该变量。“正确”的使用方法如下:

Public function(ByVal paramOne作为Int32)作为Int32
FunctionA=SomeCalculation()
如果function>=paramOne,则返回0
端函数
如您所见,如果没有显式返回任何内容,则隐式返回该变量的值

这里的问题不是引擎盖下发生了什么。就在你眼前发生的事。VB不要求在调用方法时使用括号,因此,如果一个方法没有参数,只需使用其名称即可调用它。这意味着,在方法内部,使用隐式命名的局部变量看起来与在其他任何地方调用该方法完全一样。这是不一致的,而且容易出错,因此它是不好的


让你的代码可读应该是你首先关心的问题,你只应该牺牲可读性来换取其他领域的真正收益。使用隐式命名的变量没有好处,所以不要使用它。声明所有变量并始终使用显式
Return
语句。

您好!你看到这个话题了吗?就我个人而言,我从来都不喜欢VB中的语法读取方式(使用函数名设置返回值)。似乎语法主要是为了方便移植VB6代码,而不是为了一般用途。在函数名中返回值的语法至少可以追溯到qbasic。第一个块是我将立即重构的。它混合使用
Return
返回值,并设置隐式结果变量;我希望有一个或另一个(始终如一),但不是两个都有。就性能而言,在大多数情况下,我希望优化的构建能够编译成相同的机器指令,即使没有,通常对性能的影响也可以忽略不计。一般来说,在有分析数据表明这是一个真正的问题之前,您不应该担心这种粒度下的性能。即使是高技能的人通常也很难根据低水平的构造来猜测性能(参见Eric Lippert最近的一些博客,他是C#方面的专家,从事编译器的工作,但他对性能的猜测仍然经常是错误的——这也很有启发性,因为巨大的收益都是由算法和数据结构的变化推动的,而这通常是获得巨大性能胜利的地方).您好!您看到这个主题了吗?就我个人而言,我从来都不喜欢VB中的语法读取方式(使用函数名设置返回值)似乎语法主要是为了方便移植VB6代码,而不是为了一般用途。函数名中返回值的语法至少可以追溯到qbasic。第一个块是我将立即重构的。它混合了使用
Return
返回值和设置隐式结果变量;我将expect一个或另一个(一致)但不是两者都有。就性能而言,在大多数情况下,我希望优化后的构建能够编译到相同的机器指令,即使没有,通常对性能的影响也可以忽略不计。一般来说,在有分析数据表明这一点之前,您不应该担心这种粒度下的性能这是一个真正的问题。即使是高技能的人通常也很难根据低水平的构造来猜测性能(参见Eric Lippert最近的一些博客,他是C#方面的专家,从事编译器的工作,但他对性能的猜测仍然经常是错误的——这也很有启发性,因为巨大的收益都是由算法和数据结构的变化推动的,而这通常是获得巨大性能胜利的地方)。看起来像是字段而不是函数。看起来像是字段而不是函数。