iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
Modern Web

想轉職的鯊魚從零基礎開始學習JavaScript系列 第 23

2022 iThome 鐵人賽 Day-23 命名規則-寫程式不僅是你一個人的戰場

  • 分享至 

  • xImage
  •  

前言

寫不出可以讓人輕易讀懂的程式碼的程式設計師,不是好的程式設計師。

請隨時做好讓別人可以讀懂你程式碼的準備

就算是孤獨的工作者、不會讓別人參與你的程式碼獨行俠

也不能保證,此時看得懂的程式碼,不代表幾年後還能知道自己當時在幹什麼

雖然看起來簡單好懂的程式碼需要時間磨練

但是我們可以從基礎一步一步開始,正所謂千里知行始於足下。

雖然現在寫不出好懂的code,但是可以透過命名來讓自己的程式越來越好懂

維基也說過,命名可以提高code的易讀性、易認性、程式效率以及可維護性。

命名流派

馬克吐溫曾說過:真正的大不敬是不尊重別人所信仰的的神。

各流派中只有最適合你的,沒有最好的,所以沒有必要去扁貶低其他流派去彰顯自己很厲害,

當然你也可以自成一派引領世界潮流。

不管你使用哪種命名流派,請遵循一個原則--統一,不管是使用哪一種命名法,

在同一個專案請一貫的用下去,接手別人專案也是如此,遵循那個專案的命名流派到底。

下面就簡單介紹幾個常看到的流派,可以找與自己相性的最好得來使用

蛇形命名法(Snake_case)

其實這個命名法目前還沒有一個正式的英文名稱,Snake_case、lisp-case、kebab-case、

SCREAMING_SNAKE_CASE 等等都有人稱呼。

為了使名稱更好懂,常會使用一個以上的詞彙

而將這種複數的詞彙用底線取代空格將其鏈接起來,即是蛇形命名法

例如 日劇 求婚大作戰的 回到過去的魔法咒語 Hallelujah Chance(哈雷路亞,嗆司)

用蛇行命名法就會變成 hallelujah_chance

另外此種命名法有兩個分支

一派是全使用小寫來表示的lower snake case,即是我上面的範例

另一派是以全大寫使用的upper snake case

上面的「哈雷路亞,嗆司」則會轉成 HALLELUJAH_CHANCE

額外補充 烤肉串 (kebab case)

kebab case 因為樣子像羊肉串所以才會被這樣稱呼

跟蛇形命名相似不過是用 hyphens "-"來鏈接複數的詞彙。

用kebab case 「哈雷路亞,嗆司」則會轉成 hallelujah-chance

駝峰式命名法(Camel case)

相較於蛇形命名法(snake case)或是kebab case用一個明顯的符號來鏈接詞彙

駝峰式詞彙之間不以任何符號做鏈結或是隔開,而是以大寫來表示這是不同的詞彙

「哈雷路亞,嗆司」如果用駝峰式則會轉成 hallelujahChance

chance 為了跟hallelujah做區隔 開頭的C變成了大寫

這種命名法也有兩個分支

一個是第一詞彙的第一個字母保持小寫的小駝峰式命名法(lower camel case)

另一個則是每個詞彙的第一個字母都保持大寫的大駝峰式命名法(upper camel case)

例如:HallelujahChance

匈牙利命名法

匈牙利的命名跟其他歐洲體系不一樣

反而跟我們比較相近的,是一種姓氏是在前面名字在後面的命名模式

這種命名在運用程式碼即是

類型和用途+名稱

一個前綴可以很明確的指出這名稱的類型和用途

匈牙利命名也有兩個分支

前綴的字首代表資料類型的 匈牙利命名法

以及 代表變數目的或是說明他代表什麼的匈牙利應用命名法

那上面的「哈雷路亞,嗆司」如果是一個函式

function HallelujahChance() {
}

運用匈牙利命名法即會變成fnHallelujahChance

可以透過名稱就知道這是一個函式

當然也可以用其他前綴來表示不同類型 函式只是一種舉例。

結論

上面那麼多的命名法,在JavaScript中最常見的就是,駝峰式命名法(Camel case),正確地說是小駝峰式命名法(lower camel case),常常看到很多一長串的文字像是"getElementById",把他們拆開來看就是get Element By Id,直譯就是從ID去取得一個元素,也是鯊魚目前比較推薦去使用的一個方式,但是不管何種命名法,請抱持一個最重要的原則,統一到底,才不會讓人閱讀困難。


上一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-22 斷章 跳躍句
下一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-24 Classes 類別(一)
系列文
想轉職的鯊魚從零基礎開始學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言