簡體   English   中英

在 Java 中將方法作為參數傳遞給另一個方法是不好的做法嗎?

[英]In Java Is it bad practice to pass a method as an argument in another method?

我正在學習 Java 中的方法,並且很想知道在另一個方法中將方法作為參數傳遞是否是不好的做法。 雖然我知道有很多方法可以實現相同的解決方案,但有時以一種方式編寫的代碼比其他方式更有效。

例如,在代碼練習中,要求創建一個帶有兩個參數(名稱和位置)的方法,並創建一個帶有一個參數(分數)的第二個方法。 然后調用這兩個方法並使用以下分數數據(1500、900、400、50)顯示結果。

我的解決方案是這樣寫的:

    public class Main {

    public static void main(String[] args) {
    displayHighScorePosition("Fred",calculateHighScorePosition(1500));
    displayHighScorePosition("Ted", calculateHighScorePosition(900));
    displayHighScorePosition("Jen", calculateHighScorePosition(400));
    displayHighScorePosition("John",calculateHighScorePosition(50));
    }
    public static void displayHighScorePosition(String name, int highScorePosition) {
        System.out.println(name + " managed to get into position " + highScorePosition + " on the high score table");
    }
    public static int calculateHighScorePosition(int score) {
        int position = 4;
        if(score >= 1000) {
            position = 1;
        } else if (score >= 500) {
            position = 2;
        } else if (score >= 100) {
            position = 3;
        }
        return position;
    }
}

這顯示了與練習預期的輸出相同的輸出,但練習中編寫的代碼是

public class Main {

    public static void main(String[] args) {
    int highScorePosition = calculateHighScorePosition(1500);
    displayHighScorePosition("Fred", highScorePosition);

    int highScorePosition = calculateHighScorePosition(900);
    displayHighScorePosition("Ted", highScorePosition);

    int highScorePosition = calculateHighScorePosition(400);
    displayHighScorePosition("Jen", highScorePosition);

    int highScorePosition = calculateHighScorePosition(50);
    displayHighScorePosition("John", highScorePosition);

    }
    public static void displayHighScorePosition(String name, int highScorePosition) {
        System.out.println(name + " managed to get into position " + highScorePosition + " on the high score table");
    }
    public static int calculateHighScorePosition(int score) {
        int position = 4;
        if(score >= 1000) {
            position = 1;
        } else if (score >= 500) {
            position = 2;
        } else if (score >= 100) {
            position = 3;
        }
        return position;
    }
}

這有什么不同嗎? ie 是一種更好的編寫方式,還是當代碼變得更加復雜時我會遇到問題?

您不是將另一個方法作為參數傳遞,而是將方法的返回值作為參數傳遞,這是一個完全不同的概念。

無論如何,在這種情況下,第二個示例(除了語法錯誤,因為您不斷重新聲明一個變量而不是僅僅為其重新分配一個值)只是更加冗長,沒有明顯的收益。

如果您隨后在方法的其他地方使用了這些聲明的變量中的任何一個,那將是有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM