我有命名约定问题还是代码问题
本文关键字:问题 代码 命名约定 | 更新日期: 2023-09-27 18:28:27
我一直用CN_作为常量的前缀,如下所示,但我现在正在按照公认的标准进行编码,我发现这些标准在这个网站上有链接。标准规定我应该去掉CN_作为常数。因此,在下面的例子中,如果我将CN_NetPrice更改为NetPrice,我将与同名的方法属性发生冲突。显然我做不到,所以我还有一个问题。我有命名约定问题吗?或者我的代码总体上有问题吗?
public class TicketInformation
{
private const string CN_StartDate = "StartDate";
private const string CN_EndDate = "EndDate";
private const string CN_NetPrice = "NetPrice";
private const string CN_NetTotalPrice = "NetTotalPrice";
private const string CN_Tickets = "Tickets";
public decimal NetPrice { get; set; }
public decimal NetTotalPrice { get; set; }
public decimal Tickets { get; set; }
public static TicketInformation Create(DateTime startDate, DateTime endDate)
{
try
{
TicketInformation ti = new TicketInformation();
using (DataTable dt = DAC.ExecuteDataTable(
"GetAllTicketInformationSelect",
DAC.Parameter(CN_StartDate, startDate),
DAC.Parameter(CN_EndDate, endDate)))
{
ti.NetTotalPrice = Convert.ToDecimal(dt.Rows[0][CN_NetTotalPrice]);
ti.NetPrice = Convert.ToDecimal(dt.Rows[0][CN_NetPrice]);
ti.Tickets = Convert.ToDecimal(dt.Rows[0][CN_Tickets]);
}
return ti;
}
catch (Exception ex)
{
throw new Exception(Convert.ToString(ex));
}
}
}
}
我认为这里的问题只是名称的选择。以使用以下删除CN_
的建议更改为例
private const string StartDate = "StartDate";
我对任何提交这篇文章的人的反馈都是你的名声不好。这不是开始日期。相反,它是我们在显示信息时识别或标记开始日期的方式。我建议使用StartDateName
private const string StartDateName = "StartDate";
如果你把这个逻辑应用于所有的常数,问题就会消失。
您的常数实际上并不代表净价,是吗?它表示净价列的名称。所以我建议:
private const string StartDateColumn = "StartDate";
private const string EndDateColumn = "EndDate";
private const string NetPriceColumn = "NetPrice";
private const string NetTotalPriceColumn = "NetTotalPrice";
private const string TicketsColumn = "Tickets";
或者:
private static class Columns
{
internal const string StartDate = "StartDate";
internal const string EndDate = "EndDate";
internal const string NetPrice = "NetPrice";
internal const string NetTotalPrice = "NetTotalPrice";
internal const string Tickets = "Tickets";
}
或者使用枚举:
private enum Column
{
StartDate, EndDate, NetPrice, NetTotalPrice, Tickets;
}
对其中一个枚举值调用ToString
将给出名称。
您有一个命名约定问题-列名的常量字符串的命名应与它们所代表的实际属性不同。