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

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

          對一切使用異常

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

          你說什么?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 發(fā)生了什么:
          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!!!
          看起來不錯!

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

          一些開發(fā)人員認為他們通過將 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;
          } }
          注意,在構(gòu)造函數(shù)中提供最終值時,這對我很有用。如果你在類中設置了 final 值,那么它將不起作用。(可能是一些編譯器級別的優(yōu)化破壞了所有的樂趣)

          使用 Java 序列化,干就對了

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

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

          將對象用于一切

          你知道類嗎?浪費時間!你是否想看到代碼重用的巔峰之作?你去!
          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 } }
          這還是類型安全的,多么健壯的解決方案。

          充分擁抱便捷編程的藝術

          你知道比爾·蓋茨更喜歡懶惰的開發(fā)人員嗎?比爾·蓋茨說過:

          "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 -方便訪問!
          * 支持全局變量–您可能需要它們!
          * 大型接口優(yōu)于小型專用接口–可以使用的方法越多越好!
          * 支持繼承而不是合成(使用接口中的默認方法從未如此簡單)!
          * 始終使用裝箱類型–它們也可以用作對象!
          * 盡可能使用最短的名字(a, b, n 最好)!
          不要學習任何新知識–你總是最了解

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

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

          * 新類庫
          * 新語言
          * 新框架
          這樣可以節(jié)省你的時間!你永遠都不應學習任何新知識,因為你已經(jīng)是最好的了。

          你有能力去做這件事,并不代表你應該做

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關注微信

                涩爱av色老久久精品偷偷鲁 | 国产成人黄色在线观看 | 欧美日韩国产小视频 | aigao无码精品网站 | 13一16女处被毛片视频 |