[精讚] [會員登入]
736

程式、函數、資料庫命名的風格

程式或資料庫自己定義統一的命名規則,可以防止因為一個拚字的錯誤花了半個小時來找,也可說是提升工作效率的關鍵。

此文完整連結 http://n.sfs.tw/12242

複製連結 程式、函數、資料庫命名的風格@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2018-03-10 14:24:56 最後編修
2018-03-10 14:23:17 By 瘦河馬
 

自己的程式演進好幾代,每代的命名方法都不一致,是該統一一下程式的命名方法,

話說世界上沒有統一的寫法,只有建議的寫法,所以沒有對錯也沒有好壞的問題,至於理由是我自己掰的~~

基本的原則就是 

  1 命名要達意,不要太長(反正有namespace,要重覆的機率真的很低) 

  2 命名是給自己看得懂為主,不是拿來炫耀的(有什麼好炫耀的?)

  3.容易看錯的字符如 0oO, 1ilI, Pp9qg 要避免混用,要用最好是全英文或全數字組合,以免給自己找麻煩。

每個設計者都有自己的命名方式,有人用的是破爛不堪的英文(還拚錯)(還從頭用到尾),後面看的人簡直是眼睛都快瞎了,要取代又怕「受傷害」。就別說別人了,連自己寫的程式命名的都會有後面打前面的情況,例如開發專案時前面用的是camelCased用到後面變 camel_cased也常發生,一下大寫一下小寫一下縮寫,除了自己看不爽外,想改又很吃力。越大的專案到後面想改都要有很大的決心才敢動手。

我覺得匈牙利命名法不錯(CamelCased),可惜多人不採用。不論如何,自己定義統一的命名規則,可以防止因為一個拚字的錯誤花了半個小時來找,也可說是提升工作效率的關鍵。

程式內文

變數 採用全小寫單名或加底線複名,變數只要懂意義就好,不要混淆即可,寫太長程式不好讀不會比較厲害:

  single, veriable_name

函數或方法    函數最好是以動詞開頭,使用這種型式和變數分開易於辨視,和系統的不一樣能一看就知道是自寫函數,不然像[1]一樣的建議中函數是寫成這樣 call_some_method(this_is_value1, this_is_value2) 寫的長不拉機的。因此我採用 camelcased 型式不加底線首字不大寫以動詞開頭

  function doSomeJobs(), function isUserExisted()

類別 採用首字大寫加底線或加上形識別類型型式:

  class Auth_model , class Auth

檔名 統一全小寫加底線,檔名還是有分大小寫:

  auth_model.php, mylibrary.py

樣版 樣版名我的使用習慣就是首字大寫用 camelcased 的型式:理由就是用習慣了而已:

  IndexRight.php

常數 全大寫加底線,這幾乎是國際慣例了,大家都這樣用

  ASS_HOLE, WHATTHEFA

 

資料庫

資料庫名 採用單名或加底線複名,全小寫:

  note, note_old

資料表名 採單名或加底線複名,全小寫,第一個部分是群組名,MYSQL對資料表有分大小寫

  aurh_role_mng ,其中auth是群組名

欄位名 採複名大小寫混用,因為MYSQL不分欄位的大小寫。如果是敘述性的用底線:

  column_name,  createdDT

  註:MySQL 限制資料表名稱只能有 64 個字元

 

網頁

CSS類別名 採單名,全小寫不加底線,最後一節為標籤類型:

  class="managediv" 或 class="shoptable"

id 採單名或加底線複名,全小寫:

  id="id_name", id="thisisabook"


 

結論

一、只用全小寫單名:CSS類別名

二、採用 camelcased 型式無底線,首字不大寫,以動詞開頭 function doSomeJobs():函數或方法

三、全大寫可加底線:常數

四、採用首字大寫加底線或首字大寫:類別

五、首字大寫用 camelcased 的型式:樣板

六、採複名大小寫混用:資料庫欄位名

其餘全是全小寫單名或加底線複名(single或veriable_name 型式)。
 

參考資料

[1] http://www.codeigniter.org.tw/user_guide/general/styleguide.html#class_and_method_naming


原文 2013-11-01 21:05:38

你可能感興趣的文章

看懂DSUB DVI HDMI USB等各式影音接頭 看懂DSUB DVI HDMI等各式影音接頭

中國的網路審查(資訊長城) 介紹中國的網路審查(簡字网络审查、資訊長城或防火長城)

Chrome的遠端桌面(遠桌)使用 Chrome 具有遠端桌面(遠桌),可以輕易的讓你連到或被連到遠端電腦

HTC手機資料移轉記錄 剛買一台新的HTC手機,想把舊機的資料移過來,超級簡單...

網路是平的?所以競爭來自四面八方! 在二十世紀末的時候,網際網路的出現改變了這個世界。但不表示你可以分一杯羹。

手動清除 Firefox, Chrome的DNS cache Firefox, Chrome上有別於系統的DNS cache,有時會造成使用者刷新到舊的網頁

移除google 的頁庫存檔--移除在google中保存的網頁資料 我的網頁或文件被google保存了,但我不想給別人下載要怎麼做?

台灣2019節慶國定假日 ics下載 找不到2019的假日檔,沒關係,我自己做一個

git 中的 git(git 次模組) 版本控制引擎git 中的 git(git 次模組) / git inside git/ git submodule

[Gigapixels] 世界最大的單張倫敦照片-3200億畫素 世界最大的單張倫敦照片-3200億畫素,從BT塔上拍攝。

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

為什麼要買長達二十年的保單? 為什麼要買長達二十年的保單?找一個可以說服我買二十年保單的理由。

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

SELinux 常用指令和檔案 在Redhat系列中,Centos5以後加入了selinux,他並沒有這麼可怕,不必每次看到Selinux ,就想把他

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

[札記] 2016.7~12月札記 札記,只是札記