1. 程式人生 > >「奇淫技巧」如何寫最少的程式碼

「奇淫技巧」如何寫最少的程式碼

## 前言 由於性格原因,筆者很難沉下心來進行嚴肅的系統學習,總是喜歡折騰一些奇淫技巧,非常喜歡程式碼設計,扣程式碼的細節,所以本次分享一下我所知道的`如何寫最少的程式碼`的小技巧,如果你有更好的方案,歡迎在評論區留言,`方案很棒的話,加我微信,為你送上冬天的一杯奶茶~` ## Java:我想返回多個返回值 秀一下`Go`的多返回值: ```go package main import "fmt" // 返回 X + Y 和 X * Y func Computer(X, Y int) (int, int) { return X + Y, X * Y } ``` 眾所周知,Java僅支援單一返回值,一般情況下如果需要返回多個物件,我們會根據程式碼語義選擇容器或者新建一個新的類,把我們需要的資料包起來。 `這樣做有沒有問題?`當然沒有問題,但是瑕疵就在於:可能會產生沒啥語義但又不得不存在的`中間類`,我個人非常討論該類程式碼,那麼該如何解決這種問題呢? 首先需要認識到,解決方案必須滿足幾個要求: - 程式碼可複用 - 語義要清晰 - 安全 既然如此,我們可以採用`泛型`來滿足複用、語義清晰的要求,用`中間類`來滿足程式碼安全性的要求,程式碼如下: ```java public class MultipleTwoReturn { /** 第一個返回值 **/ private final A first; /** 第二個返回值 **/ private final B second; public MultipleTwoReturn(A first, B second) { this.first = first; this.second = second; } // 省略Get方法 } ``` 同時,我們可以依賴於`繼承`,讓該工具類拓展更多的引數: ```java public class MultipleThreeReturn extends MultipleTwoReturn { /** 第三個返回值 **/ private final C third; public MultipleThreeReturn(A first, B second, C third) { super(first, second); this.third = third; } } ``` 測試類: ```java public class MultipleApp { public static void main(String[] args) { MultipleTwoReturn returnTest = MultipleApp.getReturnTest(); System.out.println(returnTest.getFirst()); System.out.println(returnTest.getSecond()); } private static MultipleTwoReturn getReturnTest() { MultipleTwoReturn demo = new MultipleTwoReturn<>(0, "Kerwin Demo."); return demo; } } ``` 本質還是`普通物件`,但是加上`泛型`後威力劇增!由於在方法定義時就強制了`泛型約束`,語義非常清晰,同時可以完全杜絕上述的無語義中間類,當然一些必要的,有業務含義的組裝類,不建議使用這種方式。 ## 泛型:我想new一個物件 大家在學Java泛型之初有沒有這種想法?我想利用作為泛型約束,卻需要`new`一個`T`,但是Java它`new`不出來啊