代码规范----名字(把信息装入名字中、选择不被误解的名字)


一、把信息装入名字中

1.选择专业的词

例1:使用getPage getName getData而不是单单是get这种空洞的词,更深来说可以用fetch()、download()这种词更好。

例2:

class BinaryTree{
int size();
}

这里的size就是不明确的,没有承载很多信息。我们需要更专业的词比如height();nodeNum();等

例3:

class Thread{
void stop();
}

对于stop我们也可以用更专业的词讲其具体化:比如pause() 、kill()、resume()

例4:找到更有表现力的词

比如对于发送send ,我们在不同情况下也可以使用不同的的词去更有表现力的表达。
在向下分发的时候可以使用dispatch,分配可以使用distibute,还有deliver,route等同样都是发送却🈶不同的表达力。
像start也有很多同义词,create、launch、begin、open等

2.避免泛泛的名字

像tmp retval,除非使用它们有特殊的理由
retval 就是表达一个没有很多信息的返回值
tmp这个名字只应用于短期存在且临时性为其主要存在因素的变量
对于 i,j,k这种可以表达式迭代器的使用,但是如果迭代器参数较多,可以更精确点,比如
if(club[ci].members[mi]==users[ui])
对于空泛名字,不是说不能使用,是要有一个理由。

3.用具体的名字代表抽象的名字

ServerCanStart()就不如CanListenrOnPort好

4.使用前缀和后缀来给名字附带更多的信息

为名字附带更多的信息:

  • 带单位的值
    start --start_ms
    size--size_mb
    limit--max_kbps
  • 附属你想表达的其他重要的属性
    html---html_utf8
    password----plaintext_password
  • 匈牙利表示法是一个在微软广泛应用的命名系统,它把每个变量的类型信息都编写进名字的前缀里,
    比如pLast 表达某数据结构最后一个元素的指针p
    比如cch 表达一个字符ch的计数count
    比如psz表达一个以零结尾zero的字符串s的指针p

5.决定名字的长度

名字的长短应该和这个变量如何使用有关系。

  • 在小的作用域可以使用短的名字,而如果一个标识符有较大的作用域,那么它的名字就要包含足够的信息以便含义更清楚。
    比如一个变量的作用域在一个方法内,它是允许不用带上太多信息的。因为所有的信息(变量类型,初值等)都很容易被看到,所以可以用很短的名字
    而如果定义的m只是一个全局变量中的类成员,那就不容易读了。
  • 首字母缩略词和缩写
    BEManager--BackEndManager 对于这种缩写是会让人费解的,让新成员阅读这种可能会不理解,所以要保证对于缩写的使用别人的易读的。
    而doc替代document
    str代替string 这种就是可以的,
  • 丢掉没用的词
    ConvertToString()----ToString()这样有时名字中的某些词拿掉也不会损失任何信息就可以丢掉这种词

6.利用名字的格式来表达含义

类:名词,采用大驼峰命名法--所有单词的第一个字母大写,尽量避免缩写。ActivityManager
方法:动词或动名词,采用小驼峰命名法,除首单词外,其余所有单词的第一个字母大写
例如 onCreate()
变量:小驼峰命名法,可把统一的量词放在结尾处。
常量:下划线命名法,MIN_WIDTH


二、不会被误解的名字

不会被误解的名字是最好的名字,让阅读代码的人理解本意,不会有其他歧义。
例子1:filter("age<20");这就会让人误解,是挑出年龄小于20的还是把小于20的去掉 同样的还有limit
例子2:clip(text,lenght)---truncate(text,max_chars) length 也是会有歧义的 是字节数、字符数还是字数。

  • 用min和max来表示包含极限 大于等于 少于等于 max_ min_ 是很好的前缀
  • 用first和last来表示包含的范围
  • 用begin和end来表示包含/排除范围
  • 布尔值命名 通常来讲:加上像is、has、can、should这样的词,可以把布尔值变得更明确。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • iOS编程规范0规范 0.1前言 为􏰀高产品代码质量,指导广大软件开发人员编写出简洁、可维护、可靠、可 测试、高效...
    iOS行者阅读 4,428评论 21 35
  • 推荐文章:禅与 Objective-C 编程艺 前言 为􏰀高产品代码质量,指导广大软件开发人员编写出简洁、可维护、...
    WolfTin阅读 2,747评论 0 1
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 40,937评论 0 48
  • 我觉得作为一个iOS开发肯定遇到过一个问题,使用tableView的HeadView,这个控件是很好用的,因为他让...
    猫见证阅读 339评论 0 1
  • 屌丝,用搜狗输入法在键盘上敲打六下即可映入眼帘,但在敲打键盘的时候,我在想用一个什么样的语句解释屌丝这个当下异常火...
    西岳顽石阅读 497评论 1 4