2011-01-09 16 views
10

Przykład: Thread::Thread:W jaki sposób należy wcięcia nie robić konstruktorów listy inicjalizacji?

class Thread 
{ 
    Process * parent_; 
    unsigned __int32 id_; 
    void * entryPoint_; 
public: 
    Thread(Process * parent, unsigned __int32 id, void * entryPoint) : 
     parent_(parent), 
     id_(id), 
     entryPoint_(entryPoint) 
    { 
    } 
    unsigned __int32 GetId() const 
    { 
     return id_; 
    } 
    void * GetEntryPointAddress() const 
    { 
     return entryPoint_; 
    } 
}; 

ja nie potrafię wymyślić sposób wcięcia rzeczy tak, że nie wygląda dziwnie ... a jednak jest to wspólny wzór. Jakie są typowe sposoby wcięcia tego?

+0

Jak już odpowiedział na takie pytania: tak długo, jak twoje są zgodne, to naprawdę nie ma znaczenia. :) (Powiedziałem, że jestem ciekawy, dlaczego uważasz, że wygląda dziwnie, wygląda mi doskonale. :) – greyfade

+0

wszystko to w jednym wierszu i nie myśl o tym! : D – ybungalobill

+1

@ greyfade: Część bycia konsekwentnym robi to, co robią inni. Nigdy nie widziałem, żeby ktoś wyraził opinię na ten temat, więc zapytałem. Nie wiem dokładnie dlaczego - po prostu sprawia, że ​​się boję z jakiegoś powodu. @ybungalobill: To sprawia, że ​​scalanie rzeczy w kontroli kodu jest trudne. –

Odpowiedz

17

Zawsze umieszczam puste klocki na jednej linii - tj. { } (zwróć uwagę na spację!).

Co więcej, zwykle umieszczam dwukropek i przecinki przed członami listy inicjalizacyjnej zamiast po niej - to sprawia, że ​​dodawanie członków później jest łatwiejsze.

Thread(Process * parent, unsigned __int32 id, void * entryPoint) 
    : parent_(parent) 
    , id_(id) 
    , entryPoint_(entryPoint) 
{ } 
+0

BTW (nawet jeśli nie używam tego stylu) ten styl może być dobry, ponieważ jest to jedyny program MS Visual Studio, który nie zepsuje swojego automatycznego formatowania. – anatolyg

+2

Czasami, gdy wygląda na to, że powinienem podać kod, dodam komentarz/* Celowo pusty */(ale tylko jeśli trzeba to wyjaśnić). –

+0

@Martin: Czy mógłbyś dodać tutaj? –

3

To jak to zrobić:

Thread(Process * parent, unsigned __int32 id, void * entryPoint) 
    :parent_(parent), 
    id_(id), 
    entryPoint_(entryPoint) 
{} 

Ale swoją drogą nie wygląda dla mnie dziwne.

2

Oto jak to zrobić

public: 
    Thread(Process * parent, unsigned __int32 id, void * entryPoint) : 
    parent_(parent), 
    id_(id), 
    entryPoint_(entryPoint) 
    { } 

Google styl (conajmniej protobuf), byłoby:

public: 
Thread(Process * parent, 
     unsigned __int32 id, 
     void * entryPoint) 
    : parent_(parent), 
    id_(id), 
    entryPoint_(entryPoint) { } 
2

Oto jak to zrobić, i dlaczego ja nic nie widzę źle z twoją próbką:

Thread(Process * parent, unsigned __int32 id, void * entryPoint) : 
     parent_(parent), 
     id_(id), 
     entryPoint_(entryPoint) { } 

Jako Jeśli chodzi o mnie, zrób to po swojemu: tak długo, jak jesteś konsekwentny i spójny z projektem, nad którym pracujesz, nie ma to znaczenia w twoim stylu wcięcia.

0

Zalecam umieszczenie komentarza w pustym korpusie konstruktora, aby każdy czytający kod wiedział, że ma być pusty. W ten sposób mogą być pewni, że nie jest tak, że zapomniałeś wstawić tam kod.

Thread(Process * parent, unsigned __int32 id, void * entryPoint) : 
    parent_(parent), 
    id_(id), 
    entryPoint_(entryPoint) 
{ 
    // empty 
} 
+1

wiesz co, właściwie to mi się nie podoba, bo przestraszy kogoś, żeby umieścić kod tutaj później. Ale jeśli jest to konieczne, opiekun nie powinien być koedukowany/nastawiony na myślenie, aby tego nie robić przez przerażającą uwagę. –

+0

"pusty" to naprawdę przerażający komentarz? Sądzę, że jeden może być bardziej wyraźny, np. "// Celowo nie wstawiłem tu żadnego kodu, ale kontynuuj, jeśli uważasz, że to jest właściwe", ale myślę, że może to być trochę przesada. Każdy komentarz będzie mniej przerażający dla opiekuna, niż zmuszenie go do odgadnięcia, co było pierwotnym intencją autora, ze względu na brak jakichkolwiek wskazówek, dlaczego ciało metody jest puste. –

Powiązane problemy