自己总结的C#编码规范--2.命名选择篇

上一篇文章讲了标识符命名的约定,今天讲下标识符命名的选择。

简单的讲,看到一个标识符一定要可以见名知意。

  • 名字一定要能够表达出标识符的含意

标识符名字必须要表达出该标识符的意义,绝对不可以使用无意义的v1,v2…vn之类的命名。

public static void CloneChars(char[] cl1, char[] cl2)

{

for (var i = 0; i < cl1.Count(); i++)

{

cl2[i] = cl1[i];

}

}

代码的调用者不看这函数是无法知道cl1还是cl2是要拷贝的char数组,他必须进到这个函数去看完整个逻辑才可以调用。而且在看的过程中cl2[i] = cl1[i]; 也需要他花几秒钟来思考是做什么的。

如果改成有意义的名字: source 和target那么这个方法调用者一看名字就知道使用方法了。

public static void CloneChars(char[] source, char[] target)

{

for (var i = 0; i < source.Count(); i++)

{

target[i] = source[i];

}

}

  • 选择意义单一明确的名字

在命名时要使用专业的单词,避免使用"空洞"的单词

如: class BinaryTree

{

public int Size()

看到这行代码你想到Size会返回什么,树的高度,节点数还是树在内存中的空间?

我们可以使用更单一明确的词来告诉读者这个方法的具体含义,如Height,NodesNum,Memory_Bytes

  • 使用不会产生歧义的名字

在给标识符命名时,一定不能产生歧义,代码中的很多错误都是由于命名时的歧义造成的。例如:

public const int CART_TOO_BIG_LIMIT = 10;

if (ShoppingCart.Count() >= CART_TOO_BIG_LIMIT)

{

LogError("Too many items in cart.");

}

这段代码有个很经典的"大小差一缺陷"。在判断购物车物品上限时,我是应该使用 ">"还是应该使用">=",我是无法从代码中判断出来的,所以这个地方很容易出现bug.如果我们换成MAX_ITEMS_IN_CART, 那我马上就可以判定出这里要使用">"。

  • 命名要与使用者的期望相匹配

有些名字之所以会让人误解是因为带吗阅读者对它们有先入为主的印象,就算你本意并非如此。这种情况下,你最好是选用一个与使用者期望所匹配的名字。

如很多程序员都习惯了把Get开始的方法当作"轻量级访问器",他只是简单的返回成员变量。

大家看到以下的代码

class BinaryTree

{

public int GetNodesCount()

会以为只是返回内部private int _nodesCount; 私有变量的访问器。

但如果实际你的代码可能是一个非常耗时的代码,内部实现是广度优先遍历所有的树节点,还要去数据库查找父节点和子节点的关系,然后累加。

那么这么一个耗时的方法可能由于你的命名,导致了被调用者反复多次的调用,导致整个系统性能下降。

如果你将命名改为ComputeNodesCount那么调用者就会知道这是个耗时的操作,需要缓存调用结果并减少调用。

  • 为名字附加更多的信息

一个变量名就像一个小注释,尽管空间不大,但不管你在命中挤进任何额外的信息,每次有人看到命名时都会看到这些信息。

例子:当你从网页接收了请求的表单,里面可能还有不安全的代码,如注入语句等,这时你在命名时需要体现该数据不安全,可以使用unsafeFormData,当调用完安全检查方法后可以将其改为 safeFormData = HandleUnsafeData(unsafeFormData).这样代码阅读者就知道可以放心的使用该变量了。

下表给出了更多需要给名字附加额外信息的例子

  • 不要卖弄风骚

使用最常用,众所周知的单词。不要在代码命名时卖弄你的学识,要让你的代码快速准确的表达出你的想法才是真正的牛人。

如public static string ConvertXml2Html (string sourcePath)

有些人在看到这个方法的时候怎么想也想不明白这个2是做什么用的,是把一个Xml文件变成两个Html?

熟悉英语文化的人可能知道这是To的俚语表达。如果你不能保证所有阅读你代码的人都知道2是To的缩写。那么请使用ConvertXmlToHtml命名。

自己总结的C#编码规范--2.命名选择篇,布布扣,bubuko.com

时间: 2024-11-05 12:21:47

自己总结的C#编码规范--2.命名选择篇的相关文章

Swift— Swift编码规范之命名规范-备

程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示布尔类型变量,pFoo表示指针类型变量.匈牙利命名还是有一定争议的,在Swift编码规范中几本不采用匈牙利命名. 驼峰命名(Camel-Case),又称骆驼命名法,是指混合使用大小写字母来名字.驼峰命名又分为:小驼峰法和大驼峰法. 小驼峰法是第一个单词是全部小写,后面的单词首字母大写,如:myRoo

编码规范之命名规则---变量名定义规则

个人也是大众的良好风格 1.书写风格:驼峰式 int netWork 类似的帕斯卡命名法 总共有三种 http://baike.baidu.com/view/8042085.htm?fr=aladdin#3 2.前缀: 全局带g 结构体.类内成员带m 指针类型带p 带数据类型前缀的为匈牙利式 3.结构体定义 typedef struct NetWork_Param_{ int num; SocketInfo m_SocketInfo;}NetWork_Param; 4.其他细节 http://w

自己总结的C#编码规范--前言&amp;目录

最近在为公司编写c#编码规范,以前对这方面研究不多,只是觉得代码能够出自己的意思就可以了. 我参考了以下资料 C# Coding Conventions NET设计规范约定惯用法与模式(第2版) 编写可读性代码的艺术 重构—改善既有代码的设计 高效程序员的45个习惯 代码整洁之道 发现其实真要写好一个代码规范是一件非常难的事情,这取决于规范制定者的经验,团队成员的水平,业务的具体需求,项目的复杂度,项目的进度,企业的文化氛围等等. 而且每次提笔要写的时候,总是有很多很多的想法想写进去,可是作为一

自己总结的C#编码规范--7.文档下载 &amp; 总结

今天终于把这一系列的编码规范写完了,这个编码规范算上前面阅读相关书籍,前前后后总共花了一个月的时间,也算是个人的呕心沥血之作了. 本来也没打算把这个系列写的这么长,但是在写的过程中自己搜了相关的网上资料,后来发现网上的c#代码规范很少,而且仅有的几份都很泛泛,没有实际的内容.所以自己就阅读了相关的书籍,自己结合自己几年来的开发经验写了这份文档.希望可以帮助那些苦于没有编码规范的程序员,也希望所有新程序员能在职业生涯的初期就有一个良好的编码习惯,这对于以后个人的成长有至关重要的作用. 在写这个规范

自己总结的C#编码规范--7.文档下载及总结

今天终于把这一系列的编码规范写完了,这个编码规范算上前面阅读相关书籍,前前后后总共花了一个月的时间,也算是个人的呕心沥血之作了. 本来也没打算把这个系列写的这么长,但是在写的过程中自己搜了相关的网上资料,后来发现网上的c#代码规范很少,而且仅有的几份都很泛泛,没有实际的内容.所以自己就阅读了相关的书籍,自己结合自己几年来的开发经验写了这份文档.希望可以帮助那些苦于没有编码规范的程序员,也希望所有新程序员能在职业生涯的初期就有一个良好的编码习惯,这对于以后个人的成长有至关重要的作用. 在写这个规范

第四章 android 命名规范和编码规范

书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 中文翻译:http://www.blogjava.net/zh-weir/archive/2014/02/08/409608.html 然后说下我在android开发中的命名规范和编码规范: 先分

Android开发命名规范和编码规范

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51346027 无规矩不成方圆,是吧..哈哈~~ 很庆幸,本人刚学java编程的时候,就被老师灌输了编程规范的相关知识,并且一直在遵守. 有过团队开发经验的人都知道,如果没有一定的规范可行,那么代码看起来将是苦不堪言,甚至是乱七八糟. 下面就介绍一下,我个人编码过程中使用到的规范,供大家参考~~ 命名规范 命名规范要望文知义,简单明了. 命名规范定制太多,就会让人心烦,反而没人遵守了.

《疯狂Java讲义(第3版)》.(李刚)——java命名规则及编码规范

1.命名规则: 此处借鉴一下他人的资料,比较全面一些,方便了解学习. JAVA源文件的命名 JAVA源文件名必须和源文件中所定义的类的类名相同. Package的命名 Package名的第一部分应是小写ASCII字符,并且是顶级域名之一,通常是com.edu.gov.mil.net.org或由ISO标准3166.1981定义的国家唯一标志码.Package名的后续部分由各组织内部命名规则决定,内部命名规则指定了各组件的目录名,所属部门名.项目名等. Class/Interface的命名 Clas

Android 命名规范和编码规范

简明概要  多写注释 一.关于命名规范 对于开发项目来说肯定是要有统一的规范,然而命名规范需要做到哪几点呢? 答: 首先,不能反人类. 再来就是,要望文而知其意. 下面就来说说具体该怎么去规范我们的代码了.How to name? 1)Java类文件 i. Activity 命名规范: 以Activity作为后缀, 例如 personActivity. ii. Adapter命名规范: 以Adapter作为后缀,  例如 personAdapter. iii. Entity 命名规范: 大多以E