基本准则
- 单一职责
- 见名知意
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_precent | boardTotalScore | globalScoreHistory | globalScoreHistory | GLOBAL_SCORE_HISTORY | |
两个词 | temp | userName | globalHistory | GLOBAL_CONFIG | ||
1.5 个词 | temp2 | scoreAve | ||||
一个词 | temp | row、col | ||||
字母 | t | i、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
本文作者:Arimura Sena
本文链接:https://hotaru.icu/archives/384/
版权声明:转载时须注明出处及本声明
Thanks, A wealth of information on vaping laws and regulations!