後端系統開發之檢查意識
生活中要有常識意識,行走在外要有交通安全意識,競技遊戲中要有參戰和逃命意識。軟件開發作為一項極易踩坑而且犯錯成本很高的工作,一定要有強烈的檢查意識。我在工作中發現,檢查意識能帶來很多明顯的好處:
檢查代碼可以加快開發完成時間。大型的C++工程中代碼編譯速度很慢,短則幾十秒,長則十幾分鐘。因此寫完代碼就直接編譯是非常錯誤的選擇,應該首先由開發者檢查代碼,解決顯而易見的錯誤,然後再進行編譯。理想的情況是我們開發的代碼可以一次編譯通過,做到這點其實不難,只需保證有以下的檢查意識:
(1)寫完一行代碼後立即回過頭檢查這行代碼。
(2)推而廣之,寫完一段代碼、一個函數、一個類、一個源碼文件後都應先檢查,再做其他工作。
(3)腦海裏有一個檢查依賴意識,例如用到的類屬於哪個名字空間,需要包含哪些頭文件,BUILD或Makefile需要如何修改等。
有了以上檢查意識後,可以顯著提高開發效率,同時增強編程信心。
檢查命令可以避免犯錯。相信很多人都經歷過微信上消息誤發送、電腦上文件誤刪除這樣的事情,手快只是借口,沒有檢查核對才是根本原因。作為後端系統開發者,沒有經歷過"rm -fr *"的人生是不完整的,但是在同一塊石頭上絆倒兩次是可恥的。
不久前一名順豐工程師因為操作不當,誤刪線上數據庫被公司開除,在軟件開發行業,犯錯代價是很昂貴的,前人用血淚踩過的坑,我們不應重蹈覆轍。因此我們在執行拷貝、修改、刪除等命令時一定要小心,檢查一下沒有任何壞處,每次只多花幾秒鐘時間,保護的可是我們整整幾十年的職業生涯。
檢查日誌可以排查明顯的錯誤問題。程序運行結果與預期不符時,檢查ERROR日誌總是一個很好的習慣。ERROR日誌可以幫我們快速排查問題,例如配置缺失、參數不正確等。(如果沒有ERROR日誌,這時就需要通過gdb設置斷點,結合代碼進行調試了。ERROR日誌和gdb一直都是最基礎、最有效的排查問題手段)
通過上線檢查清單(Checklist)可以快速發現系統問題。當某個功能點上線時,難免會對系統帶來未知影響。我們可以通過設置檢查清單來把這種未知影響降到最低。上線檢查清單不拘於形式,可以是簡單的電子表格、堆砌的關鍵詞列表等,內容應盡量全面,最好涵蓋本次上線會影響的每個具體功能點。通過Checklist我們能夠對上線的效果做到心中有數,減少不必要的擔憂,增強開發信心。
InfoQ上有一篇很妙的文章叫《使用檢查清單組織軟件開發流程》,詳細闡述了檢查清單的好處和高級玩法。其實很多軟件公司和團隊都已經在這樣做了,只是在應用深度和廣度上有些差別。對於開發者人員,有這樣的檢查清單意識可以讓你很快獲得“考慮事情周全的老司機”榮譽稱號。當然這只是個稱號而已,千萬別真的相信,因為BUG會像程咬金一樣突然從半路上殺出,分分鐘把臉打。
一句話總結:檢查意識就是讓自己學會“慢下來”,帶著思考去行動,因為欲速則不達。
金句分享
I spent my whole life trying not to be careless. Women and children can be careless. But not men.
我費了一生的精力,讓自己變得十分謹慎。女人和小孩能夠粗心大意,但男人不行。
——出自美國經典電影《教父》
解讀:諸葛一生唯謹慎。
後端系統開發之檢查意識