糟糕的命名:编程最难的事3

如果你不知道一件事物叫什么,

你就不知道它是什么。

如果你不知道这是什么,

你就不可能坐下来写代码。”


文章转载自杰微刊,是一个全新的技术原创平台,尽管在这里介绍容易招来推广之嫌,但是,文章的每一个字,都是经过的细细雕琢,即使能引来大家的质疑和批评,也乐意听取,不断改进自己。

运用正确意味着每一个词都要用的恰到好处。

关于命名 ——菲利普·卡尔顿(Phil Karlton)

计算机科学有两个艰难的事:

1.缓存失效 ;

2.命名。

关于不好的命名——刘易斯·卡罗尔(Lewis Carroll)

当我使用一个词,胖墩儿说是一种轻蔑,当然这也正是我本事的意思-不多也不少。

爱丽丝奇遇记中,透过镜子,爱丽丝究竟发现了什么?(1871)

故意无意义的名称

理论上讲,foo仅仅作为一个占位符名称(因为它无任何含义)

关于命名——萨姆·加德纳(Sam Gardiner)

“如果你不知道一件事物叫什么,

你就不知道它是什么。

如果你不知道这是什么,

你就不可能坐下来写代码。”

什么是最糟糕的变量名?

——data

什么是更糟糕的变量名?

data2

什么是第三糟糕的变量名?

data_2

缩写容易引起歧义

以英文为例, char 是 character(字符) 还是 characteristic(特点)?

mod 的意思是 modify(修改) 还是 modulo (模)?

acc,pos或者auth呢?

另外, fab 只是一个函数,ƒ:A➞B。

而不是 fabulous (传说)


允许一个例外:ID 作为 “identity” (身份)


一个字母太短

局部变量:它的含义是什么?

var a = 42;

这一个是例外:

for  (int  i  =  1;  i  < 42; ++i)

改成 ii,jj,kk 也并不好

函数式编程:一个字母仍然太短

def modp[C](f: B1 => (B2, C), a: A1): (A2, C) = {

val (b, c) = f(get(a)) (set(a, b), c)

}

代码出处:第70行 


可以用特定含义的词代替更多的词

什么是appointment_list?

A calendar?日历?


什么是company_person?

Employee普通职员 或者是owner老板?


什么是text_correction_by_editor?

只是一个edit-编辑。


模糊语言是模糊的

艾伦·格林写了一些模糊的词,如:

InvoiceManager、

TaskManager

‘Manager’ 非常不准确,

其含义之一可能是你想要的字:

Bucket, Supervisor, Planner, Builder

原文地址:点击查看


代码里的模糊用语

get在方法名的开头只用于返回一个字段值。

如果不是这样,或者从其他地方得到的数据, 用其他的词:

fetch, find, lookup, create, calculate, derive, concoct.


错误的词是错的,同义词易混淆

order ≠ shipment

carrier ≠ broker

shipment ≠ transport leg

shipment = consignment

carrier = transporter

transport leg = journey


Java企业中间件示例 -

Apache Camel

JF杰微刊出品: Apache Camel- http://camel.apache.org


再探属性访问器

在许多库中, 这些方法名称将是不可抗拒的,但不建议使用:

getEven

getReal

getAround

getRoundTo

getRichQuick

getJoke


糟糕命名的总结


无意义:foo;

太一般:data;

太短:a;

太长:text_correction_by_editor;

缩写:acc;

模糊:InvoiceManager;

错误:order;

只是不好笑:startCamel


未完待续。


原文地址:JF杰微刊出品


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

推荐阅读更多精彩内容

  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 25,972评论 5 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数...
    元素周期表的十七君阅读 813评论 0 1
  • 麻木不仁 停休第八天 依稀记得接到停休的消息伊始,微笑着和其他部门的同事说着“没关系、习惯了”等宽慰的话,内心却有...
    狼_左瞳_冷色调阅读 178评论 0 2
  • 我们说好的,麦子熟了我们便去麦城。这话说了很多遍,似乎我早忘记是梦里发生过的场景还是电影里的某句台词,但麦子熟了很...
    蔻潍稱阅读 282评论 0 1