<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2105字,需瀏覽 5分鐘

           ·

          2020-09-17 00:15

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

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

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

          private?boolean?isEligible(int?age)?{
          ????boolean?result;
          ????if?(age?>?18)?{
          ????????result?=?true;
          ????}?else?{
          ????????result?=?false;
          ????}
          ????return?result;

          }

          2.前大廠程序員設計的智能 AI 客服系統(tǒng)

          Scanner?sc?=?new?Scanner(System.in);
          String?str;
          //?待優(yōu)化
          while?(true)?{
          ????str?=?sc.next();
          ????//?測試環(huán)境,正式環(huán)境從數(shù)據(jù)庫中獲取
          ????str?=?str.replace("嗎",?"");
          ????str?=?str.replace("?",?"!");
          ????str?=?str.replace("?",?"!");
          ????str?=?str.replace("不",?"很");
          ????str?=?str.replace("你們",?"我們");
          ????str?=?str.replace("有",?"沒有");

          ????System.out.println(str);
          }

          效果展示:

          在嗎?
          在!
          你好!
          你好!
          產(chǎn)品有問題啊
          產(chǎn)品沒有問題啊
          你們的服務態(tài)度不好
          我們的服務態(tài)度很好

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

          /**
          ?*?三年前接手的一個政府網(wǎng)站項目,真假不知,據(jù)說是一個兩年web開發(fā)經(jīng)驗的程序員寫的,?用的spring系列還是3.x版本,前端還是jsp,可能是老項目。
          ?*?主要特點是:實體類中不寫注釋,數(shù)據(jù)庫表中也沒有注釋,命名經(jīng)常使用英文拼音混合,而且還可能是簡寫(grzlChangeStatus:個人資料變更狀態(tài))
          ?*
          ?*?挖坑不填坑,菊花塞電燈
          ?*/

          @Controller
          public?class?DemoController?{
          ?/**
          ??*?這個方法一共有800多行,有30多個if或else?if的條件判斷,只寫代表性的幾個
          ??*
          ??*?具體方法名稱記不得,邏輯是這樣,前端jsp提交一個請求過來,界面中除了一些必填信息外,還有有5個下拉框,后臺判斷各種組合,
          ??*?分別往request里面塞入不同的對象,返回的頁面視圖也可能不同。
          ??*/

          ?@RequestMapping("/submit")
          ?public?String?template(HttpServletRequest?request,?HttpServletResponse?response,?HttpSession?session)?{
          ??String?param1?=?request.getParameter("param1");
          ??String?param2?=?request.getParameter("param2");
          ??String?param3?=?request.getParameter("param3");
          ??String?param4?=?request.getParameter("param4");
          ??String?param5?=?request.getParameter("param5");
          ??//?你沒看錯,各種狀態(tài)全部存字串,而且判斷的時候不考慮空指針問題
          ??if?(param1.equals("已消毒"))?{
          ???//?邏輯
          ???request.setAttribute("attr",?"value");
          ???return?"jsp1";
          ??}?else?if?(param1.equals("已消毒")?&&?param2.equals("1.8米以上"))?{
          ???//?邏輯
          ???request.setAttribute("attr",?"value");
          ???//?你沒看錯,可能又是另一個視圖
          ???return?"jsp2";
          ???//?你沒看錯,還可能出現(xiàn)多個條件,||?和?&&
          ??}?else?if?(param1.equals("已消毒")?&&?param2.equals("2米以上")?||?param3.equals("緬甸"))?{
          ???//?邏輯
          ???request.setAttribute("attr",?"value");
          ???return?"jsp3";
          ???//?你沒看錯,因為他的狀態(tài)或選項沒有用數(shù)字類型,所以不能用?>?
          ??}?else?if?(param1.equals("未進站")?||?param1.equals("已進站")?||?param1.equals("已消毒")?&&?param2.equals("2米以上"))?{
          ???request.setAttribute("attr",?"value");
          ???return?"jsp3";
          ???//你沒看錯,還會出現(xiàn)?true==true?或false==false這樣的代碼
          ??}else?if(param4.equals("禁止入境")==true?&&?param5.equals("農(nóng)用車"))?{
          ???request.setAttribute("attr",?"value");
          ???return?"jsp4";
          ???//你沒看錯,還會出現(xiàn)邏輯非,而且,要先判斷什么條件,從來不用括號包起來,要理他的邏輯,還要先理條件判斷優(yōu)先級
          ??}else?if(param1.equals("未進站")?||?param1.equals("已進站")?||?param1.equals("已消毒")?&&?param2.equals("2米以上")?&&?!param3.equals("緬甸"))?{
          ???request.setAttribute("attr",?"value");
          ???return?"jsp5";
          ??}
          ??//省略剩下的30多個類似的判斷
          ??else?{
          ???return?"default";
          ??}
          ?}
          }

          以上代碼的問題:

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

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

          public?static?Date?getAfterDate(int?day)?{
          ????try?{
          ????????Thread.sleep(day?*?24?*?60?*?60?*?1000);
          ????}?catch?(Exception?e)?{
          ????????e.printStackTrace();
          ????}
          ????return?new?Date();
          }

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

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

          /**
          ??統(tǒng)計用戶總數(shù),來源于N年前某個用戶抱怨執(zhí)行效率低,貼出類似邏輯的代碼.
          ??@author?wendal
          */

          @IocBean
          public?class?CountUserTable?{

          ????@Inject?Dao?dao;

          ????@Test
          ????public?void?test_user_count()?{
          ????????//?取出全部用戶對象(dao.query返回List),然后取list大小就可以啦,是不是很機智
          ????????int?count?=?dao.query(User.class,?null).size();
          ????????System.out.println("用戶總數(shù)是"?+?count);
          ????}
          }

          參考資料

          [1]

          bullshit-codes: https://gitee.com/oschina/bullshit-codes

          閑聊

          我平時是一個特別喜歡記錄的人,我遇到的好文章,看過的好書,學習過的好專欄,我都會記錄下來,記錄自己的所得所獲。

          Typora+Github同步是我目前記筆記的方式。不知道適不適合別人,反正目前來看這種方式我最喜歡。

          簡單給大家看一下我的筆記分類目錄吧(挺雜的,最近會優(yōu)化目錄):

          上周日和我們大學的傳奇人物,研究生在華科,目前在華為的學長聊了一會。收獲確實不少,果然優(yōu)秀的人總有一些過人的地方(這周應該會把自己的所得所獲分享出來)。

          最近更新的一些文章推薦:


          往期推薦



          成人函授大專,采煤專業(yè),我的魔幻編程之旅

          我利用業(yè)余時間通過技術寫作掙了3個頂配Mac Pro

          被噴了?聊聊我開源RPC框架的那些事

          工作中巧用了這幾個設計模式重構代碼,女同事直呼666

          我在螞蟻外包的這段時光

          6k+點贊的SpringBoot+Netty分布式即時通訊系統(tǒng)!愛了愛了!


          我整理的4本PDF文檔,公眾號“后端技術進階”后臺回復“面試突擊”即可免費獲取。

          文章有幫助可以點個「在看」或「分享」,都是支持,我都喜歡!

          我是Guide哥,Java后端開發(fā),會一點前端知識,喜歡烹飪,自由的少年。一個三觀比主角還正的技術人。我們下期再見!

          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩成人精品 | 五月婷婷第四色 | 天堂网天堂网 | 操逼黄色网址 | 北条麻妃亚洲一区在线观看 |