少用數字來作為引數標識含義
數字很難標明業務含義,大腦難記憶,前端的溝通成本增加,傳錯數字後,資料則插錯表,除錯定位困難,消耗了精力。
解決方案是: 避開數字標識。客戶端使用字串為引數,告訴服務端,如微信的支付型別使用trade_type=JSAPI|MWEB分別表示公眾號支付和h5支付。這裡若使用數字,確實難以理解業務意義。淘寶開放給商家的api查詢指定訂單狀態,使用的為字串status=WAIT_BUYER_PAY|WAIT_SELLER_SEND_GOODS。資料庫儲存的是數字,服務端做了一層轉換成數字的操作。
http://open.taobao.com/docs/doc.htm?articleId=102856&docType=1&treeId=1
交易狀態
-
WAIT_BUYER_PAY:等待買家付款
-
WAIT_SELLER_SEND_GOODS:等待賣家發貨
-
SELLER_CONSIGNED_PART:賣家部分發貨
-
WAIT_BUYER_CONFIRM_GOODS:等待買家確認收貨
-
TRADE_BUYER_SIGNED:買家已簽收(貨到付款專用)
-
TRADE_FINISHED:交易成功
-
TRADE_CLOSED:交易關閉
-
TRADE_CLOSED_BY_TAOBAO:交易被淘寶關閉
-
TRADE_NO_CREATE_PAY:沒有建立外部交易(支付寶交易)
-
WAIT_PRE_AUTH_CONFIRM:餘額寶0元購合約中
-
PAY_PENDING:外卡支付付款確認中
-
ALL_WAIT_PAY:所有買家未付款的交易(包含:WAIT_BUYER_PAY、TRADE_NO_CREATE_PAY)
-
ALL_CLOSED:所有關閉的交易(包含:TRADE_CLOSED、TRADE_CLOSED_BY_TAOBAO)
-
PAID_FORBID_CONSIGN,該狀態代表訂單已付款但是處於禁止發貨狀態。
什麼情況下使用數字標識?
只有兩種狀態,0和1,開和關,容易使用數字來表示,超過2種,難記住數字代表的含義了。即便只有兩種狀態,使用字串也比數字更加容易理解業務意義。
如使用on來代表開啟,使用off來代表關閉。非常明確。若使用1和0來標識,1到底是刪除還是不刪除,如果沒有註釋說明,需要去猜測,每個人設計習慣不一樣,增加誤解。
給外部看使用字元。而資料庫儲存,使用數字儲存
資料庫之所以儲存數字,有一些好處:
- 數字減少儲存空間,空間減少,表體積越小,效能越好。
- 數字的查詢效能更好:做比較判斷和範圍篩選)
- 可以靈活適應變化。以後需求改變了,轉成任意文字顯示,做數字到文字之間的對映,會很方便。如果使用字串儲存
在這方面,踩過一些坑,如程式碼調用出錯、出現bug難定位原因、增加誤解、耗費溝通時間。開發人員陷入到不必要的麻煩中去。