2008-10-16 14 views
6

Kolega i ja omawiamy najlepsze praktyki dotyczące porządkowania parametrów metody. Celem jest ustanowienie standardu w naszej organizacji w celu poprawy czytelności i produktywności poprzez nadanie naszym metodom wspólnych podpisów. Po prostu ustalamy wytyczne dla ostatnich absolwentów, których zatrudniamy.Jakie konwencje istnieją dla zamawiania argumentów w metodach?

Przykład (userid jest zawsze przekazany do badania połączeń):

GetOrders (ciąg USERID customerid int); GetOrders (string userId, int [] orderIds); GetCustomer (string userId, int customerId);

Moja teza jest następująca:

  1. wspólne argumenty pozostają najbardziej.
  2. pozostałe argumenty są oparte na ważności
  3. opcjonalne (zerowe) argumenty jako ostatnie.

Jego argument jest zasadniczo przeciwny.

Nie proszę tutaj o poprawną lub złą odpowiedź, ani o dyskusję. Chcę tylko zobaczyć, jakie standardy już istnieją.

Dzięki!

Odpowiedz

6

Poszedłbym z zamówieniem wejścia, wyjścia, opcjonalnie.

Opcjonalnie powinienem iść na końcu do mnie, ponieważ większość języków pozwala określić domyślną wartość opcjonalnych argumentów, aby uniknąć konieczności ich uwzględnienia. Przepis ten stanowi, że muszą one być ostatnim argumentem, w przeciwnym razie nie można ich upuścić.

Zakładamy, że nie możesz mieć nazwanych argumentów. Jeśli możesz je mieć, zawsze sugeruję użycie ich dla jasności, a kolejność stanie się punktem spornym.

3

Lubię układać je w kolejności alfabetycznej, według nazwy. Ułatwia zlokalizowanie tego, którego szukasz.

Zgadzam się, że opcjonalne z domyślnymi wartościami wydają się należeć do końca. W niektórych językach jest to wymagane.

Gdy masz przeciążone metody, zacznę od najczęściej używanego argumentu, a skończy się na tym, że ta wersja metody jest wyjątkowa.

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

+1 za rekomendację dla metod przeciążonych.Nie zgadzam się jednak z kolejnością alfabetyczną. – OregonGhost

+0

Tak, nie jestem zdecydowany na alfabetyzację. Jakie są twoje preferencje? – DOK

4

Staram się, aby wszystkie metody wykorzystujące podobne parametry używały ich w tej samej kolejności.

Do wyboru w przypadku pojedynczej metody zachowuję ważność. Opcjonalne elementy na końcu.

1

Jednym idiomem popularnym w programowaniu C jest to, że cel idzie najpierw, tak że w strcpy (A, B); kopiuje B na A (podobnie jak "A = B;" kopiuje B do A).

+0

bcopy używa odwrotności: void bcopy (const void * s1, void * s2, size_t n); – philant

1

Zamów rzeczy pojawiają się również w innych kontekstach.

Najłatwiej jest dodać argumenty do końca.

Powiązane problemy