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

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

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

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

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