博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
少用数字来作为参数标识含义
阅读量:7046 次
发布时间:2019-06-28

本文共 1210 字,大约阅读时间需要 4 分钟。

 

 

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

 

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

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

 

转载地址:http://yazol.baihongyu.com/

你可能感兴趣的文章
如何把 Markdown 文件批量转换为 pdf?
查看>>
给信息安全爱好者的一封信
查看>>
swift 协议的写时拷贝
查看>>
为什么会出现微服务和分布式?
查看>>
SpringMVC源码分析3:DispatcherServlet的初始化与请求转发
查看>>
《当幸福来敲门》观后感
查看>>
Confluence 6 后台中的默认空间模板设置
查看>>
人工生命 1.0.0 版发布,第一个人工生命诞生
查看>>
SpringBlade 2.0.1 发布,兼容jdk11与openjdk,增加Saber代码生成功能
查看>>
商城系统 DBShop V1.3 Release 20190309 发布
查看>>
awk 金典去除原理解析
查看>>
burpsuit+天天模拟器(手机app数据包抓包改包)
查看>>
Javascript 创建对象方法的总结
查看>>
docker : 报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
查看>>
Hyper-V故障转移群集搭建(3)
查看>>
VMware下ubuntu上网设置(二)
查看>>
sqlplus的session下无法使用退格键的问题处理
查看>>
Centos7下部署本地的gitlab(CE版本)
查看>>
docker配置桥接网络
查看>>
PHP使用file_get_contents函数POST数据
查看>>