作者gasbomb (虚空雷神兽)
看板Soft_Job
标题Re: [讨论] 遇到问题就workaround真的好吗?
时间Fri Dec 3 13:50:02 2021
※ 引述《applebg (Malicious Racist)》之铭言:
笑死人
一看就是没有reference观念的菜鸡
immutable string就是要阻止你这种雷包写出粪code啦
今天要是有人很衰小, 要跟你一起开发医院的资讯系统
然後又很衰小的, 开发语言的string又是mutable的
那会发生什麽事情呢?
假设今天在开发挂号系统好了
你负责的是诊间门口叫号机的程式
好不容易按照需求文件的设计把程式都完成了
不过需求上有一项"因应个资法, 病患姓名需要隐码"
所以你就很直觉的写下
patient.fullname[1] = "○"
好聪明好直觉喔
这样病患的姓名就会显示成"王○明", "张○华"了呢
然後就会发现
只要病患资料有经过你写的程式处理过
姓名全部都变成"王○明", "张○华"了
因为你直接从病患的物件里面取出病患姓名string的reference
然後在reference不变的情况下直接把string的value改掉
下场就是所有用到同一个reference的程式都会被你影响到
最後来谈谈什麽叫做workaround
写出上面那种粪code
开除你叫做解决问题
公司不开除你
逼得大家以後pass reference给你的时候都要先自己deep copy一次
这才有资格叫workaround
--
╔═◢ ◣═╦╦═════╦═════╗
║
◤◤◤ ◥ ╠╣
飞鸟ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║
◤ ◥
︺█◤
◥╠╣
Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.216.106 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1638510605.A.DCB.html
1F:推 masturbateee: 真正的「解决不了问题就解决制造问题的人」 12/03 13:54
2F:推 tbpfs: 你认真了,网路查一下这个ID,就知道是废文产生机 12/03 13:55
4F:→ tbpfs: 然後他应该也看不懂你在写什麽 12/03 13:56
5F:推 nh60211as: 别这麽火爆 12/03 13:57
6F:推 loadingN: 我觉得你的例子很好 12/03 14:14
7F:推 dati: 你举的例子真超好,但粗暴语言 DUCK不必 12/03 14:18
8F:推 bill0205: 你干嘛认真XDD 12/03 14:22
9F:→ airtsubasa: 这例子不是仅在view且display做替换就好? 12/03 14:34
10F:→ Firstshadow: 好好笑== 不过例子就是鲜明实在点好 12/03 15:55
(づ′・ω・)づ 你的推文怎麽没有这个了?
※ 编辑: gasbomb (1.34.216.106 台湾), 12/03/2021 16:11:42
11F:→ Firstshadow: 在Job版要专业一点ㄚ 对ㄚ== 12/03 16:20
12F:→ Firstshadow: (づ′・ω・)づ .. 12/03 16:23
13F:推 sniper2824: 为什麽要回废文 这人就是来闹的而已 12/03 17:03
14F:推 DarkIllusion: workaround 的例子举得很好 满分 12/03 17:05
15F:推 Nonegrame: 笑死 我要看到血流成河 12/03 17:26
16F:推 ricky155030: 推你的workaround 12/03 18:01
17F:推 Raymond0710: XD 废文也能吊出认真文 好例子给推 12/03 18:38
18F:推 VF84: 他要是去写 Rust,大概会想直接登出人生 www 12/03 18:54
19F:推 andy831020: 赞赞赞 12/03 19:07
20F:推 argc: 好例子 12/03 19:30
21F:推 BigCockman: 最後一段XD 12/03 19:53
22F:推 zero11995: 哈哈哈哈哈 12/03 20:14
23F:→ superpandal: 例子很好??? 这是人的问题吧 应该要有自我要求写出好 12/03 20:56
24F:→ superpandal: code 12/03 20:56
25F:→ superpandal: python就是这样动态语言黑魔法消失了 12/03 20:57
26F:→ superpandal: 一个语言不会因为有了规范就不会被人写成一驼屎 12/03 21:06
27F:推 lturtsamuel: 有ㄚ 如果你用rust不可变引用传进去看你怎麽改 12/03 22:26
28F:→ lturtsamuel: 不像c强制转型一下就好了 codereview看起来也不明显 12/03 22:27
29F:推 viper9709: 推这篇 12/03 22:48
30F:推 jhjhs33504: 这例子破绽其实一样没分是get还set实务上语言规范会挡 12/03 23:07
31F:推 Lhmstu: 写实workaround 12/04 08:52
32F:推 ADEMAIN: 笑死 12/04 08:54
33F:推 rog43: 你好凶喔 但是我喜欢 12/04 09:14
34F:推 kkes0001: 凶 12/04 12:15
35F:推 sjensen: 推例子 12/04 12:39
36F:推 vi000246: XDDDDDDD 12/04 13:54
37F:推 charliebitme: 好凶lol 真的人如其名gasbomb 12/05 00:31
38F:推 claymath: 好派 12/05 04:46
39F:推 a731977: 推 12/05 17:33
40F:推 ftrhalcyon: 专业举例 12/05 20:20
41F:→ cha122977: Workaround满分 12/05 22:10
42F:推 GTX9080: 好凶 但我喜欢XD 12/06 01:11
43F:推 amiwry: 举例很好,这阵子也被类似事情雷到,哎 12/06 12:18
44F:→ superpandal: 引用也很常见 12/06 21:35
45F:→ shooter555: 这只是套用进最差的使用情况 12/07 09:26
46F:→ shooter555: 在functional的程式设计中 不改动原值 确保重复执行某 12/07 09:29
47F:→ shooter555: func所得的值是相同 但OOP里面没这麽强调的情况 改动 12/07 09:31
48F:→ shooter555: 原值是常见的作法 12/07 09:31
49F:→ shooter555: 另外一方面 改动原值可以不用重复的挖取记忆体 12/07 09:32
50F:→ shooter555: 以此篇例子不管有没有字串有没有保护 解法应该都不是 12/07 09:40
51F:→ shooter555: 改动原本字串 原本的名子字串只有在真的改名的时候才 12/07 09:41
52F:→ shooter555: 会修改 12/07 09:41
53F:→ flash5408: 这种code review 跟 test都没抓出来是整个公司的问题 12/08 17:19
54F:→ flash5408: 吧 12/08 17:19
55F:推 MartinJ40: 呛 我喜欢 12/08 18:06
56F:推 Jonny5: 笑死 12/30 18:34