Re: [閒聊] Your Code Sucks

看板Soft_Job作者 (墳墓)時間14年前 (2011/08/24 09:46), 編輯推噓6(6019)
留言25則, 11人參與, 最新討論串3/3 (看更多)
※ 引述《iman00b (I'm a n00b)》之銘言: : : 所以,每當聽到有人看著別人的代碼說很爛時,我只會微微一笑,讓我想起我當年的天真 : 和盲目自信。的確,我以前堅信自己是個出色的開發人員,堅信知道每種算法的最優設計 : 。我很想念當時的自大,但是我很高興現在學到的這些理念,我知道,我唯一能鄙視的代 : 碼只能是我自己的代碼,鄙視的原因就是我不能使它變的更好。 : -- : → viper9709:推~~原本的人會那樣寫一定有它的理由~~ 08/23 23:22 老實說,這一篇我只有一半同意而已。 因為現實中的狀況,可能是寫出你手上這個程式的人,根本對程式設計、資料結構連最 基本的概念都沒有,然後第二手維護的人其實也不懂,到了你是第三手的時候,你發現 這程式真是他X的一整個莫名其妙。 舉例來說,當我看到我接手維護的 Java 程式出現了以下的狀況時,我實在找不到任何 『理由』來說服我自己這是合理的。 什麼狀況?!狀況一: public class CommonUtils { public void println(String s) { System.out.println(s); } } public class XXX extends CommonUtils { // ... } public class XXX extends CommonUtils { // ... } 是的,所有的類別都繼承了這個 CommonUtils,我真的不知道有什麼『理由』可以 說服我這樣做是『合理』的,唯一的解釋就是原本寫的人想偷懶,而且根本連最基 本的物件導向概念都沒有,就跑來寫 Java 程式了。 你說啊可能他對剛出來的 Java 還有新興的物件導向理論不熟啊(畢竟這個程式是 從 Java 1.4 時開始出現),但要來寫程式總得對基本的資料結構和其特性有些概 念吧? 我們的程式是做資料轉換的,所以經常會有批次處理的需求,而批次處理的時候, 需要給定兩個參數,一個是要匯入的 ID,一個是匯入的檔案來源目錄。 問題來了……請問,你要怎麼存這個批次處理的 (id, 來源目錄) 的列表? 答:LinkedHashMap<String, String>!! 靠!這不是擺明了你連 HashTable/HashMap 的概念是什麼都不曉得嗎?也就是說, 這隻程式在做批次處理的時候,你沒辦法連續匯入來自兩批不同的檔案到同一個 ID 中……你有看過只能處理一份資料的批次處理嗎……?!orz...OB 我唯一能想到的『理由』就是,他根本不知道 HashMap 是啥,只是看到這個東西 能夠存 key/value pair,不用自己刻一個就拿來用了,卻根本沒想過這東西本質 上就不適合拿來處理批次處理這樣的事情。 沒錯……原本的人會那要寫一定有他的理由,不過前提是原本的人是真的會寫程 式啊!>_< -- ~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走, 'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚…… // \\ ( 墳 墓 ) /( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】 ^`~'^ http://bone.twbbs.org.tw/blog 『那都是很好很好的,可我偏不喜歡。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.19.6

08/24 09:55, , 1F
相當認同。
08/24 09:55, 1F

08/24 10:43, , 2F
看不順眼 就順手改一改唄..
08/24 10:43, 2F

08/24 11:22, , 3F
key pair value, value改成自定的class不就可以了??
08/24 11:22, 3F

08/24 11:23, , 4F
value class是要用何種方式定義file path就看個人吧
08/24 11:23, 4F

08/24 11:24, , 5F
或是使用HashMultimap 不是也可以?
08/24 11:24, 5F

08/24 13:02, , 6F
同意~~~不過除非必要~我還是不會動手改別人已經可以用的東
08/24 13:02, 6F

08/24 13:03, , 7F
西~尤其是繼承來繼承去~整個架構亂成一團~有用物件導向比
08/24 13:03, 7F

08/24 13:03, , 8F
沒用還慘的情況下...有心改它真的是佛心來的...
08/24 13:03, 8F

08/24 14:12, , 9F
老闆: 只要會動的程式 就是好程式
08/24 14:12, 9F

08/24 14:12, , 10F
MIS: 效能不夠 是機器太慢
08/24 14:12, 10F

08/24 15:06, , 11F
我想說的是如果原本程式是key:String, value:String
08/24 15:06, 11F

08/24 15:08, , 12F
是否在實際上這樣的使用就足夠了,而不需要 HashMultimp
08/24 15:08, 12F

08/24 15:09, , 13F
當然好不好維護或是擴充,則是見仁見智, 如果需求萬年不變
08/24 15:09, 13F

08/24 15:10, , 14F
或許一開始是時程關係或是Schedule定義的不清楚所致
08/24 15:10, 14F

08/24 19:27, , 15F
原文有個重點是: 不要預設立場, 至於你提的第一點我大概猜得
08/24 19:27, 15F

08/24 19:28, , 16F
到理由: 保留重新導向的可能性
08/24 19:28, 16F

08/25 00:19, , 17F
看公司吧....以前我呆過一家號稱會訓練非本行的公司
08/25 00:19, 17F

08/25 00:20, , 18F
結果當然在學習期的時候寫的爛code自己都不想維護了
08/25 00:20, 18F

08/25 00:21, , 19F
待在這類公司的高手可能就會有像原po一樣的感覺
08/25 00:21, 19F

08/25 00:21, , 20F
不過這類的公司不一定是不賺錢的喔~
08/25 00:21, 20F

08/25 00:43, , 21F
Hi (揮手)
08/25 00:43, 21F

08/25 02:04, , 22F
推一個,我相信人性本惡,就是有人懶惰或沒用大腦寫
08/25 02:04, 22F

08/25 02:06, , 23F
我認為與其計較誰的code寫得好不好,不如去建立規範
08/25 02:06, 23F

08/25 13:24, , 24F
原po的意思是HashMap<ID, LinkedList<來源目錄>>嗎?
08/25 13:24, 24F

08/25 17:34, , 25F
不,就是單純的 HashMap<String, String>,你沒看錯…
08/25 17:34, 25F
文章代碼(AID): #1EL5WFtN (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1EL5WFtN (Soft_Job)