§ 字段定义
需求原型上,查询结果列表里有一列叫“删除状态”。程序员设计的表里与之对应定义了一个状态:delete_status varchar(16) 'NORMAL-未删除,DELETED-已删除'。
其实,当一个变量仅在两个值之间发生变动时,可以简化为是/否、0/1、Y/N这样的表示形式,我们的应用系统将会更美。本例可以是,deleted char(1) 'Y/N',或者delete_flag tinyint '1/0'。
学生管理列表 需求原型上有一列的列名叫“所属班级”,开发人员设计学生表结构时,就定义了一个字段:belonging_class_id。(班级表:class,主键:class_id)
设计方面要抓本质:这个字段名直接改成 class_id 就行了。
不要被这种“所属”字样迷惑,这是产品经理对用户体验方面的展示。否则,如果原型上叫“所在班级”,难道还要把字段名定义成“in_class_id"吗?
§ 程序设计
在一些涉及到规则配置的需求里,例如客户付款通道配置,既要支持按商户配置,又要支持为所有商户来一个默认配置。
我们程序怎么实现呢?
不用创建两个配置表,一个配置表就行了。表里的客户id字段,对于特定商户,那就是这个商户的id;对于所有商户,存一个约定的标记(例如:0或空串)就行了。
§ 产品经理说归说,我们得站在技术专业的角度来实现
客户系统里,有一个功能是,客户通过upload控件上传资质文件图片,文件控制在5M以内。技术层面,前端以文件流的方式调用后端接口,将文件上传到服务器,然后返回文件访问url,前端根据url展示缩略图。在测试阶段发现,当图片过大或网络慢时,会出现上传完的图片无法显示。产品经理要求图片必须正常显示,保证客户体验。结果,前端同学使用了轮询的方式,即在超时时间内没有返回url,则走超时重试。
恰好,某次生产事故,就因为这个“死循环”导致网络带宽耗尽,而影响了系统的正常使用。
原文参见我的博客:www.cnblogs.com/buguge/p/15…