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
来移除过滤器的某个值,而不是 deleteFilter
function 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 |
提交某个数据 |
无返回值 |