2010-12-21 13 views
6

¿Alguna recomendación sobre cómo utilizar clases anónimas sin perder la coherencia con Allman indent style? Realmente no me gusta nada de lo que he inventado, p.Allman-style anonymous classes

// Pass as parameter. 
foo(new Clazz() 
    { 
     // Do stuff. 
    }); 

// Assign to variable. 
Clazz bar = new Clazz() 
      { 
       // Do stuff. 
      }; 
+1

cuál es incorrecto con lo que has publicado? ¿Por qué no te gusta? – luke

+0

Los terminadores de línea terminan en posiciones arbitrarias, y los corchetes no están alineados verticalmente (los paréntesis incluyen los argumentos de la llamada al método, por ejemplo), lo que anula el propósito del estilo Allman. – gdejohn

Respuesta

0

Esto es lo que me he decidido.

Foo foo = new Foo() 
{ 
    // Do stuff. 
}; 

Y simplemente no definen las clases anónimas dentro de llamadas a métodos más.

2

El mejor compromiso que se me ocurrió para mi propio código, se sangría de la clase anónima un solo nivel de tabulación, y poniendo los paréntesis de cierre en una nueva línea.

// Pass as parameter. 
foo(new Clazz() 
    { 
     // Do stuff. 
    } 
); 

void func() { 
    foo(new Clazz() 
     { 
      // Do stuff. 
     } 
    ); 
} 

// Assign to variable. 
Clazz bar = new Clazz() 
    { 
     // Do stuff. 
    }; 
+0

Realmente no lo hace por mí. Gracias de cualquier manera. – gdejohn

1

El estilo Allman es realmente acerca de alinear {llaves}, no todos (corchetes). Supongo que eres libre de hacer ambas cosas si quieres, pero parece ser una fuente de problemas (como este) para mí, sin una clara recuperación de la legibilidad. En otras palabras, un fetiche lógico :-)

Se puede seguir la guía en http://mbreen.com/javastyle.html: "Una declaración que contiene una declaración con un bloque de código se sangra por primera vez como una declaración." Creo que iba a cambiar sus ejemplos a

foo (new Clazz() 
    { 
     // Do stuff. 
    }); 

Clazz bar = (
    new Clazz() 
    { 
     // Do stuff. 
    }); 
Cuestiones relacionadas