浅析.NET开发过程中命名的数量和人称

开发 后端
今天我们将介绍的是.NET开发过程中命名的数量和人称,我们都知道命名的重要性,特别的情况是动词的人称和名词的数量。

我们都明白命名的重要性,如果对命名不断地关注,就需要考虑命名中的动词和名词,特别的情况是动词的人称和名词的数量。

在.NET Framework的Guideline中,有专门一章讨论了命名规范,包括大小写、单词的选择等,却没有涉及到人称和数量,下面来讨论一下这两方面的内容。

名词的数量

首先来看数量。名词的单数和复数在语义上有着明显的不同,为了提高可读性,数量需要认真地考虑。比如:

属性(Property):System.Collections.Generic.Dictionary<TKey, TValue>中的Keys和Count是好的例子。字段与此类似; 方法名中的名词:在JS中我们熟悉的getElementById和getElementsByTagName;

局部变量:与属性相比,我们更可能遭遇的是局部变量。比如,用变量来表示一个人的名字,可以用string name; 如果是多个人的名字,则可以用List<string> names。

一般地,单数表达的语义是?(0或1);复数表达的语义是*(0、1或多个)。关于名词的数量很容易理解,相关的规则也容易遵循。

动词的人称

下面再来考虑动词的人称。在需要考虑命名的对象中,包括命名空间、类型、各种类型成员,只有方法是动词,语义上表示一个行为。关于它的人称,来看一个.NET Framework中的例子。在System.Collections.Generic.Stack<T>中,有一个Contains(T item)方法,对于这样的代码:

  1. if (theStack.Contains(1))   
  2.  {   
  3.     // Do something.   
  4.  } 

读起来像是:if the stack contains 1,比较通顺。是不是所有方法都要这样命名呢?没有。另两个方法Clear()和Push(T item)就不是如此,这个地方很让人困惑。先写成代码看看

  1. theStack.Push(3);   
  2. theStack.Clear(); 

尝试像上面那样作为一个句子来读:the stack push 3; the stack clear,语法上不对,看起来也应该是第三人称。这里我也不确定为何如此,只能尝试来解释下。考察多个集合类型和其它类型后发现,所有使用第三人称的地方都是谓词函数,除了上面的Contains(T item),还有Directory.Exists(string path),不知道这是不是其中的命名规则呢?

还要考虑注释

一定程度上,注释也算是一种代码。一种是XML文档注释,在.NET Framework中,不管是对于类型还是类型成员,都使用了第三人称,这一点我们也可以遵循。其它的普通注释应该也可以遵循这个规则。

原文链接:http://www.cnblogs.com/anderslly/archive/2011/01/26/name-conventions.html

【编辑推荐】

  1. .NET Framework字符串相关操作细节介绍
  2. 详解.NET字符串解析的具体过程
  3. 改进C#连接字符串的性能
  4. .NET Lambda表达式的语义:字符串列表范例
  5. C#字符串的几种常用方法
责任编辑:彭凡 来源: 博客园
相关推荐

2012-06-25 10:13:00

Java.NET

2010-03-04 09:54:24

Android开发

2010-02-22 17:20:45

Python开发

2011-07-06 16:00:28

ASP

2009-06-17 16:10:37

Java网站优势

2015-09-25 10:02:52

BlocksDelegates开发

2009-11-23 20:39:21

ibmdw敏捷开发

2015-09-10 09:55:36

移动web开发问题

2009-06-10 15:36:25

ubuntu netb开发过程

2016-12-30 11:10:32

Hadoop开发JVM

2009-06-17 14:33:08

java项目开发

2010-07-15 14:47:05

Perl开发

2011-01-04 10:05:45

敏捷开发

2012-11-13 11:27:16

详细设计

2020-10-23 10:31:59

开发开源工具开源

2022-07-31 19:59:42

文档管理工具互联网

2010-07-05 12:09:10

RationalJazz需求管理

2011-04-14 15:35:53

嵌入式系统嵌入式

2010-06-12 15:41:28

UML建模

2021-04-23 09:00:00

开发安全编码
点赞
收藏

51CTO技术栈公众号