避免使用大型單片方法被認爲是一種好的做法。我個人喜歡識別所有代碼,這些代碼具有獨特的,明確的目的,並將它們重構爲一種方法。這樣,代碼更像是一本書。在Java中將「main」方法和它們的「helper」方法組合在一起
這種方法的一個顯而易見的問題是,我的班最終有大量的方法超出了他們預期的範圍,這是我非常不希望的。
有一些方法可以在Java中創建嵌套函數,但由於該功能不直接受該語言支持,所以對於我來說,生成的代碼通常非常難看 - 非常難看。
也可以使用嵌套類。我不喜歡這個解決方案的是,它有點笨拙 - 是什麼? - 當「分組在一起」中的一些涉及的方法是重寫的方法。
含糊不清的問題,但無論如何,我想知道人們如何去做這件事。
編輯:我的意思舉例:
public class ClassWithTwoMainMethods {
private int var1;
private int var2;
public void doSomething(int a) {
if (conditionToCheck(a)) {
doSomethingSpecific();
}
}
private void doSomethingSpecific() {
...
}
private boolean conditionToCheck(int a) {
...
}
public void doSomethingElse(int a, int b) {
doSomethingElseHelper1(a+b);
doSomethingElseHelper2();
doSomethingElseHelper3();
}
private void doSomethingElseHelper1(int arg) {
...
}
private void doSomethingElseHelper2() {
...
}
private void doSomethingElseHelper3() {
...
}
}
乍一看,這不是顯而易見的是,上述類有一個「主」方法,不應該被其他地方使用的兩個「幫手」 ,另一個「主」方法與三名助手。
你應該更具體一點,我現在可以給你寫10頁左右的良好面向對象方法:)。 – libik
爲什麼公共/私人範圍不夠? –
因爲無法知道conditionToCheck()是doSomething()的helper還是doSomethingElse(),因爲它可以被兩者調用。人們可以使用命名約定,但這非常「C-ish」......最佳地,輔助方法應該只能從他們的「主」中調用。 – deinocheirus