代码命名习惯——信达雅

吟安一个字,捻断数茎须。

Two hard things :

  • cache invalidate
  • naming

一些个阶段:

  • 功能 work 的代码
  • 天花乱坠, 炫技的代码
  • 优雅的代码
  • 易被读懂的代码

代码功底亦是一种修行, 摸索阶段总是琢磨着将功能实现了

后面开始接触各大分支技术, 有了一定沉淀, 阅读了一些源码, 优秀框架后

会写一些过度设计, 天花乱坠, 炫技的代码

而后大成, 写的是 优雅口口传颂, 易被读懂的代码。

若将代码比作武学, 命名就是好内功

张无忌独步武林, 天赋异禀, 正是有九阳神功内功加持打底

如果你也开始为一个命名思考了很久 ?

文言翻译讲究: 信达雅, 命名类似。

信: 信服
命名起码应该是准确的。

如果写一个 回调, 我们会命名为 XXXListener, 然后定义 一个 onXXX方法
而不会写一个 XXXResponser, XXXReactor
命名是要传达 context 的, 要遵传彼此的习惯。

类型 类名可选后缀
控制类 Processor、Manager、Engine、Center、Core、Reaper
生产类 Factory、Pool、Maker、Builder
工具类 Util、Helper
数据类 Bean、Request、Response、Query(名次表意即可)
回调类 Callback、Trigger、Listener、Handler
监控类 Reporter、Metric、Tracker
结构类 Wrapper、Iterator、Batch
设计模式 Adapter、Action、Command、Event、Delegate、Builder、Factory、Template、Proxy、Delegate

以上是一些常见的命名习惯, 可以让程序员心心相通
InsertCommend : 立刻明白这是一个命令模式, 是一个 insert 的原子操作,整套架构应该是设计为一些 commend 来驱动执行

除了这些常用的后缀, 也要注意命名的词性讲究:
方法常用动词, 变量 :名词/形容词

如果是一个开关:
这里可选表达很多, 很多情况根据语境, 最好使用形成规范, 统一个人风格,阅读起来爽很多

if (enableAFeature) {
  doAThing();
}

if (aFeatureEnable) {
  doAThing();
}

if (aFeatureValid) {
  doAThing();
}

if (isAFeature) {
  doAThing();
}

if (useAFeature) {
  doAThing();
}

if (aFeatureSwitchOn) {
  doAThing();
}

if (disableAFeature) {
  doAThing();
}

if (aFeatureDisable) {
  doAThing();
}

if (aFeatureInValid) {
  doAThing();
}

if (notAFeature) {
  doAThing();
}

if (aFeatureSwitchOff) {
  doAThing();
}

相比之下 switchOn , switchOff 是 if 语句开关语境很合适的通用表达,
理论上以上都可以, 但是 个人代码风格一致性尤为重要, 习惯统一尤为重要。
最好形成固定的表达方式, 来写代码。

请不要在 if 中写很多逻辑, 取很多反

达: 不拘,通达明白

达这里有一点, 最小化信息传递原则, 如果你也害怕接受很多信息。

信息传递越多决策越难

我们的思维是 层层封装,暴露最少信息, 彼此隔离, 借口层业务层。

怎么在代码中做到传递最少信息:
比如: project aa; module: bb; 包目录: article/query/ 下
写请求相关Bean 类:
AABBArticleQuery
AABBArticleResponse
AABBArticleRequest

这就是浪费: 直接写:
Query
Response
Request

project 包目录 会传递很多 context
不要在命名中传递很多无用信息:
AABBArticleQuery

一个 Bean 类, 长命名, 导致的是对Bean类中成员的 调用 变得很恶心
表现在: 很长串, 产生 厌烦

保持 clean , 使代码看起来 清晰明了

雅: 雅致

雅致的命名使得代码变得文雅, 读起来不容易 wtf

记得高中英语老师将莎士比亚十四行诗来作为大家晨读英语的材料

Shall I compare thee to a summer's day? 
Thou art more lovely and more temperate. 
Rough winds do shake the darling buds of May, 
And summer's lease hath all too short a date.

韵脚

枯藤老树昏鸦,
小桥流水人家,
古道西风瘦马。

夕阳西下,
断肠人在天涯。

每句末尾均压一个 a 韵

写一个分支可以这样:
feature_feed_fling_flavor

这个是意识形态的培养, 并不是需要在代码中这样做。

用词

组件, 开源组件命名可以具像化, 具像化的实物

飞书命名: Lark 云雀

Kotlin: 一个岛名: Kotlin Island

sladar: 斯拉达(Slardar)是Dota2中的一位力量英雄。(字节系组件,网上可搜到避免敏感不阐述)

libra: 天秤座(字节系组件,网上可搜到避免敏感不阐述)

仔细品味下这几个命名, 感觉还是很妙, 很有巧思。

动植物、地点、人物名字、名画 等

这里贴上 古希腊众神:

古希腊众神:

宙斯:(罗马又称朱庇特)Zeus,天神之父,地上万物的最高统治者。

赫拉:(罗马又称朱诺)Hera,宙斯的姐姐与妻子。是女性的代表,掌管婚姻和生育。性格特征是嫉妒。

波塞冬:(罗马又称尼普东)Poseidon,海王,海洋和水域的一切主宰。

得墨忒耳:(罗马又称赛尔斯)Demeter,大地女神,司丰收。

哈底斯:(罗马又称普鲁通)Hades,冥王,司掌冥界,统治阴暗的世界。

雅典娜:(罗马又称米诺娃)Athena,起初被视为女战神,后逐渐变为智慧女神和雅典城的守护女神。

阿波罗:(罗马也称阿波罗)Apollo,在诗与艺术中表现为光明、青春和音乐之神,又是太阳神,与阿尔忒弥斯是孪生姐弟。

阿尔忒弥斯:(罗马又称狄安娜)Artemis ,月神,又是狩猎之神、妇女之神,是女性纯洁的化身,与阿波罗是孪生姐弟。

狄俄尼索斯:(罗马又称巴克科斯)Dionysus,酒神与狂饮欢乐之神。

阿佛洛狄德:(罗马又称维纳斯)Aphrodite,爱情女神。她的忠实随从小爱神爱罗斯Eros(罗马又称邱比特)手持弓箭,被其金箭射中者即与随后见到的第一个人坠入情网,而被其铅箭射中者会对另一个人产生莫名的仇恨。

赫斐斯托斯:(罗马又称乌尔肯)Hephaestus,火神和锻冶之神。

阿瑞斯:(罗马又称玛尔斯)Ares ,战神。

星座

水瓶座 ♒ Aquarius Water Carrier / Water Bearer
雙魚座 ♓ Pisces Fish / Fishes
牧羊座 ♈ Aries Ram
金牛座 ♉ Taurus Bull
雙子座 ♊ Gemini Twins
巨蟹座 ♋ Cancer Crab
獅子座 ♌ Leo Lion
處女座 ♍ Virgo Virgin
天秤座 ♎ Libra Scales / Balance
天蠍座 ♏ Scorpio Scorpion
射手座 ♐ Sagittarius Archer
摩羯座 ♑ Capricorn Goat / Sea Goat

参考: https://juejin.cn/post/6995342820512890893#heading-14

最后, 命名是一个过程,是 life long journey 。

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

推荐阅读更多精彩内容