[閒聊] Your Code Sucks

看板Soft_Job作者 (I'm a n00b)時間14年前 (2011/08/23 11:29), 編輯推噓7(706)
留言13則, 11人參與, 最新討論串1/3 (看更多)
看版主一直在分享好文,那我也來分享一下好了, 這篇很久以前朋友傳給我看的,當時我看的是原文, 剛剛幫忙找一下中譯版本,果然還真有人翻譯了。 原文: http://www.girldeveloper.com/2010/07/your-code-sucks.html 中譯: http://www.aqee.net/your-code-sucks/ 幫轉繁: 你的代碼寫的很爛 我有一個很熟的朋友,他現在忙的不可開交。他手上有一大堆沒有完成的合同,而且一個 跟他一起開發的助手也離他而去。於是,在三個大客戶的催命鬼時的督促下,他已經連續 好幾個星期沒休息了。 其中有個客戶跟他討論他給這個客戶做的iPad應用程序,客戶告訴他「我們花錢雇了另外 一個程序員來審查你的代碼,他說你的代碼寫的很爛。」 當他告訴我這個故事時,我只是微微一笑,想起了我以前是怎麼唾棄別人的代碼的。當我 剛開始編程時,我看到過一段程序,我認為那是毋庸置疑的寫的很爛的,我刪掉了那段代 碼,用自己認為更好的方面重新寫了一遍。當我變成的成熟後,我回頭再看,發現我所刪 掉的那段代碼其實是用了一個很好的設計模式,而我重寫的確是醜陋無比。 我就這樣被上了一課。 之後的日子裡,我經常會遇到我認為是醜的不能再醜的代碼。儘管如此,我也不通篇否定 它們了,我只會在其中找一些特別的無法容忍的部分重新編寫。可10次中有9次,當我快 要完成時,我發現了一個問題使我不得不對自己說「哦,怪不得他們要寫成這樣了」,然 後把代碼恢復成原樣,或也使用同樣「醜的不能再醜」方式完成它。 現在我變的更成熟了,我可以充滿自信的告訴你,我再也不會看著別人編的代碼說「哦, 這代碼很爛」了。我知道,在沒有瞭解整個程序的解決方案之前,你不可能就那麼輕易的 判斷代碼的好和壞。真的,有時候它看起來很傻,或完成的不好,或沒有文檔標註(我的 意思是自我註釋),然而,你根本就不可能知道程序員在寫這段代碼時腦袋裡是怎麼思考 的。更多的情況是,他們要選擇這樣做是有一定的理由的,除非去深入的研究它們,你不 可能再有其他簡單快速的方法來理解程序的上下文環境。 所以,每當聽到有人看著別人的代碼說很爛時,我只會微微一笑,讓我想起我當年的天真 和盲目自信。的確,我以前堅信自己是個出色的開發人員,堅信知道每種算法的最優設計 。我很想念當時的自大,但是我很高興現在學到的這些理念,我知道,我唯一能鄙視的代 碼只能是我自己的代碼,鄙視的原因就是我不能使它變的更好。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.64.29.220 ※ 編輯: iman00b 來自: 42.64.29.220 (08/23 11:29)

08/23 11:47, , 1F
這篇其實講的是真的,通常能作得頂多是重新組織,
08/23 11:47, 1F

08/23 11:48, , 2F
相對的狀況下,很少真的有更好的方法的。
08/23 11:48, 2F

08/23 11:49, , 3F
推 我也把(自以為爛的)代碼改爛過 orz
08/23 11:49, 3F

08/23 12:45, , 4F
推 最常發生的是改下去之後才知道為啥原code要那樣寫= =
08/23 12:45, 4F

08/23 13:05, , 5F
我來把這篇文章整篇貼到我的註解裡面給接手的人看! XD
08/23 13:05, 5F

08/23 13:50, , 6F
推~~ 改的自己快爆了 囧
08/23 13:50, 6F

08/23 19:11, , 7F
自古文人相輕, programmer這邊也不例外
08/23 19:11, 7F

08/23 20:28, , 8F
If it ain't broken, don't fix it.
08/23 20:28, 8F

08/23 20:29, , 9F
這情況不是文人相輕啊。是經驗不夠,可能也沒有commit log
08/23 20:29, 9F

08/23 20:29, , 10F
可以參考。最後做了不適當的判斷。
08/23 20:29, 10F

08/23 21:33, , 11F
好文
08/23 21:33, 11F

08/23 23:22, , 12F
推~~原本的人會那樣寫一定有它的理由~~
08/23 23:22, 12F

08/27 12:10, , 13F
只能給推了
08/27 12:10, 13F
文章代碼(AID): #1EKnw6aX (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1EKnw6aX (Soft_Job)