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个建议》陆敏技

  • 相关阅读:
    我为什么支持从中学课本中撤下鲁迅的文章?
    【老孙随笔】技术不行别人就不服你,怎么办?
    【老孙随笔】求职,不要无的放矢
    读者来信(1)——项目经理,不要迷信制度!
    欣闻鲁迅文章下架
    知道力读书会,欢迎大家参加
    【老孙随笔】是谁杀死了QQ?
    技术,项目经理的命?——项目经理的误区(3)
    可以不封神,但是不能不修炼——亚特兰蒂斯之神特斯拉的启示
    分布式开发2WCF如何正确调用LINQTO SQL
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4752652.html
Copyright © 2011-2022 走看看