成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

慎入:史上最爛的代碼集合

移動開發(fā)
實本沒有什么代碼是“史上最爛”的,要有也只有“史上更爛”的,我想隨便說說這個話題,也是源自豆瓣的一個討論。事實上,系統(tǒng)復(fù)雜了被罵代碼爛是一件司空見慣的事情。當(dāng)然,也有一些短小的代碼片段,就足以看出代碼作者是個不怎么樣的人。

[[141823]]

實本沒有什么代碼是“史上最爛”的,要有也只有“史上更爛”的,我想隨便說說這個話題,也是源自豆瓣的一個討論。事實上,系統(tǒng)復(fù)雜了被罵代碼爛是一件司空見慣的事情。當(dāng)然,也有一些短小的代碼片段,就足以看出代碼作者是個不怎么樣的人。

布爾類型的使用是很容易變成最爛代碼的:

 

  1. if (isTrue()) 
  2. if (isTrue()) 
  3. doSomething(); 
  4.  
  5. if(boolVal == true) { 
  6. ..... 

 

有一些毫無意義的注釋:

 

  1. return 1// 返回 1 
  2.  
  3. //如果標(biāo)志為真,就返回true 
  4. if(flag) 
  5. return true

 

更無意義的是這樣的變量命名:

 

  1. public static final int ONE = 1
  2. public static final int TWO = 2

也有人說,最爛的代碼片段應(yīng)該是這樣的才對:

 

  1.          } 
  2.         } 
  3.        } 
  4.       } 
  5.      } 
  6.     } 
  7.    } 
  8.   } 

還有曾經(jīng)被罵到遍體流膿的12306.cn,代碼節(jié)選:

 

  1.  var sig = 0
  2. if(searchwordl.indexOf("'") > -1 || searchwordl.indexOf("\"") > -1 || searchwordl.indexOf("%") > -1 || searchwordl.indexOf("#") > -1 || searchwordl.indexOf("&") > -1 || searchwordl.indexOf("*") > -1 || searchwordl.indexOf("(") > -1 || searchwordl.indexOf(")") > -1 || searchwordl.indexOf("@") > -1 || searchwordl.indexOf("`") > -1 || searchwordl.indexOf("/") > -1 || searchwordl.indexOf("\\") > -1 || searchwordl.indexOf(",") > -1 || searchwordl.indexOf(".") > -1 || searchwordl.indexOf("=") > -1 || searchwordl.indexOf("<") > -1 || searchwordl.indexOf(">") > -1
  3. sig = 1
  4.  
  5. searchwordl=searchwordl.replace("'",""); 
  6. //searchwordl=searchwordl.replace(" ",""); 
  7. searchwordl=searchwordl.replace("%",""); 
  8. searchwordl=searchwordl.replace("#",""); 
  9. searchwordl=searchwordl.replace("&",""); 
  10. searchwordl=searchwordl.replace("*",""); 
  11. searchwordl=searchwordl.replace("(",""); 
  12. searchwordl=searchwordl.replace(")",""); 
  13. searchwordl=searchwordl.replace("@",""); 
  14. searchwordl=searchwordl.replace("`",""); 
  15. searchwordl=searchwordl.replace("/",""); 
  16. searchwordl=searchwordl.replace("\\",""); 
  17. searchwordl=searchwordl.replace(",",""); 
  18. searchwordl=searchwordl.replace(".",""); 
  19. searchwordl=searchwordl.replace("=",""); 
  20. searchwordl=searchwordl.replace("<",""); 
  21. searchwordl=searchwordl.replace(">",""); 
  22. if(searchwordl == '請輸入搜索條件'){ 
  23. alert("請輸入搜索條件"); 
  24. return false
  25. if(searchwordl == ''){ 
  26. alert("請正確輸入搜索條件"); 
  27. return false
  28. if(sig == 1){ 
  29. alert("請正確輸入搜索條件"); 
  30. return false
  31. document.getElementById('searchword').value=searchwordl; 

 

還有JavaScript的爛代碼,這實在太多了,就不貼了。越靈活的語言,越難駕馭,超級爛的代碼就越容易見到。

Tiago Fernandez做過一個投票,選舉最爛的Java API:

 

  1. 公式是:score = (I can live with) + (Painful * 2) + (Crappy * 3) + (Hellish * 4) 
  2.  
  3. 結(jié)果,你猜到了嗎? 

Java的框架多、語法嚴(yán)格,對于限制那些要來搞破壞的程序員確實有幫助。但是真要搞破壞,要限制還是限制不住。以前我接觸過一個Portlet擴(kuò)展類,一共好幾千行,當(dāng)時覺得這代碼已經(jīng)夠爛了。可是后來我看到了5000多行的存儲過程,還有7000多行的jsp頁面——我以前以為Java程序員的破壞力要遠(yuǎn)遠(yuǎn)小于C/C++程序員。看來,也不盡然。

我的經(jīng)歷中接觸到的爛代碼,最常見的大概包括下面幾種:

一些命名的惡習(xí),比如“cptct”這種縮略語縮略到幾乎是密碼電報的方法名,大概是受到Basic毒害,即便是早期的 Visual Basic 版本也在代碼中強制實施了一些約束(如變量名的長度、模塊中允許的變量數(shù)和模塊的大小)。
早些年的web項目(甚至包括現(xiàn)在的一些小公司做的web項目),不懂解耦、不會分層,邏輯全部揉在一起,一坨屎一樣。頁面模板直接訪問數(shù)據(jù)庫、樣式代碼散落在世界各地,HTML寫死在各種邏輯里。
在某些程序員眼里,“復(fù)用”==“繼承”,只要有可復(fù)用的屬性、公共的方法,就設(shè)法用無敵霹靂繼承大法來解決,也不管適不適合,一級又一級,***一定是一棵偉岸無邊的繼承樹。
無窮無盡的工具類。這類代碼比繼承大法的代碼好不到哪去,XXHelper、XXTools這樣的靜態(tài)類滿山遍地都是,但是復(fù)用的眼光倒是比只會繼承多了一條路……
不會用標(biāo)準(zhǔn)庫函數(shù)、封裝好的類庫。我見過好幾個這樣的程序員,對于Integer、Long、Double這些數(shù)值對象類型的定義、方法幾乎完全不了解,倒是對String很熟悉,所有的轉(zhuǎn)換、校驗,全部都轉(zhuǎn)換成String以后完成,完成后再轉(zhuǎn)回來。
上帝類。本質(zhì)是對類的職責(zé)單一不理解。用Java、C++的程序員寫出上帝類也就罷了,今年我居然聽朋友說到一個寫Ruby的有相當(dāng)工作經(jīng)驗程序員寫出一個巨大的上帝類來……
滿大街亂跑的設(shè)計模式。本質(zhì)是過度設(shè)計。好好一個“new Template()”非要引入工廠,再搞一個策略模式、模板模式,不過癮,***加上注解來實現(xiàn)……
大部分的JavaScript、CSS。不解釋。

今天有同事說,代碼之所以成為爛代碼,很大可能是寫代碼的人會遇到比后來讀代碼的人多得多的問題,雖然寫代碼的人解決了大部分的問題,但是剩下的問題還是足以讓代碼遺臭萬年。不過我不這么看,我看到過年份比較早的VB代碼、還有Delphi代碼,雖然都是界面開發(fā)用的,雖然很多理念遠(yuǎn)遠(yuǎn)不及今天,代碼依然清晰易懂。

有的程序員說,工期緊、項目重,領(lǐng)導(dǎo)催得我天天吐血,迫不得已我寫出了爛代碼。客觀原因千千萬萬,我確實無話可說,畢竟在物質(zhì)文明還非常虛弱的時候,還是不要扯精神文明的蛋。但是,優(yōu)秀的程序員是有追求的,而人是會麻木的,總是把項目壓力掛在嘴邊的,給一個寬松的限期也不見得能如何。

還有的程序員說,唯物辯證法告訴我們,任何事物都有兩面性,所以我們要學(xué)習(xí)爛代碼中好的設(shè)計,并且把糟糕的設(shè)計引以為戒……我說,得了吧。爛就是爛,把屎放在冰激凌蛋筒里也還是屎,那么矯情干什么?

有很多程序員總有一種推倒重來的沖動,特別是看到爛代碼的時候。我也曾經(jīng)如此。其實這是危險的。況且在很多情況下你的重寫未必有他原來的爛代碼好。也許你能解決其中的30個問題,卻引入了50個新問題。重構(gòu)還是要在業(yè)務(wù)模型和流程清晰的情況下盡量小改動、劃模塊入手,大開大合總是危險的。

總說十五年前吃過多少多少苦的程序員我一點都不佩服,我佩服的是在十五年前那種條件和觀念下,依然能夠?qū)懗霈F(xiàn)在看來都讓人無比舒坦代碼的優(yōu)秀程序員。不寫爛代碼就是愛惜生命、節(jié)約資源、保護(hù)地球,寫好的代碼就是一個程序員的素質(zhì),沒有那么多理由可以講。

責(zé)任編輯:chenqingxiang 來源: IT牛人博客聚合
相關(guān)推薦

2019-12-16 10:16:36

項目監(jiān)獄代碼

2013-03-18 10:00:21

面試題程序員面試官

2014-04-09 09:55:12

2020-09-18 07:05:34

Java編程語言

2009-07-23 09:20:25

Javascript代

2012-10-29 14:37:25

華為

2015-09-14 09:28:47

2015-08-13 10:54:46

2013-08-05 11:34:02

2012-10-31 09:16:36

IT管理

2020-03-12 07:42:49

代碼程序員

2012-12-25 09:53:40

域名

2010-05-20 10:21:41

數(shù)據(jù)中心大便

2013-07-02 10:08:46

爛代碼代碼優(yōu)化代碼清理

2016-12-09 15:02:02

云計算

2020-04-09 11:23:30

微軟域名僵尸網(wǎng)絡(luò)

2012-10-18 18:40:24

2011-01-20 17:59:53

網(wǎng)絡(luò)安全路由配置路由安全

2011-08-29 09:19:25

c語言

2014-09-02 10:28:15

iPhone 6
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一级毛片中国 | 成人在线精品 | 亚洲a网 | 成人在线国产 | 午夜电影合集 | 久久久人成影片免费观看 | 超碰97人人人人人蜜桃 | 久久久久久久久久久久久9999 | 亚洲精品一 | 久夜精品| 亚洲婷婷六月天 | 亚洲成人毛片 | 亚洲一区二区三区国产 | 日韩不卡一区二区 | 男人的天堂在线视频 | 免费看的黄网站 | 亚洲精品一二区 | 一级毛片在线播放 | 欧美激情欧美激情在线五月 | 亚洲二区视频 | 国产999精品久久久久久绿帽 | 日韩一二区| 欧美簧片 | 精品免费在线 | av片在线免费看 | 久久久国产一区二区三区 | 亚洲一区二区高清 | 羞羞的视频免费看 | 99精品电影| 精品人伦一区二区三区蜜桃网站 | av一区二区三区四区 | 亚洲欧美在线观看 | 日韩中文字幕高清 | 国产精品1区 | 国产精品毛片一区二区三区 | 最近中文字幕免费 | 玖玖国产精品视频 | 三级视频在线观看电影 | 日本成人二区 | 久久99国产精品 | 亚洲欧美一区二区三区1000 |