整體而言,我覺得Java用起來不如C#方便,好用,但是確實Library/例子很多。C#最大的問題就是微軟一家獨大,而且沒啥好的Open Source的資源,例子少,所以,雖然語言好用,但是開發效率可能並不高。一下是我遇到的一些用Java不爽的地方: <br>
1. Property C#中可以直接 public string Name { get; private set; }來定義一個property, 而Java還在用getName(), setName(), 同樣功能程式碼要多不少,而且get/set也沒有直接用property直觀。
2. LINQ LINQ雖然用的不好會有效能問題,但是在絕大多數情況,用起來能極大的縮短程式碼量,可讀性也很好。Scala在Java之上增加了各種處理collection的API像fold, map, flatMap等等,不知道Java是不是有可能提供這些(或者已經提供了?)
3. File/Class name, Folder Structure Java中class name必須跟file name對應起來,folder structure必須跟package的名字對應。雖然這使得程式碼結構更清晰,但是我覺得這個更適合於大工程,如果我只是個小程式,按照規則,我的package是com.companyname.project, 那我就得建3層目錄,搞得太死板,用起來很不方便。相對而言,C#要靈活很多,你可以在一個檔案裡放多個class, 也可以讓不同目錄下的類屬於同一個namespace。如果你真的想要這個功能,也可以透過Stylecop來實現。另外,可能有同學說這樣比較容易找類,這個我同意,但是現代IDE已經把這個查詢功能做的超級方便了,即使沒有這個格式,也可以很容易找到.
9.Checked/Unchecked Exception Java把Exception分成Checked/Unchecked,感覺本身把這個問題複雜化了。按它的說法,可恢復的情況用checked exception,而不可恢復的情況用unchecked exception,但絕大多數情況,無論可不可恢復,你都需要gracefully shutdown或者恢復。別的語言很少有這樣設計的,我個人覺得這個設計把簡單的東西變麻煩了,結果大家以後可能就按最簡單的Unchecked exception做了
整體而言,我覺得Java用起來不如C#方便,好用,但是確實Library/例子很多。C#最大的問題就是微軟一家獨大,而且沒啥好的Open Source的資源,例子少,所以,雖然語言好用,但是開發效率可能並不高。一下是我遇到的一些用Java不爽的地方: <br>
1. Property C#中可以直接 public string Name { get; private set; }來定義一個property, 而Java還在用getName(), setName(), 同樣功能程式碼要多不少,而且get/set也沒有直接用property直觀。
2. LINQ LINQ雖然用的不好會有效能問題,但是在絕大多數情況,用起來能極大的縮短程式碼量,可讀性也很好。Scala在Java之上增加了各種處理collection的API像fold, map, flatMap等等,不知道Java是不是有可能提供這些(或者已經提供了?)
3. File/Class name, Folder Structure Java中class name必須跟file name對應起來,folder structure必須跟package的名字對應。雖然這使得程式碼結構更清晰,但是我覺得這個更適合於大工程,如果我只是個小程式,按照規則,我的package是com.companyname.project, 那我就得建3層目錄,搞得太死板,用起來很不方便。相對而言,C#要靈活很多,你可以在一個檔案裡放多個class, 也可以讓不同目錄下的類屬於同一個namespace。如果你真的想要這個功能,也可以透過Stylecop來實現。另外,可能有同學說這樣比較容易找類,這個我同意,但是現代IDE已經把這個查詢功能做的超級方便了,即使沒有這個格式,也可以很容易找到.
9.Checked/Unchecked Exception Java把Exception分成Checked/Unchecked,感覺本身把這個問題複雜化了。按它的說法,可恢復的情況用checked exception,而不可恢復的情況用unchecked exception,但絕大多數情況,無論可不可恢復,你都需要gracefully shutdown或者恢復。別的語言很少有這樣設計的,我個人覺得這個設計把簡單的東西變麻煩了,結果大家以後可能就按最簡單的Unchecked exception做了