zoukankan      html  css  js  c++  java
  • 少用数字来作为参数标识含义

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

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

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

  • 相关阅读:
    942. 增减字符串匹配
    116. 填充每个节点的下一个右侧节点指针
    剑指 Offer 35. 复杂链表的复制
    实验排序
    543. 二叉树的直径
    面试题 08.08. 有重复字符串的排列组合
    微信开发者工具
    打印机链接
    图片上下左右居中
    学习 视频网站
  • 原文地址:https://www.cnblogs.com/wangtao_20/p/8319813.html
Copyright © 2011-2022 走看看