Github標(biāo)星7.9K!程序員專屬的命名寶典來了
命名一直是程序員最煩惱的事情之一,一個(gè)好的命名可以讓一段代碼看起來可讀性更強(qiáng),后續(xù)維護(hù)的人員也會(huì)更輕松。因此,在團(tuán)隊(duì)中統(tǒng)一使用同一套命名規(guī)范是相當(dāng)有必要的。
今天,猿妹要和大家分享一份命名寶典,專門幫助程序員如何命名,這個(gè)項(xiàng)目介紹了命名時(shí)需要考慮的數(shù)個(gè)要點(diǎn),旨在幫你解決命名困難的問題,教你如何便捷、輕松地進(jìn)行命名,這個(gè)項(xiàng)目就叫——naming-cheatsheet。
naming-cheatsheet已經(jīng)在Github上標(biāo)星 7.9K,累計(jì)分支 386 個(gè)(Github地址:https://github.com/kettanaito/naming-cheatsheet)
這些命名規(guī)則適用于任何編程語(yǔ)言,創(chuàng)建者以JavaScript為例演示,一起來看看吧:
英語(yǔ)命名
在命名變量和函數(shù)名時(shí)用英文名稱命名:
- /* Bad */
- const primerNombre = 'Gustavo'
- const amigos = ['Kate', 'John']
- /* Good */
- const firstName = 'Gustavo'
- const friends = ['Kate', 'John']
不管你喜歡與否,英語(yǔ)是編程中的主導(dǎo)語(yǔ)言,所有編程語(yǔ)言的語(yǔ)法都是用英語(yǔ)編寫的,還有無數(shù)的文檔和教學(xué)資料也是英文,通過英語(yǔ)編寫代碼,可以極大地增加代碼的凝聚力。
約定命名
選擇一套命名規(guī)范并遵循它,在團(tuán)隊(duì)中保持命名的一致性,它可以是camelCase、PascalCase、snake_case或其他任何東西。許多編程語(yǔ)言在命名約定方面都有自己的傳統(tǒng),你可以查看自己的編程語(yǔ)言文檔或者學(xué)習(xí)一些Github上流行的知識(shí)庫(kù)。
- /* 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
S-I-D命名原則
名稱必須簡(jiǎn)短、直觀和描述性:
- 短:輸入一個(gè)名稱一定不要花太長(zhǎng)時(shí)間,因此一定要簡(jiǎn)短
- 直觀:名稱讀起來一定要直觀,盡可能貼近日常用語(yǔ)
- 描述性:名稱必須可以用最有效的方式反映它的作用
- /* 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
避免過度的簡(jiǎn)寫
不要使用縮寫,它們只會(huì)降低代碼的可讀性,找到一個(gè)簡(jiǎn)短的可讀的名稱可能會(huì)很難,但即便如此也別使用簡(jiǎn)寫。
- /* Bad */
- const onItmClk = () => {}
- /* Good */
- const onItemClick = () => {}
避免重復(fù)命名
上下文的名稱不應(yīng)該重復(fù)
- class MenuItem {
- /* Method name duplicates the context (which is "MenuItem") */
- handleMenuItemClick = (event) => { ... }
- /* Reads nicely as `MenuItem.handleClick()` */
- handleClick = (event) => { ... }
- }
反映預(yù)期結(jié)果
變量或函數(shù)的命名應(yīng)該做到能夠反映預(yù)期的結(jié)果。
- /* Bad */
- const isEnabled = itemCount > 3
- return <Button disabled={!isEnabled} />
- /* Good */
- const isDisabled = itemCount <= 3
- return <Button disabled={isDisabled} />
以上就是命名的6大原則,除此之外,創(chuàng)建者還介紹了命名模式,諸如A/HC/LC模式、動(dòng)作、前綴、單復(fù)數(shù)等模式,感興趣的不妨自己去學(xué)習(xí)一下吧。