来源
第2章 把信息装到名字里
1. 选择专业名词
- 找到更有表现力的词
单词 | 更多选择 |
---|---|
send | deliver, dispatch, announce, distribute, route |
find | search, extract, locate, recover |
start | lauch, create, begin, open |
make | create, set up, build, generate, compose, add, new |
2. 避免泛泛的名字
- tmp -> tmp_xxx
- 循环迭代器i, j, iter, it -> club_i, meber_i OR ci, mi
3. 用具体的名字代替抽象的名字
- DISALLOW_EVIL_CONSTRUCTORS() -> DISALLOW_COPY_AND_ASSIGN()
- --run_locally -> --extra_logging OR --use_local_database
4. 使用前缀或后缀来给名字附带更多信息
- 进制
- id -> hex_id
- 带单位的值
- start_time -> start_time_ms
- delay -> delay_secs
- size -> size_mb
- limit -> max_kbps
- angle -> degrees_cw
- 安全信息
- url -> untrusted_url
- passowrd -> plaintext_password
- 其他信息
- comment -> unescaped_comment
- html -> htmml_utf8
- data -> data_urlenc
5. 决定名字的长度
- 在小的作用域里可以使用短的名字
- 单词自动补全使得输入长名字不再是问题
- 首字母缩略词和缩写,只用最常用的
- evaluation -> eval
- string -> str
- document -> doc
- 丢掉没用的词
- convert_to_string() -> to_string()
- do_serveloop() -> serveloop()
6. 利用名字的格式来表达含义
- 使用CamelCase来表示类名
- 使用lower_separated来表示变量名
- 常量的格式是kConstantName而不是CONSTANT_NAME,这种形式的好处是容易和#define的宏区分开
- 宏的规范是MACRO_NAME
- 类成员变量和普通变量一样,但必须以一条下划线结尾,入offset_。
- "构造函数"应该首字母大写而普通函数首字母小写
- 给jQuery返回的结果加上$作为前缀
- <div id="middle_column" class="main-content"> 用下划线来划分ID中的词,用连字符来划分class中的词
第3章 不会误解的名字
- Filter() 是“选出”还是“除去”
- Clip(text, length) -> Truncate(text, length)
- 推荐用min和max来表示(包含)极限
- 推荐用first和last来表示包含的范围
- 推荐用begin和end来表示包含/排除范围
- PrintEventsInRange("OCT 16 12:00am", "OCT 17 12:00am")
- 给布尔值命名:
- 通常来讲,加上像is, has, can或should这样的词,可以把布尔值变得更明确。read_password -> need_password OR user_is_authenticated
- 最好避免使用反义名字。disable_ssl -> use_ssl
- 与使用者的期望相匹配
- get*():“轻量级访问器”,简单地返回一个内部成员变量。
- 权衡多个备选名字
网友评论