A/HC/LC 命名法 —— (P)A/HC/LC是什么
prefix? (P) + action (A) + high context (HC) + low context? (LC)
Prefix
- is (是什么)
- has (有什么)
- should (应该做什么)
函数的核心是 Actions
- Actions(动作),是函数名的动词部分,描述这个函数要做什么
- get (获取数据)
function getFruitsCount() {
return this.fruits.length;
}
- set (设置数据)
let fruits = 0
function setFruits(nextFruits) {
fruits = nextFruits
}
setFruits(5)
console.log(fruits)
- reset (还原数据)
let initialFruits = 5
let fruits = initialFruits
setFruits(10)
console.log(fruits)
function resetFruits() {
fruits = initialFruits
}
resetFruits()
console.log(fruits)
- fetch (请求数据)
- remove (移除数据)
- 逻辑上的删除,数据可能只是被移动某个特定的地方了
- 假设页面有个搜索过滤器,可以通过
removeFilter 来移除过滤器的某个值,而不是 deleteFilterfunction removeFilter(filterName, filters) {
return filters.filter(name => name !== filterName)
}
const selectedFilters = ['price', 'availability', 'size']
removeFilter('price', selectedFilters)
- delete (删除数据)
- compose (组合数据)
- handle (处理数据)
最后是 Context
综上总结
| Name |
Prefix |
Action(A) |
High context(HC) |
Low context(LC) |
| getPost |
|
get |
Post |
|
| getPostData |
|
get |
Post |
Data |
| handleClickOutside |
|
handle |
Click |
Outside |
| shouldDisplayMessage |
should |
Display |
Message |
|
提高代码可读性的变量命名技巧参考
- 遵循 S-I-D 原则
const a = 5
const isPaginatable = (postsCount > 10)
const shouldPaginatize = (postsCount > 10)
const postsCount = 5
const hasPagination = (postsCount > 10)
const shouldDisplayPagination = (postsCount > 10)
- 避免缩写
- 不要使用缩写形式, 这会降低代码可读性. 起一个简短并且语义化的名称可能有点难度, 但是不要让这成为你使用缩写的借口
const onItmClk = () => {}
const onItemClick = () => {}
- 避免重复的上下文
- 如果命名中的 context 存在与否不会降低其可读性的话, 最好还是移除它:
class MenuItem {
handleMenuItemClick = (event) => { ... }
handleClick = (event) => { ... }
}
- 应该映射预期结果
const isEnabled = (itemsCount > 3)
return <Button disabled={!isEnabled} />
const isDisabled = (itemsCount <= 3)
return <Button disabled={isDisabled} />
- 考虑单数和复数形式
- 因为一个变量可能拥有单个或多个值, 所以命名的时候也要考虑单数和复数形式.
一些常用命名汇总(摘抄)
| 动词 |
含义 |
返回值 |
| can |
判断是否可执行某个动作(权限) |
布尔值,true:可执行;false:不可执行 |
| has |
判断是否含有某个值 |
布尔值,true:含有;false:不含有 |
| is |
判断是否为某个值 |
布尔值,true:为某个值;false:不为某个值 |
| get |
获取某个值 |
任何值 |
| set |
设置某个值 |
无返回值 |
| load |
加载某些数据 |
视场景定 |
| search |
搜索某些数据 |
视场景定 |
| validate |
校验、验证某些规则 |
无返回值 |
| query |
查询某些数据 |
视场景定 |
| add |
增加、添加数据 |
无返回值 |
| create |
创建数据 |
无返回值 |
| update |
更新某个数据 |
无返回值 |
| modify |
变更某个数据 |
无返回值 |
| edit |
编辑某个数据 |
无返回值 |
| delete |
删除某个数据 |
无返回值 |
| initialize |
初始化某个数据 |
无返回值 |
| select |
选择某个数据 |
视场景定 |
| cancel |
取消某个操作 |
无返回值 |
| confirm |
确认某个操作 |
无返回值 |
| click |
点击某个元素 |
视场景定 |
| submit |
提交某个数据 |
无返回值 |