zoukankan      html  css  js  c++  java
  • 【转】编写高质量代码改善C#程序的157个建议——建议134:有条件地使用前缀

    建议134:有条件地使用前缀

     在.NET的设计规范中,不建议使用前缀。但是,即便是微软自己依然广泛的使用这前缀。

    最典型的前缀是m_,这种命名一方面是考虑到历史沿革中的习惯问题,另一方面也许我们确实有必要这么做。

    在一个不是很庞大的类型中,我们确实不应该使用任何前缀。各类设计规范也总建议我们保持一个娇小的类型,但是往往事与愿违,大类型常常存在。以Task为例,它有2000多行代码。在这种类型中,如果不使用前缀,我们很难区分一个类型是实例变量还是静态变量,或者是一个const变量。

    最常见的做法是:

    前缀m_,表示这是一个实例变量。

    前置s_,表示这是一个静态变量。

    注意,有时候,如果类型只有实例变量或者只有静态变量,我们也直接使用前缀,以区别该变量不是一个局部变量。

    而const变量则常常使用名词加下划线的表示方法,如:

    internal const int TASK_STATE_CANCELED=0x400000;

    记住,前缀仅限于此,匈牙利命名法中的其他规则(如用类型名做前缀)是绝对要禁止的。

    一个正确使用前缀的示例如下:

        class SampleClass
        {
            private static int s_price;
            private int m_price;
            private const int BASED_PRICE = 1000;
    
            public static void SetStaticField(int price)
            {
                s_price = price;
            }
    
            public void SetClassField(int price)
            {
                m_price = price;
            }
        }
    
        class SampleClass2
        {
            private int _price;
    
            public void SetPrice(int price)
            {
                _price = price;
            }
        }

     在这个例子中,我们知道,即使类型本身不是很长,但是存在方法参数和类型实例变量重名的情况下,为实例变量或者静态变量使用前缀也是必要的。

    一个滥用前缀的实例如下:

        class SampleClass
        {
            private int int_price;
    
            public void SetPrice(int price)
            {
                int_price = price;
            }
        }

     在这个例子中,开发者尝试为price指定一个前缀int,试图通过命名指出变量是int类型。但是,对于一门强类型语言来说,这是没有必要的。

    转自:《编写高质量代码改善C#程序的157个建议》陆敏技

  • 相关阅读:
    Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点
    Civil 3D 二次开发 创建Civil 3D 对象—— 00 ——
    Civil 3D 二次开发 创建AutoCAD对象—— 01 —— 创建直线
    Civil 3D 二次开发 新建CLR项目出现错误C2143
    Civil 3D 二次开发 创建AutoCAD对象—— 00 ——
    了解AutoCAD对象层次结构 —— 6 ——块表记录
    datepicker97使用
    使用angular 外接 templateUrl,使用ng-include
    angularJs 遮罩
    网上找的有关css兼容问题
  • 原文地址:https://www.cnblogs.com/farmer-y/p/8021817.html
Copyright © 2011-2022 走看看