有沒有辦法以某種方式減少或壓縮傳遞給main
這些參數的參數的數量?假設我有一個Ludo遊戲,我需要傳遞玩家人數,姓名,顏色,玩家類型(人類,計算機),計算機玩家的AI類型。這是很多爭論。如何減少傳遞給主體的參數數量
我不認爲我可以使用Effective Java中描述的任何技術。有沒有什麼聰明的方法來實現這一目標?
有沒有辦法以某種方式減少或壓縮傳遞給main
這些參數的參數的數量?假設我有一個Ludo遊戲,我需要傳遞玩家人數,姓名,顏色,玩家類型(人類,計算機),計算機玩家的AI類型。這是很多爭論。如何減少傳遞給主體的參數數量
我不認爲我可以使用Effective Java中描述的任何技術。有沒有什麼聰明的方法來實現這一目標?
那麼你可以減少一切只有一個參數,如果你願意到非規範化的東西和接受,例如CSV字符串:
"3, Jack, Jill, Jon, ..."
然後在您的main()
方法只是解析CSV:
public static void main(String[] args) {
String input = args[0];
String[] params = input.split(",\\s+");
int numPlayers = Integer.parseInt(params[0]);
String name1 = params[1];
// and so on
}
如何在文件名和路徑只是存儲參數的文件名作爲參數
如果你想在程序開始時獲得這些信息,那麼如果你只是從一個csv文件中讀取它們,那麼這將是最好的,因爲它們很容易在java中訪問和操作。
如果您想將這些信息從一種方法傳遞給另一種方法,我會建議使用一個模型類,它存儲程序運行時所需的所有有價值的信息。這會提高性能,因爲每次將信息傳遞給新方法時都不需要爲變量分配新空間。
我喜歡將長參數列表作爲PHP中的關聯數組或作爲Javascript中的對象字面值傳遞。在我的函數裏面我有一個默認值的數組。然後我接受傳遞的params數組,並用傳入的覆蓋默認值。這樣,我不必記住任何順序,我可以省去不想傳遞的參數/我想要使用默認值的位置,並且數組鍵在調用函數的位置更具可讀性。
實施例(對不起,PHP):
function talk(array $params)
{
$defaults = [
'foo' => 'Hi,',
'bar' => 'my ',
'baz' => 'name is ',
'foobar' => 'Benni'
];
$eff_params = array_merge($defaults, $params);
return $eff_params['foo'] . $eff_params['bar'] . $eff_params['baz'] . $eff_params['foobar'];
}
然後調用這樣的功能:
echo talk([
'foobar' => 'Ted',
'foo' => 'Hello '
]);
// Hello my name is Ted
順便說一句,JQuery的使用這種技術有很多,例如因爲它的$ .ajax()函數
有很多方法可以從某人獲取信息,那麼您對我們有什麼期望?告訴你如何從控制檯讀取輸入(已經在這裏回答),如何讀取文件(這裏已經回答),如何從數據庫中讀取(已經在這裏回答)或者如何從網頁讀取(已經在這裏回答)?那麼請大家停止提出不清楚和過於寬泛的問題? – Tom
您可以將設置存儲在屬性文件中。 –
所以你想返回更少的參數? –