2014-09-04 24 views
4

我來自強類型的世界,我想寫一些Lua代碼。我應該如何記錄什麼類型的東西? Lua本地人做什麼? Hungarian notation?還有別的嗎?在Lua中使用的文檔類型的約定是什麼?

例如:

local insert = function(what, where, offset) 

這是不可能一眼,告訴我們是否在談論字符串或表在這裏。

我應該做的

local sInsert = function(sWhat, sWhere, nOffset) 

-- string what, string where, number offset, return string 
local insert = function(what, where, offset) 

還是其他什麼東西?

那麼局部變量呢?表格條目怎麼樣(例如someThing.someProperty)?

+0

代碼風格通常由您的僱主口授。 – 2014-09-04 15:14:11

+0

以您的IDE支持其內容幫助和彈出幫助的方式記錄源代碼。 – 2014-09-04 16:53:31

+0

複雜的問題是參數通常是多態的。一個表鍵可以是除'nil'之外的任何類型。表格值可以是任何類型。一些函數支持某些參數的表或函數....你的'where'是一個潛在的情況。 – 2014-09-04 16:56:05

回答

3

欲瞭解社區(或特定社區)Lua風格的想法和觀點,請閱讀:LuaStyleGuide

最接近強制風格的將是LuaDoc所使用的格式,因爲它是高端項目(如LuaFileSystem)使用的相當流行的文檔生成器。

0

Lua只有七種類型。

這裏有一些公約(其中一些可能聽起來有點明顯;對不起):

  • 什麼這聽起來像一個字符串,應該是一個字符串:street_addressrequest_method。如果你不知道你可以添加_name(或任何其他後綴明確這是一個實質性的)它:method_name
  • 什麼這聽起來像一個數字,應該是一個數字:masstemperaturepercentage。如有疑問,請添加number,amount,coefficient或其他適合的值:number_of_children,user_id。名字ni通常給予數字。如果一個數字必須是正數或自然數,則在該函數的頂部進行斷言。
  • 布爾參數可以是形容詞(cold,dirty)或is_<adjective>is_wet,is_ready)。
  • 任何聽起來像動詞應該是一個函數:consume,check。如果您需要進一步說明,可以添加_function,_callback_fupdate_functionpost_callback。單個字母f經常代表一個功能。通常你應該只有一個參數類型的功能(建議把它放在最後)
  • 聽起來像一個集合的任何東西都應該是一個表格:children,。人們通常不會區分類似數組的表和類似字典的表,因爲兩者都可以使用pairs進行分析。如果您需要指定表是數組,則可以在名稱末尾添加_array_sequence。字母t通常表示表格。
  • 協程並不經常使用;您可以按照與功能相同的規則進行操作,也可以將_cor添加到其名稱中。
  • 任何值可以是nil
    • 如果它是一個可選的值,在函數的頂部初始化:options = options or {}
    • 如果它是一個強制性的價值,做出斷言(或返回錯誤):assert(name, "The name is mandatory")
相關問題