少用数字来作为参数标识含义

 

 

数字很难标明业务含义,大脑难记忆,前端的沟通成本增加,传错数字后,数据则插错表,调试定位困难,消耗了精力。

 

解决方案是:   避开数字标识。客户端使用字符串为参数,告诉服务端,如微信的支付类型使用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难定位原因、增加误解、耗费沟通时间。开发人员陷入到不必要的麻烦中去。

 总之,有个原则,代码中无论是函数、变量、类的命名,能准确表达业务含义的命名,就是好的命名。

 

posted @ 2018-01-20 08:19  王滔  阅读(1516)  评论(0编辑  收藏  举报