怎麼加少lua程序debug



錯漏百出的程序,必定會影響一個程序員的聲譽,得不到別人的信任,別人也不會讓你負責重要的工作,也會對程序員的心理造成影響。
開始閱讀這篇文章時,請記住一點,一個程序員最重要的工作不是寫代碼,不是測試程序結構,而是邏輯結構設計和邏輯流圖。
一、設計階段
    設計階段一定要將整個邏輯思考清楚,只要有一點沒有清楚,都不能開始編寫代碼,做到成竹於胸,邏輯要清晰,工整流暢。設計階段主要是輸入數據類型,邏輯數據流圖和數據返回,數據的每個狀態都有爛熟於心,只有這樣才能開始代碼的編寫。千萬不要拿到需求就開始編寫代碼,邊寫代碼,邊寫邏輯,寫好了在回過頭來重構。這樣很容易出錯。
    
二、代碼階段
One>> 變量和數據配置
當使用到table存儲數據時,儘量使用宏變量,這樣方便以後需求的擴展
local _attr = {}
_attr[1] = "GOOGLE"
_attr[2] = "BAIDU"

這樣直接使用數字的索引會在以後產生很多問題,如果改爲
_MACO = {
GOOGLE = "GOOGLE",
BAIDU = "BAIDU",
}
_attr[_MACO.GOOGLE] = "GOOGLE"
_attr[_MACO.BAIDU] = "BAIDU"

Two>> 使用統一的函數接口,具有相似功能模塊合併
使用統一的函數接口的好處是方便別人閱讀程序,和便於修改程序,因爲數據集中
比如有兩個函數,GetName和GetAge
function GetName(char_id)
    return char_id.name
end

function GetAage(char_id)
    return char_id.age
end
函數這樣處理不是不可以,但是當模塊變大後,會產生很多接口,修改起來浪費精力,這樣的接口是可以集成爲一個函數GetAttr
function GetAttr(char_id,attr_type)
    if attr_type == "name"
        return char_id.name
    elseif attr_type == "age"
        return char_id.age
    end
end

Three>>儘量使用單值返回,避免多值返回,多值每個值的語義不一樣,外部調用很容易出錯,比如
function GetMoney(char_id)
    local total_money = BandCount(char_id)
    if total_money < 0 then
        local e_code = 60014              --錯誤碼
        return e_code
    end
    return toal_money,e_code              --金錢,錯誤碼
end
local my_money = GetMoney(id) 這樣的函數是爲非常危險的,因爲將錯誤碼當成金錢,返回值的語義改變了

Thour>>因爲lua語言沒有拼寫錯誤檢測的,在書寫變量函數時,一定要小心謹慎

Five>>儘量使用local變量,避免刪除造成語義改變

三、測試階段
當完成一個功能,先不要急着測試,首先要做的是在邏輯上講程序走一遍,發現沒有拼寫錯誤、邏輯錯誤、語法錯誤、語義錯誤時;才進行進行單元測試,單元測試時,將邏輯處理涉及到情況進行詳細的分類,再按類別輸入測試數據。測試永遠是程序最後一個動作,而最多的是邏輯思考。永遠要記住一條,世上沒有完全的測試,測試只能檢測到98%已經算好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章