Re: [閒聊] 神奇程式

作者: SuicideComet (|)   2022-08-26 18:16:27
想一下還是貼主管的程式出來給大家笑好了
反正被抓到就辭職==
最近在寫銀行系統 接一種叫做SWIFT電文的東西
就是國際匯款通用的格式
但問題是裡面很多欄位然後長得很畸形
舊版SWIFT是純字串而非XML之類的東西
然後欄位很自由 可以選擇性放
可以無限換行 可能同個欄位有三、四種格式 不同格式放的資料會不同意義
所以變成文字要自己抓
自己照著寫得很精簡的官方手冊解析
解錯你家的事
內容可能像這樣
:21:blablabla8943
:35:peko
miko
teetee/
每個標籤是 :數字: 開頭
所以通常會說
「電文裡面21欄位的內容是..」這樣
之前我主管有叫我寫這類東西
也寫出來了
不過最近她又自己寫了一個
https://i.imgur.com/Uqgj2t3.png
總之看起來是把電文完整存著 (this.message)
要用到欄位時呼叫getTag21() 之類的
然後get內部就會呼叫上圖這種函數
在整個電文裏面尋找 :tagNo: 開頭
然後把後面的字串切割丟回
尋找的方式是用 String.indexOf()
也就是從頭開始搜尋字串直到找到指定的欄位為止 O(n)
這個行為每次get會呼叫 一個欄位可能在程式前後呼叫多次
並且每個電文可能數十個欄位
然後每天下來大概幾千、甚至上萬個電文要處理
接著找到之後做substring
然後再次用 indexOf 找到下一個換行符號
並且做 substring
每種電文格式
每個欄位的get都是類似這樣寫
看了很想開幹
我領junior的薪水 教三個跟我領一樣薪水的新人
然後主管領高薪 讓我看這種code
可是人家是主管 也不方便吐槽
只是覺得不吐不快==
之前講那個 DB Lock 土法煉鋼的想法
也是他去搞出來的
就覺得很累 到底在幹嘛
甲方講說架構要用微服務
測都沒測就開始吐槽 這個架構一定很慢 每個服務之間都要call 來call去
我還想說薑還是老的辣 他們應該有更好解法
結果自己寫的code長這樣
然後解決 DB Lock 的方法是自己重新造輪子 做一個沒保證性的Lock出來
事倍功半
接著在學寫 user story 以便之後開始開發
裡面要寫單元測試 整合測試之類的
他說我們以前單元測試就是一整支業務功能的交易程式 跑測試
(雖然我在這公司待的上一個案子根本沒有測試
 現在絕讚開發地獄中)
然後整合測試是整個系統 業務模組之間測試
所以要改 user story 裡面的名稱
避免混淆
幹 他說的那種整支交易程式
包括從DB撈資料 業務邏輯
等於controller service repostitory 全部一起
這樣說是單元測試
擺明就以前名詞錯了 還要繼續沿用
以後被甲方問勒 或是到下個案子 下下個案子 
還是要用偏離常識的名詞嗎
媽的
這案子甲方有特別買課程 然後找我們一起上
學微服務 TDD agile之類的
叫我留下來也是說上這個課可以學到很多ㄚ 對ㄚ
結果上課期間整天發牢騷說講師上得不好
上完學了很多
接著開始把學到的東西導入以前至今的陋習
繼續寫四不像的東西
幹...
到底為什麼活著這麼智障
阿共仔可不可以趕快按按鈕了
瞄準我家直接炸一發
我早點解脫 看能不能去異世界
不求幹巨乳女人
能自己安安靜靜住在山野裡面舒適自在生活
不用面對這些幹爛事就好了
作者: Satoman (沙陀曼)   2022-08-26 18:17:00
在山野生活現在就行吧 ==
作者: rockyao   2022-08-26 18:17:00
挖靠 你也太強
作者: Jaka (Jaka)   2022-08-26 18:18:00
一定要吐 因為太爛了 你不反應最後你會被害死這種效率根本智障 你的客戶會反應效能太差 10筆資料都做不完為什麼不用hashmap呢
作者: SuicideComet (|)   2022-08-26 18:21:00
連hashmap都不用 一個電文一個class 電文欄位設成參數就好了可能這樣可以讓系統看起來做比較多事

Links booklink

Contact Us: admin [ a t ] ucptt.com