2011-01-09 7 views
10

Ejemplo: Thread::Thread:¿Cómo debo sangrar para no hacer nada en los constructores de listas de inicialización?

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_; 
    } 
}; 

Me parece que no puede llegar a una forma de sangría cosas para que no se ve extraño ... y sin embargo, este es un patrón común. ¿Cuáles son las formas más comunes de sangrar esto?

+0

Como he respondido preguntas como esta antes: Siempre que sea coherente, realmente no importa. :) (Dicho esto, tengo curiosidad por qué cree que es extraño. Se ve perfectamente bien para mí. :) – greyfade

+0

ponerlo todo en una sola línea y no pensar en ello! : D – ybungalobill

+1

@greyfade: parte de ser consecuente es hacer lo que otros hacen. Nunca he visto a nadie expresar una opinión sobre esto, así que pregunté. No sé exactamente por qué, solo me hace encogerme por alguna razón. @ybungalobill: Eso dificulta la fusión de cosas en el control de la fuente. –

Respuesta

17

Siempre pongo bloques vacíos en una sola línea - es decir, { } (nótese el espacio!).

Además, pongo los dos puntos y las comas delante de los miembros de la lista de inicialización en lugar de después, esto hace que agregar miembros más tarde sea más fácil.

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

cierto (aunque yo no uso este estilo) este estilo puede ser bueno porque es el único MS Visual Studio no se hace un lío con su formato automático. – anatolyg

+2

A veces cuando parece que no debería ser un código agrego un comentario/* deliberadamente vacío */(pero sólo si se necesita ser explicado). –

+0

@Martin: ¿Agregarías uno aquí? –

3

Esto es cómo lo hago:

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

Pero su camino no parece extraño para mí.

2

Así es como lo hago

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

Google estilo (al menos protobuf), sería:

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

Así es como lo hago, y por qué no veo nada mal con su muestra:

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

Como lo que a mí respecta, hacerlo a tu manera: Mientras usted está auto-consistente y coherente con el proyecto que está trabajando, no importa lo que su estilo de sangría es.

0

lo recomiendo poner un comentario en el cuerpo constructor vacío, sólo para que cualquiera que lea el código sabe que la intención es estar vacío. De esta forma, pueden estar seguros de que no se trata de que hayas olvidado insertar el código allí.

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

sabes qué, en realidad no me gusta esto porque asustará a alguien para poner el código aquí más tarde. Pero si es necesario, el mantenedor no debe ser coereced/biaised en el pensamiento de no hacer eso por un comentario aterrador. –

+0

"vacío" es un comentario aterrador, ¿verdad? Creo que uno podría ser más explícito, por ejemplo "// Intencionalmente no puse ningún código aquí, pero continúas si crees que es lo correcto", pero creo que eso podría ser un poco exagerado. Cualquier comentario le dará menos miedo a un mantenedor que obligarlo a intentar adivinar cuál fue la intención del autor original, debido a la ausencia de pistas sobre por qué el cuerpo del método está vacío. –

Cuestiones relacionadas