1. 程式人生 > >少用數字來作為參數標識含義

少用數字來作為參數標識含義

變化 什麽 如果 下使用 web 狀態 指定 調試 變量

數字很難標明業務含義,大腦難記憶,前端的溝通成本增加,傳錯數字後,數據則插錯表,調試定位困難,消耗了精力。

解決方案是: 避開數字標識。客戶端使用字符串為參數,告訴服務端,如微信的支付類型使用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難定位原因、增加誤解、耗費溝通時間。開發人員陷入到不必要的麻煩中去。

總之,有個原則,代碼中無論是函數、變量、類的命名,能準確表達業務含義的命名,就是好的命名。

少用數字來作為參數標識含義