笑死人
一看就是沒有reference觀念的菜雞
immutable string就是要阻止你這種雷包寫出糞code啦
今天要是有人很衰小, 要跟你一起開發醫院的資訊系統
然後又很衰小的, 開發語言的string又是mutable的
那會發生什麼事情呢?
假設今天在開發掛號系統好了
你負責的是診間門口叫號機的程式
好不容易按照需求文件的設計把程式都完成了
不過需求上有一項"因應個資法, 病患姓名需要隱碼"
所以你就很直覺的寫下
patient.fullname[1] = "○"
好聰明好直覺喔
這樣病患的姓名就會顯示成"王○明", "張○華"了呢
然後就會發現
只要病患資料有經過你寫的程式處理過
姓名全部都變成"王○明", "張○華"了
因為你直接從病患的物件裡面取出病患姓名string的reference
然後在reference不變的情況下直接把string的value改掉
下場就是所有用到同一個reference的程式都會被你影響到
最後來談談什麼叫做workaround
寫出上面那種糞code
開除你叫做解決問題
公司不開除你
逼得大家以後pass reference給你的時候都要先自己deep copy一次
這才有資格叫workaround
--
╔═◢ ◣═╦╦═════╦═════╗一看就是沒有reference觀念的菜雞
immutable string就是要阻止你這種雷包寫出糞code啦
今天要是有人很衰小, 要跟你一起開發醫院的資訊系統
然後又很衰小的, 開發語言的string又是mutable的
那會發生什麼事情呢?
假設今天在開發掛號系統好了
你負責的是診間門口叫號機的程式
好不容易按照需求文件的設計把程式都完成了
不過需求上有一項"因應個資法, 病患姓名需要隱碼"
所以你就很直覺的寫下
patient.fullname[1] = "○"
好聰明好直覺喔
這樣病患的姓名就會顯示成"王○明", "張○華"了呢
然後就會發現
只要病患資料有經過你寫的程式處理過
姓名全部都變成"王○明", "張○華"了
因為你直接從病患的物件裡面取出病患姓名string的reference
然後在reference不變的情況下直接把string的value改掉
下場就是所有用到同一個reference的程式都會被你影響到
最後來談談什麼叫做workaround
寫出上面那種糞code
開除你叫做解決問題
公司不開除你
逼得大家以後pass reference給你的時候都要先自己deep copy一次
這才有資格叫workaround
--
║
╠╣
飛鳥ももこ╠═╗ ║
║ ▇ ▇ ║
◥
︺█◤
◥╠╣
Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝--