2017-08-30 15 views
-1

Gibt es eine Möglichkeit, die Anzahl der Argumente zu reduzieren oder zu verdichten, die an main übergeben werden, sie sind viele?Wie die Anzahl der Parameter reduziert werden

Sagen wir, ich habe ein Ludo-Spiel, und ich muss die Anzahl der Spieler, Namen, Farben, Art des Spielers (Mensch, Computer), Art der KI für Computerspieler übergeben. Das sind viele Argumente.

Ich glaube nicht, dass ich eine der in Effective Java beschriebenen Techniken verwenden kann. Gibt es einen klugen Weg, dies zu erreichen?

+0

Es gibt viele Möglichkeiten, um Informationen von jemandem zu bekommen, also was erwarten Sie von uns? Erzähle dir, wie man Eingaben von der Konsole liest (schon beantwortet), wie man eine Datei liest (schon beantwortet), wie man aus einer Datenbank liest (schon beantwortet) oder wie man von einer Webseite liest (schon beantwortet)? Und dürfen die Wähler aufhören, unklare und zu weit gefasste Fragen aufzuheben? – Tom

+0

Sie können die Einstellungen in der Eigenschaftendatei speichern. –

+0

Sie möchten also weniger Parameter zurückgeben? –

Antwort

1

Nun, Sie konnte reduziert alles auf nur einen Parameter, wenn Sie bereit sind, Dinge zu denormalize und zu akzeptieren, zum Beispiel eines CSV-String:

"3, Jack, Jill, Jon, ..." 

Dann in Ihrer main() Methode nur analysiert die 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 
} 
1

wie über Parameter in der Datei und nur Pfad den Dateinamen als Parameter speichern

0

Wenn Sie diese Informationen am Anfang des Programms erfassen möchten, wäre es am besten, wenn Sie sie nur aus einer CSV-Datei lesen, da sie sehr einfach in Java zu erreichen und zu manipulieren sind.

Wenn Sie diese Informationen von einer Methode zu einer anderen weitergeben möchten, würde ich empfehlen, eine Modellklasse zu verwenden, die alle wertvollen Informationen speichert, die Sie benötigen, während das Programm läuft. Das würde die Leistung erhöhen, da Sie nicht jedes Mal, wenn Sie die Informationen an eine neue Methode übergeben, neuen Speicherplatz für die Variablen zuweisen müssen.

0

Ich überlasse gerne lange Parameterlisten als assoziatives Array in PHP oder als Objektliteral in Javascript. Innerhalb meiner Funktion habe ich ein Array mit Standardwerten. Ich nehme dann das übergebene params-Array und überschreibe die Default-Werte mit dem übergebenen. Auf diese Weise muss ich mich an keine Reihenfolge erinnern, ich kann Parameter auslassen, die ich nicht übergeben möchte/wo ich die Standardwerte verwenden möchte, und die Array-Schlüssel machen den Code an der Stelle lesbarer, an der die Funktion aufgerufen wird .

Beispiel (Sorry, 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']; 
} 

dann die Funktion wie folgt bezeichnen:

echo talk([ 
    'foobar' => 'Ted', 
    'foo' => 'Hello ' 
]); 

// Hello my name is Ted 
BTW

, JQuery verwendet diese Technik eine Menge, z.B. für es ist $ .ajax() Funktion

Verwandte Themen