W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
開發(fā)中,大量使用lua,暫時根據(jù)當前狀況,總結相對而言較好的規(guī)范,在多人協(xié)作中可以更好的開發(fā)、交流。
介紹
該文檔旨在為使用lua編寫應用程序建立編碼指南。
制訂編碼規(guī)范的目的:
切記:善用調(diào)試器。
1.所有l(wèi)ua文件命名時使用小寫字母、下劃線
2.類名、變量名盡可能使用有意義的英文,類名使用帕斯卡命名法,變量名使用駱駝式命名法
3.常量、消息號定義時用大寫,單詞間 _ 分割 eg:KIND_PET_FOOD
4.枚舉值定義時 加前綴 enum_
5. 函數(shù)名使用駱駝式命名法
注:
駱駝式命名法:第一個單字以小寫字母開始;第二個單字的首字母大寫或每一個單字的首字母都采用大寫字母
帕斯卡命名法:和駱駝命名法很像,只有一點區(qū)別,就是首字母要大寫。(單字之間不以空格斷開或連接號)
1. 文件開頭加上此文件的功能、職責的簡要描述;
如下:
--
-- Author: Feng
-- Date: XXXX-XX-XX
-- 功能描述
每個文件都加module 限定詞; 導入的模塊都加 local 限定詞;或者使用(module(..., package.seeall)),這樣便于進行熱更新
2. 所有提供外部函數(shù)都加如下格式的注釋。
例如:
--此函數(shù)檢測是否可以從A(oldx, oldy)點走到B點(newx, newy)
--@param oldx 當前所在點x
--@param oldy 當前所在點y
--@param newx 目標點x
--@param newy 目標點y
--@return 若可以到達,返回true;否則返回false
function Object:checkBar(oldx, oldy, newx, newy)
…
end
3. 函數(shù)與函數(shù)間、以及一些定義之間加上空行。
4. 函數(shù)內(nèi)的臨時變量、文件內(nèi)的局部函數(shù)都加上 local 限定詞
5. 函數(shù)的行數(shù)過長(大于100行)時,盡量拆分為多個子函數(shù);函數(shù)中一些晦澀的部分,一定要加上注釋。
6. 短小的注釋使用 --; 較長的注釋使用 --[[ ]]
7. assert函數(shù)開銷不小,請慎用。
8. Lua類設計時,用元表來實現(xiàn)oop。
不要直接增加函數(shù)成員,因為直接增加函數(shù)成員會導致內(nèi)存增加并且在jit下執(zhí)行效率和用元表方式無差異。
9. 文件使用UTF8格式
1. 使用空行
在下述情況下使用單行的空白行來分隔:
1)在方法之間
2)在方法內(nèi)部代碼的邏輯段落小節(jié)之間
3)在注釋行之前
注釋之前增加一行或者多行空行。
2.使用空格符
除正常的成分之間以空格符分隔名(如數(shù)據(jù)類型和變量名之間),在下述情況下也應使用一個空格符來分隔:
1)運算符和運算符之間,如: c = a + b;
2)在參數(shù)列表中的逗號后面,如:
function m1(year, month)
end
3) 在for語句時,如:
for k, v in pairs(t) do
end
4)在下列情況下不要使用空格。
例如:
函數(shù)定義時:
function test1(a)
end
不要這樣:
function test1( a )
end
函數(shù)調(diào)用時:
test1(3)
不要這樣:
test1( 3 )
不要如此的原因在于:
a).容易忘記相關空格,導致風格不統(tǒng)一,這樣還不如不加;
b).lua解析語法時是采用空格等分割來解析的,某些情況下,若不小心加空格會導致非預期的結果。
3. 使用換行符
不建議在一行中寫多條語句,一條語句的長度一般超過了80個字符時,應該換行
4. 使用小括號
可以使用小括號來強行規(guī)定運算順序
5. 使用縮進
在下述情況下應用縮進
1)類中的成分
2)方法體或語句塊中的成分
3)換行時的非起始行
縮減量一般為在上一級成分的基礎上跑到下一個制表位
1.代碼中使用的一些函數(shù)盡可能在文件開頭或者當前局部環(huán)境中加local前綴重新定義下。
例如:
local assert = assert
2.盡量減少表中的成員是另一個表的引用。 考慮lua的垃圾收集機制、內(nèi)存泄露等。
3.高級特性盡可能不用
4.寫代碼時盡可能寫的簡單,考慮性能時先做好推斷,看看能提升多少,增加的復雜度以及造成的代碼晦澀有多嚴重,然后再決定如何做
5.加載的xml數(shù)據(jù)表,盡可能的做好數(shù)據(jù)校驗,若校驗失敗,要出發(fā)斷言,使服務器無法啟動;不要等出錯時,回過頭來檢查是數(shù)據(jù)表問題還是邏輯問題。
6.出錯時,記錄好錯誤日志。
有的函數(shù)開銷比較大,而調(diào)用的頻率很低,那么可以不對他做優(yōu)化;
反之,有的函數(shù)開銷較小,但是調(diào)用的頻率很高,從如何降低調(diào)用頻率以及減少函數(shù)開銷兩個角度去思考,然后定下優(yōu)化方案
提交代碼之前,去掉或者注釋掉無關的代碼; 測試下保證服務器可以正確啟動。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: