终于知道为什么我们开发的时候要把用户当白痴了

2022-11-11 16:41:54 +08:00
 itechnology

最近在内部系统开发一个 Excel 导入的功能,用于给公司内部的运营人员导入历史数据,因为这个功能的使用频率不高,历史数据导完就不需要用了,领导决定用存储过程来处理,具体步骤就是先把 Excel 导入到一张临时表中,再在存储过程中将其保存的对应的表里。

产品跟运营人员确定好导入的模板之后,我就开干了,昨天提供了第一批 Excel 数据,这个时候问题来了:

1 、运营提供的 Excel 数据比模板多了一列,比如原本模板中是 ABCDE 五列,结果他们在中间插了一列,变成 ABCFDE

2 、运营提供的 Excel 数据的列的顺序跟模板的不一致,比如原本模板中的顺序是 ABCDE ,他们把顺序变成了 ACBED ;

3 、有些列是下拉选择的,运营提供的 Excel 数据中部分下拉的值跟模板不一致,比如模板中有个下拉值是“身份证”,运营给改成了“个人身份证”;

想想连公司内部人员都这样,普通用户估计更“白痴”了。

11060 次点击
所在节点    程序员
81 条回复
miaotaizi
2022-11-11 16:48:10 +08:00
那是你的使命
proxychains
2022-11-11 16:52:20 +08:00
IBM 的笔记本 CD 支架刚开始被很多用户当作咖啡杯支架用.
killmojo
2022-11-11 16:52:50 +08:00
你永远想不到用户有多神奇,为了不让用户修改格式,光填那几个单元格就可以,保护了工作表,设置了密码。
结果用户提交一个全新的文件,还嫌弃你保护文件,说“他还百度了怎么破解密码,最后没办法重新做了一个”。
最后实在没辙,弄在线 Excel ,在线填了直接保存。
edis0n0
2022-11-11 16:54:05 +08:00
@proxychains #2 这个也不是不可以,至少利用上了 lmao
aweffr28
2022-11-11 16:55:05 +08:00
我也有过类似的额需求,我选择用 python 做,python 处理字符串,写这种接近一次性代码比较方便= =

运营,HR ,行政之类的导入都接过,我只能说能按模板填直接导入不出错的真不多
preach
2022-11-11 16:55:09 +08:00
不管是产品(广义上的产品)还是开发都需要看看 “防呆” 这个关键词
seers
2022-11-11 16:56:56 +08:00
不要相信你的用户,处理 Excel 只取列头判断,所以多了少了无所谓,顺序更无所谓
aw2350
2022-11-11 16:57:02 +08:00
你不能用你自己的定视思维去理解用户,你自己做开发,你是知道这里面的逻辑,人家怎么知道列对应列?
万一人家以前用过列名匹配表列名的,哪怕调换 excel 的列顺序,人家一样可以成功导入
当你有问题打电话去咨询一些市政问题,或者淘宝客服,你信不信对面的人内心也会骂你 s13?
leavic
2022-11-11 16:57:17 +08:00
如果你的程序只能处理固定格式的数据,多一列、换个顺序、差几个字都能崩掉,那这样的程序到底有什么用?
aw2350
2022-11-11 16:59:46 +08:00
人最愚蠢的行为,莫不是以为自己最通透的,别人都是白痴
yuhangch
2022-11-11 17:01:01 +08:00
@leavic 模板准备好了,用户把两列数据调换了,还得用程序给它自动纠正过来?这成本也太高了
aw2350
2022-11-11 17:01:58 +08:00
@yuhangch 根据列名映射对应结构字段,难不成 还是 [0][1][2]下标去匹配?
aw2350
2022-11-11 17:04:23 +08:00
我理解的,这是一个很简单的程序,且用完就废弃,但是这种“简单”是建立在一种共识,一种约定之上的
起码你先和别人约定好种种规则,字段顺序 ,内容格式 等等等
往往,这种“简单”需要时间去达成上述的共识
buyan3303
2022-11-11 17:07:39 +08:00
原先我想要从自己公司里的数据库里导出数据,到自己本地搭建的 mysql ,
但是其 ERP 中的产品型号有:
Z540Y-150LB DN50|A216 WCB
Z540Y-150LB 2" WCB
ZA540Y-150(lb) 2"|A216 WCB
ZA540Y/13Cr-150(lb) 2"|A216 WCB
闸阀 ZA540Y/13Cr-150(lb) 2"|A216 WCB
等多种非同一型号

这个是因为当时 ERP 设计初期,就没考虑过数据统一,且公司后续又更迭了几次型号编制导致的。
技术渣,用 python 写了一个非函数式的程序,后面直接不想写了。
itechnology
2022-11-11 17:07:42 +08:00
@leavic 看我描述的内容,我是通过在数据库处理的,用 MySQL 的“LOAD DATA LOCAL INFILE”来导入临时表,这就意味着提供的 Excel 的列顺序必须与模板保持一致,否则数据就会错乱。因为这个是一次性的功能,领导觉得没必要在代码中专门写一个功能去处理。
itechnology
2022-11-11 17:11:00 +08:00
@aw2350 各种规则、字段顺序和内容格式都已经由产品跟运营约定好了,但问题是运营不严格按照这个来。
tool2d
2022-11-11 17:11:07 +08:00
你发个贴的时间,表头兼容的代码都写完了。
krixaar
2022-11-11 17:14:26 +08:00
责任转嫁啊,提供一个模板,随便简单写个导入页面,不按模板填导不进去,多加几个判断就行。数据填错了最终报表数据不对?怪我咯你自己导的。
aw2350
2022-11-11 17:14:32 +08:00
@itechnology 加一个下载链接,下载模板用的,进入页面之前提示,只能用本页面提供的模板,其他的导入无效!
dudubaba
2022-11-11 17:15:22 +08:00
有界面吗?有界面的话可以给前端做,处理好数据再导入后端,什么格式错误啊数据错误啊通通报错,然后再给个链接放下载模版,然后他们失败了肯定老老实实改了(异常是前端兄弟们可能会被骂。。。)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/894527

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX