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

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

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

[[141823]]

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

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

 

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

 

有一些毫無意義的注釋:

 

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

 

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

 

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

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

 

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

還有曾經被罵到遍體流膿的12306.cn,代碼節選:

 

  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. 結果,你猜到了嗎? 

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

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

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

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

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

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

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

總說十五年前吃過多少多少苦的程序員我一點都不佩服,我佩服的是在十五年前那種條件和觀念下,依然能夠寫出現在看來都讓人無比舒坦代碼的優秀程序員。不寫爛代碼就是愛惜生命、節約資源、保護地球,寫好的代碼就是一個程序員的素質,沒有那么多理由可以講。

責任編輯:chenqingxiang 來源: IT牛人博客聚合
相關推薦

2019-12-16 10:16:36

項目監獄代碼

2014-04-09 09:55:12

2013-03-18 10:00:21

面試題程序員面試官

2020-09-18 07:05:34

Java編程語言

2009-07-23 09:20:25

Javascript代

2012-10-29 14:37:25

華為

2013-08-05 11:34:02

2015-09-14 09:28:47

2015-08-13 10:54:46

2012-10-31 09:16:36

IT管理

2012-12-25 09:53:40

域名

2020-03-12 07:42:49

代碼程序員

2011-08-29 09:19:25

c語言

2012-10-18 18:40:24

2011-01-20 17:59:53

網絡安全路由配置路由安全

2010-05-20 10:21:41

數據中心大便

2020-04-09 11:23:30

微軟域名僵尸網絡

2014-09-02 10:28:15

iPhone 6

2014-04-23 16:31:42

Windows背景音樂

2013-07-02 10:08:46

爛代碼代碼優化代碼清理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人小视频 | 日韩一二区在线 | 美女黄色在线观看 | 男女免费网站 | 天天干com| 国产99视频精品免费视频7 | 一区二区蜜桃 | 羞羞的视频免费在线观看 | 精品av | 国产精品久久国产精品99 gif | 欧美 日韩 国产 成人 | 久久一级大片 | av二区三区| 久久久99精品免费观看 | 精品久久国产老人久久综合 | 欧美成人手机视频 | 中文字幕高清一区 | 欧美一区二区三区在线观看视频 | 国产免费色 | 亚洲国产成人精品久久 | 午夜一级大片 | 狠狠爱免费视频 | 精品久久99 | 中文字幕第一页在线 | 中文字幕国产精品 | 亚洲成人精品免费 | 中文字幕福利视频 | 欧美午夜剧场 | 精品亚洲国产成av人片传媒 | 韩日av片 | 人人射人人| 爱爱视频网 | 亚洲一区欧美一区 | 国产高清视频在线观看 | 亚洲电影成人 | 黄色片在线免费看 | 中文字幕欧美日韩一区 | 欧美大片久久久 | 日韩第一区 | 成人精品一区二区 | 久久美女网 |