En este primer post colocaré los lineamientos que se han acordado, para que sea más fácil enterarse o recordarlos

Identificadores
- Los nombres de identificadores se escriben usando palabras en español, en caso de necesitar la letra ñ, se debe buscar un sinónimo, de no encontrarse uno adecuado, sustituirla por... (nn o ni).
- TODO el código que se desarrolle como parte del motor estará dentro del espacio de nombres Pilas, conforme avance el proyecto y crezca el código se decidirá si se usan divisiones.
- Las clases se nombran con mayúscula inicial, el resto minúsculas, sin usar decoradores, ejemplo: Clase.
- Utilizar siempre clases y nunca structs.
- Las funciones miembro se escriben todas con minúsculas, usando guión bajo (_) como separador entre palabras, ejemplo: Clase::funcion_miembro();
- Las variables miembro siguen una nomenclatura similar a las funciones, con la excepción de que al nombrarlas se preceden con m_, ejemplo: Clase::m_variable_miembro;
- Las funciones se nombran en infinitivo, excepto las que devuelven valores tipo bool, ejemplo:
- Código: Seleccionar todo
void Actor::establecer_rotacion( float rotacion );
void Mono::gritar();
bool Actor::colisiona_con_punto( int x, int y );
Esto permite identificar más fácilmente entre funciones que indican acciones y funciones que evalúan estados. - Seguir la regla de const-correctness: todos aquellos métodos que no modifiquen al objeto deberán ser identificados como constantes, así como los parámetros de los métodos.
- Los archivos se nombran... (clase.h o Clase.h).
- Los guards de cabeceras... (CLASE_H o Clase_H
Otros
- Los corchetes que delimitan un bloque de código, se escriben en su propia línea y alineados al nombre de la función o instrucción que inicia el bloque.
- Utilizar enum y constantes en lugar de #define.
- Procurar no exceder 80 caracteres por línea al escribir código, tratando siempre de facilitar la lectura.
- Usar espacios en lugar de tabuladores para indentar código, siendo X espacios por nivel de indentación.
- Los operadores van separados un espacio de los identificadores que intervienen en la operación, el código colocado dentro de un paréntesis va distanciado de ellos por un espacio, se usa un espacio después de una coma, ejemplos:
- Código: Seleccionar todo
x + y; // no x+y;
( int parametro1, int parametro2 ); // no (int param1,int param2);
- En el caso de funciones, el paréntesis que inicia la lista de parámetros va junto al nombre de la función, sin separación. No así para el caso de bucles, sentencias condicionales y demás, donde el paréntesis irá separado de la sentencia usando un espacio, ejemplo:
- Código: Seleccionar todo
Clase::metodo( int parametro )
if ( condicion )
- Los modificadores (referencias y punteros), se colocan junto al identificador que indica el tipo de dato, no junto al nombre de la instancia que se está declarando. Ejemplo: Clase& objeto; en lugar de Clase &objeto;
Si es necesario declarar varias referencias o punteros de un mismo tipo, hacerlo en líneas diferentes, es decir:- Código: Seleccionar todo
Clase* puntero1;
Clase* puntero2;
- Se usa cmake como herramienta para automatizar la construcción del código.
----------------------------------------------------------
Abro esta discusión para que definamos detalles del estilo de codificación de la versión C++ del motor, ya he mencionado que el código que empecé eran más bien pruebas conceptuales, pero viendo que ya hay código para contribuir, debemos dejar todo definido para que sea más sencillo continuar

Empiezo con lo que estaba yo trabajando, pero según acordemos modifico para que todo quede en el primer post para fácil referencia. Además, creo debemos esperar a que se decida "oficialmente" si los identificadores irán en inglés o español.
Repito, esto es lo que yo estaba usando en mis pruebas:
Espacios de nombres
- TODO el código que se desarrolle como parte del motor estará dentro de un mismo espacio de nombres: Pilas.
Clases
- Nombres de identificadores en español, en el caso de una letra ñ sustituirla por dos n, así: tamaño => tamanno.
- Nombres de clases con mayúscula inicial, sin caracteres identificadores (del tipo CClase), ejemplo: Clase.
- Funciones miembro escritas todas con minúsculas, palabras separadas por guión bajo (_), ejemplo: Clase::funcion_miembro()
- Variables miembro, nomenclatura similar a las funciones miembro, anteponiendo al nombre los caracters m_, ejemplo: Clase::m_variable
Bien, a reserva de que deberíamos tratar de unificar con el estilo de la versión "principal" (en Python), y decidir "oficialmente" con respecto al español, veamos sus ideas para definir esto

En cuanto a herramientas, Juanxo recomendó usar cmake en lugar de archivos Make "a mano" (¿o autotools?), aunque no lo he usado he estado leyendo que es bastante mejor que los otros métodos, así que a mi me parece bien
