日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java编写p_如何编写可怕的Java代码?

發布時間:2024/9/27 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java编写p_如何编写可怕的Java代码? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我決定告訴你如何編寫可怕的Java代碼。如果你厭倦了所有這些美麗的設計模式和最佳實踐,并且想寫些瘋狂的東西,請繼續閱讀。

如果你正在尋找有關如何編寫良好代碼的建議,請查看其它文章!

1|0對一切使用異常

你知道循環對嗎?差一錯誤(英語:Off-by-one error,縮寫 OBOE,是在計數時由于邊界條件判斷失誤導致結果多了一或少了一的錯誤,通常指計算機編程中循環多了一次或者少了一次的程序錯誤,屬于邏輯錯誤的一種)很容易犯。當你迭代一個集合時,很容易出錯。讓我們看看如何使用 Java 異常處理來解決該問題,而不用擔心這些討厭的差一錯誤!public?static?void?horribleIteration(String?[]?words){????int?i?=?0;????try?{????????while(true){

System.out.println(words[i]);

i++;

}

}?catch?(IndexOutOfBoundsException?e){????????//iteration?complete

}

}

2|0不用擔心訪問修飾符

你說什么?Java 中的訪問修飾符,這不是浪費時間嘛!你是否知道將屬性/方法等設為私有只是一個建議?如果你想修改它,那就去做吧!沒什么能阻止你(除了缺乏知識之外)。如果是這種情況,請看如下代碼。public?static?void?readPrivate()?throws?NoSuchFieldException,?IllegalAccessException?{

Field?f?=?System.class.getDeclaredField("lineSeparator");

f.setAccessible(true);????String?separator?=?(String)?f.get(System.class);

System.out.println("Line?separator?is?"?+?separator?+?".");

}

我們在這里讀取 lineSeparator,這并沒有什么。但是修改 lineSeparator 會帶來更多樂趣!在我們修改代碼中的 lineSeparator 之后,看看 System.out.println 發生了什么:public?static?void?readWritePrivate()?throws?NoSuchFieldException,?IllegalAccessException?{????Field?f?=?System.class.getDeclaredField("lineSeparator");

f.setAccessible(true);????String?separator?=?(String)?f.get(System.class);????System.out.println("Line?separator?is?"?+?separator?+?".");

f.set(System.class?,"!!!");????System.out.println("Line?one");????System.out.println("Line?two");????System.out.println("Line?three");

}

輸出為:Line?separator?is?WARNING:?All?illegal?access?operations?will?be?denied?in?a?future?release.Line?one!!!Line?two!!!Line?three!!!

看起來不錯!

3|0在 Java 中沒有什么是真正的 final

一些開發人員認為他們通過將 final 關鍵字放在變量前面來以說明不會去更改這個值。事實是——有時候你真的想要改變一個 final 字段的值,所以這是如何做的:public?static?void?notSoFinal()?throws?NoSuchFieldException,?IllegalAccessException,?InterruptedException?{

ExampleClass?example?=?new?ExampleClass(10);

System.out.println("Final?value?was:?"+?example.finalValue);

Field?f?=?example.getClass().getDeclaredField("finalValue");

Field?modifiersField?=?Field.class.getDeclaredField("modifiers");

modifiersField.setAccessible(true);

modifiersField.setInt(f,?f.getModifiers()?&?~Modifier.FINAL);

f.setInt(example,?77);

System.out.println("Final?value?was:?"+?example.finalValue);

}

public?static?class?ExampleClass?{????final?int?finalValue;

public?ExampleClass(int?finalValue){????????this.finalValue?=?finalValue;

}

}

注意,在構造函數中提供最終值時,這對我很有用。如果你在類中設置了 final 值,那么它將不起作用。(可能是一些編譯器級別的優化破壞了所有的樂趣)

4|0使用 Java 序列化,干就對了

這很簡單,用 Java 序列化,玩得開心,好好享受。

好吧,我想你想要一些理由。我看到 Java 平臺首席架構師 Mark Reinhold 表示,他們后悔將序列化引入到 Java。顯然,Java 中大約 1/3 的安全漏洞僅來自于序列化。

5|0將對象用于一切

你知道類嗎?浪費時間!你是否想看到代碼重用的巔峰之作?你去!public?static?void?printThings?(List?things){????int?i?=?0;????try?{????????while(true){

System.out.println(things.get(i));

i++;

}

}?catch?(IndexOutOfBoundsException?e){????????//iteration?complete

}

}

List?superList?=?new?ArrayList();

superList.add(7);

superList.add("word");

superList.add(true);

superList.add(System.class);

printThings(superList);

您可以相信我們一直以來都擁有這種力量嗎?另外,組合兩個模式還有額外的好處!

這只是你使用 Object 進行操作的開始。如果有疑問,請記住-使用對象。如果需要,你隨時可以使用這種驚人的模式進行回退!public?static?void?printThingsUppercaseStrings?(List?things){????int?i?=?0;????try?{????????while(true){????????????Object?o?=?things.get(i);

System.out.println(o);????????????if(o.getClass()?==?String.class){????????????????String?so?=?(String)?o;

so?=?so.toUpperCase();

System.out.println(so);

}

i++;

}

}?catch?(IndexOutOfBoundsException?e){????????//iteration?complete

}

}

這還是類型安全的,多么健壯的解決方案。

6|0充分擁抱便捷編程的藝術

你知道比爾·蓋茨更喜歡懶惰的開發人員嗎?比爾·蓋茨說過:"I will always choose a lazy person to do a difficult job...because, he will find an easy way to do it. --Bill Gates"

"我總是會選擇一個懶人去完成一份困難的工作...因為,他會找到捷徑。" -- 比爾蓋茨

因此,有了比爾·蓋茨(Bill Gates)的大力支持,我們可以完全接受我們的懶惰。你準備好了嗎?那就開始吧!永遠不要編寫測試,只是不要編寫錯誤!

將所有都定義為 public -方便訪問!

支持全局變量–您可能需要它們!

大型接口優于小型專用接口–可以使用的方法越多越好!

支持繼承而不是合成(使用接口中的默認方法從未如此簡單)!

始終使用裝箱類型–它們也可以用作對象!

盡可能使用最短的名字(a, b, n 最好)!

7|0不要學習任何新知識–你總是最了解

一個程序員最重要的品質就是對自己有信心。相信自己什么都懂,沒有什么可學的!

考慮到這一點,請確保不要學習:新類庫

新語言

新框架

這樣可以節省你的時間!你永遠都不應學習任何新知識,因為你已經是最好的了。你有能力去做這件事,并不代表你應該做

總結

以上是生活随笔為你收集整理的java编写p_如何编写可怕的Java代码?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。