..
剛到游戲公司那會(huì)室奏,記下的關(guān)于做好工作的感悟,叫 編程習(xí)慣
。還挺有意思,留個(gè)念想刨秆。
流程
總體設(shè)計(jì) -> 細(xì)節(jié)設(shè)計(jì) -> 流程圖示 -> 編碼 -> code_check -> running -> bugfix -> testing
生產(chǎn)環(huán)境
-
內(nèi)存爆炸
不能讓內(nèi)存有無(wú)限增長(zhǎng)的情況. 例如, 系統(tǒng)中有一個(gè)訂單列表
orders = []
, 用戶購(gòu)買時(shí)產(chǎn)生一個(gè)訂單信息order = {'ordid':1, 'good': 'coins15w'}
添加到訂單中orders.append(order)
. 當(dāng)用戶付完款, 完成訂單時(shí)再將這個(gè)order
從列表中移除.此時(shí), 如果只有購(gòu)買請(qǐng)求, 沒(méi)有完成訂單的操作, 意味著訂單列表只增不減. 即便單獨(dú)的
order
信息再小, 也能通過(guò)簡(jiǎn)單的腳本模擬購(gòu)買請(qǐng)求, 在短時(shí)間能將內(nèi)存撐爆. -
集中配置系統(tǒng)變量
從開發(fā)分支上線到生產(chǎn)環(huán)境時(shí), 通過(guò)一兩次簡(jiǎn)單的操作就能將代碼完全部署到線上.
第一步, 生成生產(chǎn)環(huán)境的配置信息 第二部, 執(zhí)行運(yùn)行腳本
開發(fā)環(huán)境的配置 1/2/3/4 獨(dú)立成文件, 而不是將多個(gè)環(huán)境的配置配置在同一個(gè)文件里. 互相影響泄露信息.
-
升級(jí)系統(tǒng)
版本迭代有可能影響持久化的數(shù)據(jù)表結(jié)構(gòu), 上線之前, 通過(guò)腳本將線上老的表數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成新版系統(tǒng)的結(jié)構(gòu).
升級(jí)前進(jìn)行數(shù)據(jù)文件備份
腳本需要有開始提示,結(jié)束提示,中間的進(jìn)度提示(防止代碼死循環(huán)而不知道).
那些未存入數(shù)據(jù)庫(kù)系統(tǒng)的, 線上的, 內(nèi)存中的, 臨時(shí)的數(shù)據(jù), 重要的, 不可刪除的. 新版的代碼中需小心處理. 或者先強(qiáng)行入庫(kù)之后, 再進(jìn)行迭代操作.
-
錢很重要, 數(shù)據(jù)很重要
涉及重要數(shù)據(jù)的過(guò)程都需要加日志.
危險(xiǎn)的操作,如清庫(kù),刪記錄,從日常接入用戶權(quán)限中移除,特定用戶執(zhí)行特定權(quán)限,執(zhí)行前給出二次確認(rèn)提示.
-
充分測(cè)試
盡量模擬真實(shí)環(huán)境的條件下測(cè)試, 1.主觀臆測(cè)很容易出錯(cuò), 2.越急越快越容易出錯(cuò), 3.盡早完成,盡早放入測(cè)試服,有充足測(cè)試時(shí)間; 另一方面,借助測(cè)試服進(jìn)行盲測(cè)
-
記錄日志
數(shù)據(jù)變動(dòng)部位的開始/結(jié)束需加入日志,至少變動(dòng)之后需要記錄