我有命名约定问题还是代码问题

本文关键字:问题 代码 命名约定 | 更新日期: 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将给出名称。

您有一个命名约定问题-列名的常量字符串的命名应与它们所代表的实际属性不同。