※ 引述《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