你的代碼寫的很爛,真的很爛!
我有一個(gè)很熟的朋友,他現(xiàn)在忙的不可開交。他手上有一大堆沒有完成的合同,而且一個(gè)跟他一起開發(fā)的助手也離他而去。于是,在三個(gè)大客戶的催命鬼時(shí)的督促下,他已經(jīng)連續(xù)好幾個(gè)星期沒休息了。
其中有個(gè)客戶跟他討論他給這個(gè)客戶做的iPad應(yīng)用程序,客戶告訴他“我們花錢雇了另外一個(gè)程序員來審查你的代碼,他說你的代碼寫的很爛。”
當(dāng)他告訴我這個(gè)故事時(shí),我只是微微一笑,想起了我以前是怎么唾棄別人的代碼的。當(dāng)我剛開始編程時(shí),我看到過一段程序,我認(rèn)為那是毋庸置疑的寫的很爛的,我刪掉了那段代碼,用自己認(rèn)為更好的方面重新寫了一遍。當(dāng)我變成的成熟后,我回頭再看,發(fā)現(xiàn)我所刪掉的那段代碼其實(shí)是用了一個(gè)很好的設(shè)計(jì)模式,而我重寫的確是丑陋無比。
我就這樣被上了一課。
之后的日子里,我經(jīng)常會(huì)遇到我認(rèn)為是丑的不能再丑的代碼。盡管如此,我也不通篇否定它們了,我只會(huì)在其中找一些特別的無法容忍的部分重新編寫。可10次中有9次,當(dāng)我快要完成時(shí),我發(fā)現(xiàn)了一個(gè)問題使我不得不對(duì)自己說“哦,怪不得他們要寫成這樣了”,然后把代碼恢復(fù)成原樣,或也使用同樣“丑的不能再丑”方式完成它。
現(xiàn)在我變的更成熟了,我可以充滿自信的告訴你,我再也不會(huì)看著別人編的代碼說“哦,這代碼很爛”了。我知道,在沒有了解整個(gè)程序的解決方案之前,你不可能就那么輕易的判斷代碼的好和壞。真的,有時(shí)候它看起來很傻,或完成的不好,或沒有文檔標(biāo)注(我的意思是自我注釋),然而,你根本就不可能知道程序員在寫這段代碼時(shí)腦袋里是怎么思考的。更多的情況是,他們要選擇這樣做是有一定的理由的,除非去深入的研究它們,你不可能再有其他簡(jiǎn)單快速的方法來理解程序的上下文環(huán)境。
所以,每當(dāng)聽到有人看著別人的代碼說很爛時(shí),我只會(huì)微微一笑,讓我想起我當(dāng)年的天真和盲目自信。的確,我以前堅(jiān)信自己是個(gè)出色的開發(fā)人員,堅(jiān)信知道每種算法的***設(shè)計(jì)。我很想念當(dāng)時(shí)的自大,但是我很高興現(xiàn)在學(xué)到的這些理念,我知道,我唯一能鄙視的代碼只能是我自己的代碼,鄙視的原因就是我不能使它變的更好。