基本准则

  • 单一职责
  • 见名知意
a1 -> arr1 -> rawScores
a2 -> arr2 -> handleScores
a3 -> arr3 -> resultScores
  • 不易拼错
  • 长短合适:8 ~ 20 字符,> 1 个词
keyword: 7
getElementById: 14
un safeSubmitContent: 19
  • 不出现容易混淆的字母(Illustrate)
  • 灵活地倒置单词,一定程度上统一前后缀
scoreMax
scoreMin
scoreSum
scoreAverage
scoreRate

classScoreMax
classScoreMin
gradeScoreMin
gradeScoreMax
  • 灵活地打破专有单词大小写
getUtcTimeStamp -> getUTCTimeStamp
  • 数字尽量往后放(类似于描述性后缀)
encodeToUtf8
encodeToUtf16
encodeToUtf21
  • 可检索性(加长命名长度)
id -> userId -> uid
name -> userName

常见的成对命名

  • 多个同义词要规定整个项目中使用哪一个
  • 多组反义词要彼此一一对应

动作相关

source target
Origin Destination
send receive
buy sell

数字相关

Statics
Rate Percent
Count
Total Sum
Max Min
High Low
Average Delta

锁定相关

lock unlock
closed opened
invisible visible
disable enable

静态类型

bad:
String

good:
Record
Info
Details
Log
Config
Summary

方法名相关

  • 一一对应
loadFromXxx saveToXxx
create destory
load unload
insert delete
add/append remove
push pop
input output
increase decrease
refresh clear
beforeXxx afterXxx
encrypt/encode decrypt/decode

属性名相关

Old New
Raw Processed
Previous Current Next
front/forward back/backward
Child Parent
GrandChild GrandParent

Begin -> End
Start -> Pause -> Stop

Above
LeftTop Top RightTop
Up
Left Inner Right
Down
LeftBottom Bottom RightBottom
Below

命名细则

详细程度/生命周期长度函数文件包/模块全局静态
三个及以上 student_score_precentboardTotalScoreglobalScoreHistoryglobalScoreHistoryGLOBAL_SCORE_HISTORY
两个词 tempuserNameglobalHistory GLOBAL_CONFIG
1.5 个词 temp2scoreAve
一个词temprow、col
字母ti、j、x、y $

单字母命名细谈

常见小写

a 数组/数学参数
b 数学参数/二进制加密
c 字符
d 距离
f py 文件对象
g Java 图像上文
h css 高度
m 矩阵行数
n 数量
s 字符串
t 时间
r 反向遍历、请求、响应
x y z (w) 坐标
e py 异常/js 事件对象
i j k 字典的键
u v vector 容器

避嫌大写

E 欧拉常数
F Django 提供
G 万有引力常数
I STL 迭代器
Q Django 提供
N numpy 大小维度
R 电阻
T matlab 矩阵转置

命名词性

  • 变量/属性:名词,boolean 以 is 开头
isOkay isSucceed
  • 函数:动词开头短语
getElementById handleClickButton
  • 成员方法:动词 + 其它,更简短
Element.getById Element.get
  • 类:拟人化名词
创造者 XxxBuilder
发送者 XxxSender
接收者 XxxReceiver
监听者 XxxListener
管理者 XxxManager
处理者 XxxHandler(被动) XxxProcessor(主动)
适配器 XxxAdapter

静态方法工具集 XxxUtils
业务层模型 XxxService
子系统 XxxSystem

项目结构

  • .gitignore
  • README.md
  • xxx.json/xxx.yaml/xxx.toml
  • ...
  • docs\
  • scripts\
  • src\

    • enum\
    • routers\
    • service\
    • systems\
    • tools\
    • types
ro -> se -> sy -> t

对 ro、se、sy、t 可单独放置在一文件夹下:layers、framework、architecture、architectureLayers

项目命名

组合词命名

基于英语单词词义及构词法的命名,更通俗易懂,但可能有点同质化。风格不一。

短横线、全小写(适合作为包名):mouse-tracker
大驼峰:LittleText
小驼峰:pcLock

缩写:
LiRen Minecraft PvP EssentialPlugin -> lmpep
performance indecator -> perf-in

象征性命名

以各类名词、人物名命名,检索性程度降低,但具有个性。

天体或化学元素命名

这俩放在一起是因为其中大部分都来自于希腊、北欧神话人物名字。

Fluorine
Luna
Titan
Mars
Venus
Sirius
对于化学元素命名,如果不打算出一系列类似项目的话尽量不用 ium 结尾的词

日语罗马音命名

实质基本上都是来自二刺猿动画/游戏虚拟人物名。如果你在 GitHub 上看到一个项目由罗马音命名,那不用怀疑,大概率是来自闹钟的傻卵二刺猿用自己老婆的名字命名的(甚至来源可能不止一个角色),这点比看开发者头像更为致命而准确,至少在我目前看到的由家乡人写的项目里很少会有用罗马音命名的。

  • Mirai
  • Misakura
  • KotoriBot
  • Tsukiko

法语/拉丁语/德语等其它语言单词命名

  • Cordis