共计 3079 个字符,预计需要花费 8 分钟才能阅读完成。
【导语】:naming-cheatsheet 是一个命名备忘录,记录命名的一些常见标准和约定。
简介
在编程工作中,命名是一件让很多开发者都头疼的事件。国外已经有个一次对于程序员最难工作的投票考察,后果命名占了 49\%。
一个好的变量或函数命名,应该能起到自解释的作用,甚至能缩小咱们代码的正文。
naming-cheatsheet 是一个命名备忘录,记录一些常见的标准约定,并提供简略的例子阐明。如果可能严格遵守这些标准,置信咱们的代码可读性会大大晋升,上面就来介绍 naming-cheatsheet 提供的一些倡议。
我的项目地址:
https://github.com/kettanaito…
应用英语
这是最根本的一条规定了,英语是编程中的次要语言,所有编程语言的语法都是用英语编写的,通过英语编写代码,能够大大提高其通用性。对于咱们国内开发者来说,肯定要防止拼音甚至是间接的中文命名。
/* Bad */
const primerNombre = 'Gustavo'
const amigos = ['Kate', 'John']
/* Good */
const firstName = 'Gustavo'
const friends = ['Kate', 'John']
命名格调
抉择一种命名的格调,并且严格遵守,能够是 camelCase,或者 snake\_case,或者是其余任何的格调,最重要的是要保持一致,不论是集体开发者还是团队,保持一致的命名格调很重要,不要混合应用。
/* Bad */
const page_count = 5
const shouldUpdate = true
/* Good */
const pageCount = 5
const shouldUpdate = true
/* Good as well */
const page_count = 5
const should_update = true
恪守 SID 准则
命名应该简短、直观并且具备描述性,遵循 SID 准则。
- Short。简短,防止输出太长,然而也应该留神不能简写到失去其本来的意义。
- Intuitive。直观,并且尽可能靠近自然语言。
- Descriptive。以最无效的形式反映其作用或目标。
/* Bad */
const a = 5 // "a" could mean anything
const isPaginatable = a > 10 // "Paginatable" sounds extremely unnatural
const shouldPaginatize = a > 10 // Made up verbs are so much fun!
/* Good */
const postCount = 5
const hasPagination = postCount > 10
const shouldPaginate = postCount > 10 // alternatively
防止适度的简写
命名要简短,然而要防止钻牛角尖,命名最重要的是要让人能看懂,适度的缩写如果失去了其本来的意义,升高了代码的可读性,那就不应该这么做,宁愿多写几个字母。
/* Bad */
const onItmClk = () => {}
/* Good */
const onItemClick = () => {}
防止上下文反复
有时候在一段代码中可能会呈现相似意义的变量定义,这个时候要防止命名的反复。
class MenuItem {/* Method name duplicates the context (which is "MenuItem") */
handleMenuItemClick = (event) => {...}
/* Reads nicely as `MenuItem.handleClick()` */
handleClick = (event) => {...}
}
反映预期后果
变量或函数的命名应该能反映预期的后果。
/* Bad */
const isEnabled = itemCount > 3
return <Button disabled={!isEnabled} />
/* Good */
const isDisabled = itemCount <= 3
return <Button disabled={isDisabled} />
命名的模式
能够参考以下相似的模式来做命名。
A/HC/LC 模式
能够遵循 A /HC/LC,即
prefix? + action (A) + high context (HC) + low context? (LC)
name | prefix | A | HC | LC |
---|---|---|---|---|
getUser | ||||
get | User | |||
getUserMessages | ||||
get | User | Messages | ||
handleClickOutside | ||||
handle | Click | Outside | ||
shouldDisplayMessage | should | Display | Message | |
上下文的程序可能会影响变量的含意,例如 shouldUpdateComponent 意味着将要更新一个组件,换一下程序变成 shouldComponentUpdate,意味着组件将做自我更新。
动作
函数名称的动词局部,是形容函数作用的最终要的局部,如:
- getXXX,示意获取数据
- setXXX,示意设值
- resetXXX,重置数据
- fetchXXX,申请数据
- removeXXX,移除数据,示意从某处删除某物
- deleteXXX,删除数据,示意齐全分明某些事物
- composeXXX,从现有数据创立新数据
- handleXXX,解决某个动作
上下文
函数或办法通常是某些事物的动作,联合上下文,可能明确其操作的对象,或者要能反映出函数预期的数据类型。一些特定的状况下容许省略上下文,例如在 JavaScript 中,filter 对 Array 进行操作很常见,就没必要命名为 filterArray 了。
/* A pure function operating with primitives */
function filter(predicate, list) {return list.filter(predicate)
}
/* Function operating exactly on posts */
function getRecentPosts(posts) {return filter(posts, (post) => post.date === Date.now())
}
前缀
前缀用来加强变量的含意,如:
- is,形容特色或状态,通常是 boolean 类型
- has,形容是否具备某个状态或值,通常是 boolean 类型
- should,反映必定的条件,加上特定的执行动作
- min/max,形容边界或界线时应用
- prev/next,批示前一个或下一个状态
单复数
变量名称是复数还是复数,取决于值的复数还是复数。
/* Bad */
const friends = 'Bob'
const friend = ['Bob', 'Tony', 'Tanya']
/* Good */
const friend = 'Bob'
const friends = ['Bob', 'Tony', 'Tanya']
– EOF –
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。