建议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 = ; 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. Git系列教程三 配置与基本命令
  2. SharePoint 2013 新建项目字段自动加载上次保存值
  3. 全栈必备Linux 基础
  4. eclipse 连接 mysql
  5. jquery.post用法
  6. Android Studio无法启动 打开, Android Studio gradle下载不了
  7. js库开发
  8. Windows下PHP(Thread Safe与Non Thread Safe)版本说明
  9. python3基础(七)函数基础
  10. python语法_装饰器
  11. MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded
  12. 微信公众号支付开发当前URL未注册解决办法
  13. python 将文件描述符包装成文件对象
  14. SwipeRefreshLayout嵌套ScrollView实现下拉刷新
  15. mod_php和mod_fastcgi和php-fpm的介绍,对比和性能数据
  16. EF查询百万级数据的性能测试--单表查询
  17. lufylegend:图形变形2
  18. [SQL] 命令远程恢复数据库
  19. 洛谷 P2042 [NOI2005]维护数列-Splay(插入 删除 修改 翻转 求和 最大的子序列)
  20. CLR基础,CLR运行过程,使用dos命令创建、编译、运行C#文件,查看IL代码

热门文章

  1. 什么是 MVC ?
  2. wkhtmktopdf
  3. NLTK与自然语言处理基础
  4. C++常见错误坑洞
  5. 【转】javascript 执行环境,变量对象,作用域链
  6. 如何将查出的日期Data类型以Json格式输出到前端
  7. 认识Echarts(网址:http://echarts.baidu.com/tutorial.html#ECharts%20%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D)
  8. java 蓝桥杯算法提高 _3K好数
  9. MonoDevelop Assembly Browser
  10. Oracle-11g 回缩表高水位