讀其他程序員寫的代碼時,你是怎樣的心情?


卧槽,這代碼寫的太傻B了。
。。。
卧槽,看不下去了,讀這種傻B代碼是對我智商的侮辱,一定要改一下。
。。。
哈哈,改好了,傻B代碼變牛B,我真是太機智了。
。。。
哈哈,完美了,修改前後的代碼對比一看,一股智商的優越感油然而生。
。。。
卧槽,崩潰了,怎麼破?
。。。
卧槽,改壞了,怪我手賤。
。。。
卧槽,搞不定,難道我比傻B更傻B嗎???
。。。
卧槽,明白了,原來傻B也有傻B的道理!!!
。。。
卧槽,代碼還原吧,終於明白:越是傻B的代碼就越是沒法修改。
。。。
卧槽,ctrl+zzzzzzzzzzzzzzzzzzzzzzz

-------------------------------------------------

某天我的小弟給我說:「我看到項目中用了些第三方的開源代碼,寫得跟屎一樣。我來改改吧?」
我回答:「千萬別動,俗話說得好:屎不臭,攪起來臭。你可別做那根攪屎棍子!」


我是前端,說下前端讀前端的源碼是什麼樣的。
underscore:
卧槽,好漂亮,這孩子有強迫症吧。卧槽,命名好叼。卧槽,toArray這個正則好叼,又特么被教育了。
jQuery:
卧槽,代碼看起來好好看,好多空格…
三分鐘後…
卧槽,這個是修復什麼bug的?抬頭一看注釋,WTF…Android4.1
react:
這命名姿勢風騷,不怕長,就怕你看不懂~卧槽if("development" !== "product")是什麼鬼? 。查src才看到是node環境變數設置~
angular:
呵呵
呵呵
你一個函數1500行是幾個意思?
這函數是做啥的?
這個省略單詞是嘛?
十分鐘後…
卧槽先遠眺一下,眼花~
徐飛老師研究過全部angular源碼,不服不行…回頭看jQuery源碼真是享受啊。

自己的代碼:
這裡可以優化下,寫個TODO回頭有空再來~
三個月後,項目完成~TODO好多,算了吧…

同事的代碼:
卧槽
這傻逼
卧槽…


想起那個段子。
我寫了一段代碼,只有我和上帝知道它的原理。
一個月後……

只有上帝知道了!


我來講一件事情,我最近看到的一個代碼,把event做成了property,然後觸發event的寫法就是/*偽代碼*/:this-&>event = this-&>event;

驚呆了。

然後我blame了一下,發現做這個事情的人,早已成為我們的超級大老闆。

=================================

第二個經歷就是,我們的項目其實全都是設置為treat warning as error的,但是編譯一下仍然有一千多萬條warning。我說這設置到底靠不靠譜啊?結果過沒多久我的代碼也出了warning,然後就編譯不通過了。

屌炸了,編譯器居然歧視我。


昨天剛發生的真事。

A:有個類叫D2DConstantBuffer。
B:誰寫的,怎麼叫這麼爛的名字。
A:額,你。
B:哦,好吧,那新代碼繼續延續這個命名方式。


大體可以分兩種:
第一種,卧槽這裡居然可以這樣,卧槽這個演算法好精妙,卧槽這個結構設計的實在是好看,學習了學習了學習了;
第二種,這TM什麼玩意兒?操。


我是一個本科生,最近在改一個博士生的演算法,把它寫成APP.
卧槽,尼瑪裡面用了一大堆的神奇變數名:
fuck
yoursister
sister1
sister2
sister3
sister4
......
fuck = yoursister;
......
感情您這是要fuck人家全家啊?!


昨天有個老外問我:你這個 feature 是啥語法啊


Solaris代碼大多都是之前Sun那批牛人留下的物質遺產,每次看都是兩眼一黑,花很長時間看明白了就彷彿看到屏幕上兩個大字「牛逼」。這導致我每次做code review都心驚膽戰


從眾多答案可以看出,讀其他程序員寫的code時最大的共同點就是「卧槽卧槽卧槽卧槽卧槽卧槽」


怎麼能沒有這張圖


「這樣也行?」

說來慚愧,我不太喜歡別人的代碼,因為大多與我自己寫的不一樣。
可能有人會說那你自己寫哪樣呀,下面是傳送門
https://github.com/guaxiao


這個問題要分為 有注釋和沒注釋兩種情況
針對第一種:卧槽,你MD都寫了注釋了不能寫清楚啊,寫的這啥玩意,完全搞不懂在說啥啊
針對第二種:卧槽,你就不能寫個注釋嗎,寫的簡單點也沒關係啊,這啥也沒有這讓別人怎麼理解啊


……看了一堆,什麼玩意,敢不敢來點邏輯性?亂得跟啥一樣……

……卧槽受不了了還是申請一下重構吧……

……不批,說是老代碼跑了好幾年了,穩定性最重要。寫成那德行誰敢保證改完了以後能穩定?單元測試都不好做啊……

……算了,自己業餘時間重新寫一套吧……

……寫出來了,往上報了,測試通過了,效率也提高了,程序也清晰了,大家都說好……

……然並卵,自己寫的那一套別人也不願意重新讀一遍代碼或者文檔,還是繼續改老代碼吧……



我丟!這麼爛的代碼是哪個笨蛋寫的!

仔細一看…

哦!原來是我寫的,默默的改掉。


靠!這麼漂亮的代碼我連想都想不到!


這些寫的是什麼?
......

沒有注釋,命名風格還這麼不統一?
......
兩行代碼就能搞定的事,非要寫這麼多行?還真是代碼寫的很複雜,看不出來明顯的bug。為什麼不是代碼看起來很簡單,明顯看不出來bug。
......
為了用個設計模式寫這麼複雜有必要嗎?
......
哎呦,不錯呦,這bug犯的錯我當年也犯過

咦,作者的名字怎麼是我
(╯°□°)╯︵ ┻━┻


1. 沒有人天生就是天才,能寫出一手漂亮還容易理解的代碼。
2. 覺得不爽,可以重構,但不可以一直抱怨卻不思考改進。
3. 即使是大牛,寫的代碼也不一定通俗易懂或者漂亮整齊或者分層清晰,畢竟國內能寫出這種代碼的人屈指可數,你身邊大多數程序員都還在探索途中。
4. 不要以為自己寫的代碼多牛逼,我寫了7年js了,現在看自己寫的js還是一坨屎。


  • 居然有這麼繞的邏輯,暈了……
  • 居然沒有文檔……
  • 居然沒有注釋……
  • 居然這麼多函數,函數還那麼長,名字還不知道什麼意思……
  • 居然這麼多類,類層次這麼深……
  • 居然這麼多介面,都找不到實現在哪裡……
  • 居然有這麼隨意的變數名和函數名,完全看不出來含義……
  • 居然有這麼多全局變數,完全不知道都散布到哪裡去了……
  • 居然有這麼多線程,而且多個線程用同一個對象,都不知道怎麼同步的……
  • 居然有這麼多進程,每個進程都幹嘛滴……

我X,這個2B的代碼好亂
我X,這個2B連個注釋都不留
...
...
...
...
我X,這個2B居然是我


幾千行一個文件的代碼,到處是goto,然後還有這種奇葩注釋。。。我一邊看一邊在驚訝這個代碼就是MySQL的代碼。。。就像注釋里說的那樣。。。
what is this?


推薦閱讀:

如何看待程序員被前妻翟欣欣逼死事件:蘇享茂的wephone涉國際詐騙?
程序員的抽煙比例?
讓你覺得驚嘆無比的代碼片段或者正則表達式?
老闆的這種做法我該怎麼辦?
男孩子穿女裝面試程序員的工作合適嗎?

TAG:程序員 | 編程 | 心情 | 代碼 |