2008-10-16 4 views
6

Ein Kollege und ich diskutieren Best Practices bezüglich der Parameter der Bestellmethode. Ziel ist es, einen Standard in unserer Organisation zu etablieren, um die Lesbarkeit und Produktivität zu verbessern, indem wir unseren Methoden gemeinsame Signaturen geben. Wir erstellen lediglich Richtlinien für die Absolventen, die wir einstellen.Welche Konventionen existieren, um Argumente in Methoden anzuordnen?

Beispiel (userId wird immer in übergeben, die Anrufe zu überwachen):

GetOrders (string userId, int customerId); GetOrders (Zeichenfolge userId, int [] orderIds); GetCustomer (Zeichenfolge userId, int customerId);

Mein Argument ist folgendes:

  1. gemeinsame Argumente sind die meisten links.
  2. Die verbleibenden Argumente basieren auf der Wichtigkeit
  3. optionale (NULL) Argumente zuletzt.

Sein Argument ist im Wesentlichen das Gegenteil.

Ich bitte nicht um eine richtige oder falsche Antwort hier, noch eine Diskussion. Ich möchte nur sehen, welche Standards bereits existieren.

Danke!

Antwort

6

Ich würde mit der Reihenfolge der Eingabe gehen, Ausgabe, optional.

Optional sollte am Ende für mich gehen, weil die meisten Sprachen Sie einen Standardwert für optionale Argumente angeben können, um zu vermeiden, dass sie enthalten sind. Die Bestimmung davon ist, dass sie das letzte Argument sein müssen, sonst können Sie sie nicht fallen lassen.

Das geht davon aus, dass Sie keine benannten Argumente haben können. Wenn Sie sie haben können, würde ich immer vorschlagen, sie für Klarheit zu verwenden, und Ordnung wird ein strittiger Punkt.

3

Ich mag es, sie in alphabetischer Reihenfolge, namentlich anzuordnen. Erleichtert das Auffinden der Person, die Sie suchen.

Ich stimme zu, dass optionale mit Standardwerten am Ende zu gehören scheinen. In einigen Sprachen ist dies erforderlich.

Wenn Sie Methoden überladen haben, würde ich mit dem am häufigsten verwendeten Argument beginnen, und am Ende mit dem (n), die diese Version der Methode einzigartig machen.

public method foo (string name) 
public method foo (string name, string city) 
public method foo (string name, string city, string state) 
+0

+1 für die Empfehlung für überladene Methoden.In alphabetischer Reihenfolge nicht einverstanden. – OregonGhost

+0

Ja, ich fühle mich nicht stark alphabetisiert. Was ist deine Präferenz? – DOK

4

Ich versuche, alle Methoden, die ähnliche Parameter verwenden, verwenden sie in der gleichen Reihenfolge.

Für die Wahl für eine einzige Methode, gehe ich nach Wichtigkeit. Optionale Artikel zuletzt.

1

Ein Idiom in C-Programmierung beliebt ist, dass das Ziel zuerst geht, so dass in Strcpy (A, B); kopiert B nach A (ähnlich wie "A = B;" kopiert B nach A).

+0

bcopy verwendet das Gegenteil: void bcopy (const void * s1, void * s2, size_t n); – philant

1

Bestellen Sie die Dinge auch in anderen Kontexten erscheinen.

Es ist am einfachsten, Argumente am Ende hinzuzufügen.