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

你見過最爛的Java代碼長什么樣子?

開發 后端
經歷了的項目越多,看過的奇葩代碼也就越多。發現爛代碼的目的并不是抨擊和取笑,主要還是為了避免讓自己或者身邊的人寫出類似的代碼。

經歷了的項目越多,看過的奇葩代碼也就越多。發現爛代碼的目的并不是抨擊和取笑,主要還是為了避免讓自己或者身邊的人寫出類似的代碼。

碼云上面就有個熱門倉庫 bullshit-codes[1] 專門收集史上最坑爹的代碼片段。下面放幾個比較有意思的給大家看看:

1.一行代碼就可以搞定的,非要寫的啰里啰嗦。不要給我扯什么可讀性,以下代碼一行的寫法可讀性也更好。

  1. private boolean isEligible(int age) { 
  2.     boolean result; 
  3.     if (age > 18) { 
  4.         result = true
  5.     } else { 
  6.         result = false
  7.     } 
  8.     return result; 
  9.  

2.前大廠程序員設計的智能 AI 客服系統

  1. Scanner sc = new Scanner(System.in); 
  2. String str; 
  3. // 待優化 
  4. while (true) { 
  5.     str = sc.next(); 
  6.     // 測試環境,正式環境從數據庫中獲取 
  7.     str = str.replace("嗎"""); 
  8.     str = str.replace("?""!"); 
  9.     str = str.replace("?""!"); 
  10.     str = str.replace("不""很"); 
  11.     str = str.replace("你們""我們"); 
  12.     str = str.replace("有""沒有"); 
  13.  
  14.     System.out.println(str); 

效果展示:

  1. 在嗎? 
  2. 在! 
  3. 你好! 
  4. 你好! 
  5. 產品有問題啊 
  6. 產品沒有問題啊 
  7. 你們的服務態度不好 
  8. 我們的服務態度很好 

在嗎?在!你好!你好!產品有問題啊產品沒有問題啊你們的服務態度不好我們的服務態度很好

3.只要我的代碼夠多,你就你很難看出有啥問題

  1. /** 
  2.  * 三年前接手的一個政府網站項目,真假不知,據說是一個兩年web開發經驗的程序員寫的, 用的spring系列還是3.x版本,前端還是jsp,可能是老項目。 
  3.  * 主要特點是:實體類中不寫注釋,數據庫表中也沒有注釋,命名經常使用英文拼音混合,而且還可能是簡寫(grzlChangeStatus:個人資料變更狀態) 
  4.  * 
  5.  * 挖坑不填坑,菊花塞電燈 
  6.  */ 
  7. @Controller 
  8. public class DemoController { 
  9.  /** 
  10.   * 這個方法一共有800多行,有30多個if或else if的條件判斷,只寫代表性的幾個 
  11.   * 
  12.   * 具體方法名稱記不得,邏輯是這樣,前端jsp提交一個請求過來,界面中除了一些必填信息外,還有有5個下拉框,后臺判斷各種組合, 
  13.   * 分別往request里面塞入不同的對象,返回的頁面視圖也可能不同。 
  14.   */ 
  15.  @RequestMapping("/submit"
  16.  public String template(HttpServletRequest request, HttpServletResponse response, HttpSession session) { 
  17.   String param1 = request.getParameter("param1"); 
  18.   String param2 = request.getParameter("param2"); 
  19.   String param3 = request.getParameter("param3"); 
  20.   String param4 = request.getParameter("param4"); 
  21.   String param5 = request.getParameter("param5"); 
  22.   // 你沒看錯,各種狀態全部存字串,而且判斷的時候不考慮空指針問題 
  23.   if (param1.equals("已消毒")) { 
  24.    // 邏輯 
  25.    request.setAttribute("attr""value"); 
  26.    return "jsp1"
  27.   } else if (param1.equals("已消毒") && param2.equals("1.8米以上")) { 
  28.    // 邏輯 
  29.    request.setAttribute("attr""value"); 
  30.    // 你沒看錯,可能又是另一個視圖 
  31.    return "jsp2"
  32.    // 你沒看錯,還可能出現多個條件,|| 和 && 
  33.   } else if (param1.equals("已消毒") && param2.equals("2米以上") || param3.equals("緬甸")) { 
  34.    // 邏輯 
  35.    request.setAttribute("attr""value"); 
  36.    return "jsp3"
  37.    // 你沒看錯,因為他的狀態或選項沒有用數字類型,所以不能用 > < 之類的來判斷,要列舉所有狀態 
  38.   } else if (param1.equals("未進站") || param1.equals("已進站") || param1.equals("已消毒") && param2.equals("2米以上")) { 
  39.    request.setAttribute("attr""value"); 
  40.    return "jsp3"
  41.    //你沒看錯,還會出現 true==true 或false==false這樣的代碼 
  42.   }else if(param4.equals("禁止入境")==true && param5.equals("農用車")) { 
  43.    request.setAttribute("attr""value"); 
  44.    return "jsp4"
  45.    //你沒看錯,還會出現邏輯非,而且,要先判斷什么條件,從來不用括號包起來,要理他的邏輯,還要先理條件判斷優先級 
  46.   }else if(param1.equals("未進站") || param1.equals("已進站") || param1.equals("已消毒") && param2.equals("2米以上") && !param3.equals("緬甸")) { 
  47.    request.setAttribute("attr""value"); 
  48.    return "jsp5"
  49.   } 
  50.   //省略剩下的30多個類似的判斷 
  51.   else { 
  52.    return "default"
  53.   } 
  54.  } 

以上代碼的問題:

  • 空指針異常
  • 邏輯混亂,部分 else if 根本進不去

4.獲取一天后的日期:讓線程睡一會

  1. public static Date getAfterDate(int day) { 
  2.     try { 
  3.         Thread.sleep(day * 24 * 60 * 60 * 1000); 
  4.     } catch (Exception e) { 
  5.         e.printStackTrace(); 
  6.     } 
  7.     return new Date(); 

5.新上的項目的代碼命名,表示看不太懂

 

 

 

 

6.為了得到了一個用戶總人數,把所有的 User 對象查詢出來。

  1. /** 
  2.   統計用戶總數,來源于N年前某個用戶抱怨執行效率低,貼出類似邏輯的代碼. 
  3.   @author wendal 
  4. */ 
  5. @IocBean 
  6. public class CountUserTable { 
  7.  
  8.     @Inject Dao dao; 
  9.  
  10.     @Test 
  11.     public void test_user_count() { 
  12.         // 取出全部用戶對象(dao.query返回List<User>),然后取list大小就可以啦,是不是很機智 
  13.         int count = dao.query(User.class, null).size(); 
  14.         System.out.println("用戶總數是" + count); 
  15.     } 

參考資料

[1]bullshit-codes: https://gitee.com/oschina/bullshit-codes 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2018-06-06 16:25:44

碼農出身奇特

2020-11-04 11:17:20

好代碼程序員整潔

2021-03-12 11:50:08

項目組件 API

2020-12-16 07:37:35

Java代碼成本

2021-05-27 09:30:51

Java流程控制

2021-10-29 10:55:07

Go 泛型語言

2022-10-10 08:47:49

ITCIO數據

2013-05-29 09:27:54

Windows 8.1

2021-02-19 10:14:49

云計算公共云

2022-06-01 11:14:42

Java代碼技巧

2013-03-18 10:00:21

面試題程序員面試官

2015-07-23 09:40:24

爛代碼程序員

2021-05-08 13:11:58

物聯網IOT物聯網技術

2014-04-08 09:56:30

銷售易CRM

2021-11-29 07:42:44

CSS 技巧CSS 繪圖技巧

2020-07-14 14:50:44

Vue代碼前端

2024-03-04 09:19:33

CSSbackground前端

2020-07-15 07:57:17

代碼Vue開發

2022-03-15 16:19:13

物聯網物聯網 2.0IoT

2011-10-10 11:04:54

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日日操 | 午夜精品一区二区三区在线观看 | 日韩2020狼一二三 | 国产一级片免费视频 | 成人午夜视频在线观看 | 亚洲激情综合 | 精品国产欧美一区二区 | 婷婷二区 | 在线a视频网站 | 中文字幕二区三区 | 我要看黄色录像一级片 | 一区视频在线播放 | 久久这里只有精品首页 | 夜操| 欧美激情精品久久久久久变态 | 国内自拍视频在线观看 | 天天舔天天 | 午夜理伦三级理论三级在线观看 | 亚洲电影一级片 | 亚洲高清av | 国产高清视频一区 | 一级毛片网 | 色在线免费视频 | 中文视频在线 | 欧美日韩一区精品 | 一区二区三区回区在观看免费视频 | 久久精品亚洲一区二区三区浴池 | av播播 | 人人性人人性碰国产 | 久久久久国产一区二区三区四区 | 亚洲精品免费在线 | 黄网站在线播放 | 午夜在线小视频 | 天天操夜夜看 | 天堂精品视频 | 色噜噜色综合 | 丁香综合 | 中文字幕在线一区二区三区 | 国产午夜精品久久久 | 久久精品成人 | 一区二区三区欧美在线观看 |