在下面的示例中,如果参数用于初始化属性 FromDate,您会如何命名该参数?
对于类构造函数方法,我喜欢让构造函数参数变量的名称与正在初始化的属性的名称相匹配。例如,参数“fromDate”用于初始化模块级变量“_FromDate”,语句为_FromDate = fromDate。同样,我也可以写成 Me.FromDate = fromDate。
C# 区分大小写的支持者可能会说,为参数变量名称使用前导小写字母(我认为这是 MS 惯例)是一种可以接受的方法,以将其与具有相同名称但大小写不同的属性区分开来。
但是,VB 不区分大小写,这一点我通常很欣赏。在下面的示例中,我使用了与属性名称“fromDate”匹配的参数名称,并且当存在歧义时 VB 引用本地实例。但是,许多人可能会争辩说这种“歧义”为开发人员带来了机会弄糊涂了,没有意识到正在使用哪个变量。例如,我下面的意图是传入两个参数,“fromDate”和“toDate”,但我不小心省略了一个,结果 VB.NET 没有发出警告我的错误是因为它假定语句 _ToDate = ToDate 等同于 _ToDate = Me.ToDate 而不是通知我赋值语句右侧的变量未声明。
Public Class Period
Property FromDate As Date
Property ToDate As Date
Public Sub New(ByVal fromDate As Date)
If fromDate > ToDate Then
Throw New ArgumentException("fromDate must be less than or equal to toDate")
End If
_FromDate = fromDate
_ToDate = ToDate
End Sub
End Class
那么 VB.NET 的最佳解决方案是什么?
根据我的判断,我们应该有一个约定,为所有参数变量加上前缀,但微软不鼓励使用前缀吗?例如:
Public Sub New(ByVal paramFromDate As Date, paramToDate As Date)
..或者可以缩短为 pFromDate、pToDate...
无论采用何种方法,我认为它应该是在整个应用程序中使用的一致方法。
你是做什么的?
最佳答案
尽可能使用最清晰的代码,我建议不是前缀。我认为使用相同的名称(首字母小写)是最清晰的代码。为避免遇到问题,我会依赖编译器警告、FxCop 或 ReSharper 等工具来提醒我我正在为其自身分配某些内容,因为这几乎肯定在所有情况下都是错误的。
关于vb.net - 为了避免参数和属性之间的混淆,.NET 中变量命名的约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990518/