2009-07-22 11 views
5

Después de encontrar con frecuencia la recomendación de no utilizar guiones bajos principales y dobles en identificadores C/C++, decidí arreglar todas nuestras fuentes de una vez por todas. Lo que necesito hacer ahora es convertir _Identifier en Identifier_.Cómo actualizar todos los nombres de identificadores C/C++ en un proyecto

¿Debo usar una herramienta especializada para esta tarea de expresiones regulares para este trabajo? En este último caso, ¿cuál es el patrón para que coincida con el identificador C/C++?

Respuesta

13

Aunque soy uno de los que señala con frecuencia que los nombres con guiones bajos principales pueden reservarse, le recomiendo encarecidamente que no haga esto a menos que experimente problemas causados ​​por los nombres. Hacer este cambio global hará que su sistema de control de versiones sea menos útil de lo que podría ser de otra manera al causar todo tipo de difusiones espurias. Además, existe la posibilidad de crear nombres duplicados.

Además, hay muchos nombres de guiones bajos que son perfectamente válidos. Se piensa inmediatamente en __LINE__ y __FILE__, etc., y en todos los nombres de funciones no estándar que puede proporcionar su implementación específica . Filtrar esos nombres no será trivial (diría que es casi imposible), sin duda un simple script de Perl o sed no será suficiente.

Por lo tanto, le sugiero que cambie los nombres archivo por archivo a medida que realiza otros cambios en el código. Cambie sus estándares de programación para evitar los principales nombres de subrayado y escriba un código nuevo de acuerdo con los estándares.

+0

Estoy de acuerdo con esto. Donde el guión bajo no es tan importante. –

+4

Sin embargo, si tiene un seguimiento de problemas, genere un error (de baja prioridad) al nombrar, y cuando actualice un archivo, realice dos comprobaciones: una para corregir los nombres y otra para realizar otros cambios. Checkins como "cambio de una línea, y también 200 líneas modificadas para corregir el nombre" tienen diferencias realmente inútiles. –

+0

Estoy de acuerdo también. No intentes arreglar algo que no esté roto. Sé que el código a veces puede verse terrible. Mis proyectos están llenos de tales cosas. Pero te acostumbrarás. – TalkingCode

0

Si sus pruebas de regresión son sólidas, entonces no debería tener problemas si solo escribe un script rápido de Perl para reemplazar todo y ejecutar el conjunto de pruebas. Si no tiene pruebas de regresión sólidas ... bueno, entonces puede hacer el reemplazo del script Perl y simplemente reconstruir el código. Si la compilación funciona, entonces las posibilidades son bastante buenas de que todo esté bien. En otras palabras, pruebe la solución rápida y solo use una herramienta especializada si eso no funciona.

7

Si usa Visual Studio, existen complementos de refactorización como Visual Assist X para ayudarlo con esto.

7

Perl debería hacer el trabajo, pero hay Coccinelle para cuando se pone complicado.

1

Netbeans puede hacer esto para todo el proyecto, utilizando el comando de menú Refactor-> Cambiar nombre. Pero solo funciona para un único identificador cada vez, por lo que deberá reiterarlo para cada identificador que necesite cambiar.

Cuestiones relacionadas