编写高质量代码改善C#程序的157个建议——建议134:有条件地使用前缀
2024-10-21 15:49:25
建议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个建议》陆敏技
最新文章
- Git系列教程三 配置与基本命令
- SharePoint 2013 新建项目字段自动加载上次保存值
- 全栈必备Linux 基础
- eclipse 连接 mysql
- jquery.post用法
- Android Studio无法启动 打开, Android Studio gradle下载不了
- js库开发
- Windows下PHP(Thread Safe与Non Thread Safe)版本说明
- python3基础(七)函数基础
- python语法_装饰器
- MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded
- 微信公众号支付开发当前URL未注册解决办法
- python 将文件描述符包装成文件对象
- SwipeRefreshLayout嵌套ScrollView实现下拉刷新
- mod_php和mod_fastcgi和php-fpm的介绍,对比和性能数据
- EF查询百万级数据的性能测试--单表查询
- lufylegend:图形变形2
- [SQL] 命令远程恢复数据库
- 洛谷 P2042 [NOI2005]维护数列-Splay(插入 删除 修改 翻转 求和 最大的子序列)
- CLR基础,CLR运行过程,使用dos命令创建、编译、运行C#文件,查看IL代码
热门文章
- 什么是 MVC ?
- wkhtmktopdf
- NLTK与自然语言处理基础
- C++常见错误坑洞
- 【转】javascript 执行环境,变量对象,作用域链
- 如何将查出的日期Data类型以Json格式输出到前端
- 认识Echarts(网址:http://echarts.baidu.com/tutorial.html#ECharts%20%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D)
- java 蓝桥杯算法提高 _3K好数
- MonoDevelop Assembly Browser
- Oracle-11g 回缩表高水位