www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 架構(gòu)師社區(qū)
[導(dǎo)讀] 程序員最怕讀別人的代碼,比這個(gè)更可怕的是什么? 從別人那里接手一個(gè)老項(xiàng)目 前任程序員或者是編碼能力不行,或者是跳槽之前故意擺爛……

今天愚人節(jié),可以皮一下,可以開點(diǎn)玩笑,所以我決定這篇文章開啟嘲諷模式。

程序員最怕讀別人的代碼,比這個(gè)更可怕的是什么?

從別人那里接手一個(gè)老項(xiàng)目

前任程序員或者是編碼能力不行,或者是跳槽之前故意擺爛……于是,一個(gè)隱藏著一堆爛攤子的項(xiàng)目,扔給了后來接手的人。

本來以前是代碼里夾翔,后來就是翔夾代碼了。

這些翔有各種各樣的風(fēng)味,其中就有那么十八種味道最是沖人。

1. 塊里堆上我滿滿的翔

Java 中有著無數(shù)的語句塊,這些語句塊可以嵌套。于是我們有很多優(yōu)秀的產(chǎn)翔大師會(huì)在這些語句塊中不斷地嵌套,猶如無數(shù)層的俄羅斯套娃。

2. 把翔藏在注釋里,有時(shí)候它會(huì)“驚艷”了世界

有些哥們兒很雞賊的把一些代碼藏在注釋里,這些代碼可以隨時(shí)成為定時(shí)炸彈。

public static void main(String[] args) {
  String a = "Hello"; // \u000d a="world"; System.out.println(a); // \u000a a="hello world!"; System.out.println(a);
}

上面這段代碼運(yùn)行之后,說好的“Hello”呢?

world
hello world!

3. 我家大門常打開,歡迎錯(cuò)誤走進(jìn)來

在 Java 中,如果你想接手一個(gè)項(xiàng)目,看到一個(gè)父類的字段是非 private 的,而子類還存在同名字段,要注意了,這個(gè)項(xiàng)目的前任可能比較渣,你可能會(huì)惱火的想給他燒紙。比如:

public class Base { public int field = 0; public int getField() { return field;
  }
}
public class Sub extends Base { public int field = 1; public int getField() { return field;
  }
}

你這樣測(cè)試下看看

public static void main(String[] args) {
  Sub s = new Sub();
  Base b = s;

  System.out.println(s.field);

  System.out.println(b.field);

  System.out.println(((Sub) b).field);

  System.out.println(((Base) s).field);
}

4. 我抓到了異常,但是我不想處理了,因?yàn)槲乙x職了

有些哥們兒走之前可能人未動(dòng)心已遠(yuǎn),也可能是懶的處理異常,他會(huì)給你留下一個(gè)謎之空白。

public class EmptyCatchBlockTest { public static void main(String[] args) { try { int a = 4, b = 0; int c = a/b;
    } catch(ArithmeticException ae) { // ??? }
  }
}

對(duì)不起,兄弟,你留下這種薛定諤的處理是想讓人幫你掀桌嗎?

5. 只要我不考慮任何意外的情況,那么項(xiàng)目就一定會(huì)出意外

有些直性子的人,認(rèn)為天下萬物都可以直來直去,就好像直男只會(huì)讓女生“多喝熱水”一樣。所以,他們寫的代碼非常直率,直接就不考慮意外情況。

public static void main(String[] args) { int a = args.length; int b = 42 / a; if (a == 1) {
      a = a / (a - a);
    } if (a == 2) { int c[] = {1};
      c[42] = 99;
    }
}

上邊的代碼很直率,既不考慮 a 可能為 0 的情況,也不考慮數(shù)組越界。直來直去,就好像“我不尷尬,尷尬的就是別人”。

6. 我要把方法里可能的異常藏起來不告訴任何人

還有些哥們也不知道是不是有什么見不得人的事情,該拋出來的異常從來不拋出來,導(dǎo)致你根本不知道發(fā)生了什么事情。

InputStream is = null; try {
  is = new FileInputStream("一個(gè)文件.txt");
} catch (FileNotFoundException e) {

} int b; try { while ((b = is.read()) != -1) {
  }
} catch (IOException e) {
  e.printStackTrace();
} finally { try {
    is.close();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

上面的代碼里,如果文件找不到,接手人要撞墻的。

7. 我不走正道,因?yàn)槲沂莻€(gè)光榮的產(chǎn)翔俠

還有些人,不知道從哪里學(xué)會(huì)的邪門歪道,喜歡通過在捕獲異常里寫業(yè)務(wù)邏輯。對(duì)這種人,你九陰真經(jīng)練成了梅超風(fēng)啊。

public DateTime override Add(TimeSpan ts) { try { return base.Add(ts);
  } catch (ArgumentOutOfRangeException nb) { // calculate how much the MaxValue is exceeded // regular program flow TimeSpan saldo = ts - (base.MaxValue - this); return DateTime.MinValue.Add(saldo)
  } catch(Exception anyOther) { // 'real' exception handling. }
}

我就想問問,如果以異常來控制流程,那么如何在這些異常中尋找真正的異常情況?

8. 為了我走之前不出意外,我要捕獲所有的 NPE

有些哥們兒會(huì)把 NPE 捕獲住,恩,不解決問題,但是把提出問題的人給解決了。

private static void callInstanceMethodOfNull() { try {
    Integer age = null;
    age.toString();
  } catch (NullPointerException exception) {
    Logging.log(exception);
  } catch (Throwable exception) {
    Logging.log(exception, false);
  }
}

但是呢,這在正常的業(yè)務(wù)邏輯里很可能就把別人坑了,因?yàn)?Null 本身就是代表著一種非法狀態(tài)。拿著前朝的劍斬今朝的官,包大人干的好啊。

9. 一個(gè)方法我如果寫成一萬行,公司一定會(huì)倒閉的

有些朋友可能有分離焦慮癥,一個(gè)方法里能寫上 1 萬行代碼。對(duì)不起,讀書讀幾頁都會(huì)犯困,讀你這一萬行代碼……

10. 我要把所有業(yè)務(wù)邏輯都揉進(jìn)幾個(gè)類里,就好像女友第一次來我家

有些哥們,你看看他負(fù)責(zé)的項(xiàng)目,你發(fā)現(xiàn)整個(gè)項(xiàng)目沒幾個(gè)類。你很納悶,覺得業(yè)務(wù)很復(fù)雜,竟然可以實(shí)現(xiàn)的如此簡(jiǎn)單嗎?你再打開他的類看源碼,哦豁,這就是個(gè)垃圾箱啊,什么都能往里塞啊。

哥們兒,這不是女朋友去你租的房子里,你為了顯得干凈,把你那些垃圾到處塞啊。

11. 是男人就來看我繼承一百層類

有些爺爺不知道怎么想的,在他們眼里可能只有兒子和老子,一個(gè)類很不得搞一百層的類繼承。你這樣繼承,您家萬貫家財(cái)還能遭得住嗎?

12. 如果我不用緩存,我就能多浪費(fèi)公司的幾臺(tái)服務(wù)器

還有些哥們兒,明明知道他這個(gè)功能可能被頻繁訪問,比如登錄的時(shí)候查相關(guān)的白名單、黑名單。哥兒們兒知道并發(fā)量大,可從來不想套個(gè)緩存,就是死從數(shù)據(jù)庫里要數(shù)據(jù)。數(shù)據(jù)庫想:生產(chǎn)隊(duì)的驢也沒我這么忙啊。

13. 線程安全?那是什么?能吃嗎?

有些號(hào)稱老程序員的老司機(jī)們,經(jīng)年有余的不管線程安全。上來口吐異步同步,可是到手上了,線程就是個(gè)后娘養(yǎng)的,不管人家的數(shù)據(jù)安全了。合著身前叫人家小甜甜,落地了叫人家牛夫人了?

14. 在我手中無物不鎖

還有些哥們兒,怕線程跟怕老婆一樣,一旦可能多線程了,上來先上個(gè)同步鎖。你打開他寫的代碼,十個(gè)方法十把鎖。于謙兒這種大戶人家也不帶這樣上鎖的啊。

15. 我只知道 ArrayList,LinkedList 它配我用嗎?

有些兄弟可能只知道 ArrayList 能放東西。就算需要?jiǎng)討B(tài)調(diào)整的場(chǎng)景,哥們兒也從不考慮 LinkedList。系統(tǒng)慢的跟龜爬一樣,愣是說系統(tǒng)遇到瓶頸。

16. 我的方法里有無數(shù)的參數(shù),也許里面需要一個(gè)宇宙

有些程序大師,他需求可能比較多,性格比較貪婪。寫的方法也跟性格一樣邪惡,一個(gè)方法需要的參數(shù),從天上到地下,什么都需要。你要調(diào)他的方法,就跟有個(gè)黑洞吸住你不放一樣,陷進(jìn)去你就出不來了。放我去飛好不好?

17. 遞歸里偷偷抹掉出口條件,就讓服務(wù)器的 CPU 燃燒殆盡吧

有時(shí)候看到?jīng)]有出口的遞歸方法,你就知道,寫這段代碼的人的人生是多么悲催,他悲慘的連測(cè)試都不敢,生怕碰傷了自己。沒有出口的遞歸,就跟沒有出路的人生一樣。

18. 如果我不關(guān)閉資源,那么我就能讓公司多花些內(nèi)存錢

用了資源您不釋放,您是嫌山上的筍不夠采,下山來奪筍了吧。行行好,放了那個(gè)資源吧。

得,看到了這里,列位看官看個(gè)樂就行了,希望諸位千萬別使用這十八般兵器。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉