美文网首页
为什么我不建议在C#中用下划线_开头来表示私有字段

为什么我不建议在C#中用下划线_开头来表示私有字段

作者: 融合xx | 来源:发表于2020-02-27 23:18 被阅读0次

我在C#官方文档的使用属性里看到这种代码:

public class Date
{
    private int _month = 7;  // Backing store

    public int Month
    {
        get => _month;
        set
        {
            if ((value > 0) && (value < 13))
            {
                _month = value;
            }
        }
    }
}

这段代码里的_month是以下划线开头的,用来表示private。这样做会有什么问题呢?

  • 项目混合使用了驼峰命名法与下划线命名法,扰乱了阅读代码的视线
  • 不像其他语言(比如JavaScript),C#本身已经提供了private修饰符,不需要再用下划线_重复表示private
  • 下划线_已经用来表示弃元的功能了,是不是会造成混淆呢?

实际上我简单地使用驼峰命名法,不用下划线_开头,也不会有什么问题。代码如下:

public class Date
{
    private int month = 7;  // Backing store

    public int Month
    {
        get => month;
        set
        {
            if ((value > 0) && (value < 13))
            {
                month = value;
            }
        }
    }
}

这样看起来更简洁,更容易理解了。下面同样来自官方文档的自动实现的属性里的代码就很不错:

// This class is mutable. Its data can be modified from
// outside the class.
class Customer
{
    // Auto-implemented properties for trivial get and set
    public double TotalPurchases { get; set; }
    public string Name { get; set; }
    public int CustomerID { get; set; }

    // Constructor
    public Customer(double purchases, string name, int ID)
    {
        TotalPurchases = purchases;
        Name = name;
        CustomerID = ID;
    }

    // Methods
    public string GetContactInfo() { return "ContactInfo"; }
    public string GetTransactionHistory() { return "History"; }

    // .. Additional methods, events, etc.
}

class Program
{
    static void Main()
    {
        // Intialize a new object.
        Customer cust1 = new Customer(4987.63, "Northwind", 90108);

        // Modify a property.
        cust1.TotalPurchases += 499.99;
    }
}

事实上,只使用驼峰命名法,不要暴露字段而是使用属性与get/set访问器,或者是单纯地起个更好的变量名,你总是可以找到办法来避免用下划线_开头。

当然啦,如果你的项目早就已经采用了微软推荐的代码风格,那就要和项目保持一致。

相关文章

  • 为什么我不建议在C#中用下划线_开头来表示私有字段

    我在C#官方文档的使用属性里看到这种代码: 这段代码里的_month是以下划线开头的,用来表示private。这样...

  • {C#}private字段的命名风格

    问题 C#命名风格中,private字段开头按有无下划线可分为2派,其中大咖以偏爱下划线居多 结论 下划线优势:自...

  • day-16类和对象

    私有化 python的私有化 python中在属性前面加两个下划线,就可以将属性或者方法私有化(只能两个下划线开头...

  • flutter笔记

    变量以下划线(_)开头,在Dart语言中使用下划线前缀标识符,会强制其变成私有的。Dart中私有变量应该以fina...

  • 2020-02-19python高手之路学习随笔(3)

    第三章 管理API变化 在python中用下划线作私有API的前缀,比如_foo就是私有API, foo这种则是公...

  • 数据库常用字段

    电话号码:数据库中用字段varchar表示,在实体类中用string

  • Python学习笔记十四

    访问限制总结: 1.几个总结 开头有双下划线:私有变量(外部不可访问) 开头和结尾都有双下划线 :特殊变量(外部可...

  • 40.私有变量、方法实现类的封装

    私有变量 私有变量或者私有属性,一般以 双下划线开头 的变量可以在class内部通过方法调用,但是不能被实例化的对...

  • Python100天学习笔记

    1.@property装饰器建议将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,可...

  • python _、__和__xx__的区别

    _xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提...

网友评论

      本文标题:为什么我不建议在C#中用下划线_开头来表示私有字段

      本文链接:https://www.haomeiwen.com/subject/elqivctx.html