2009-07-20 9 views
6

Gran parte de mi tiempo dedicado al desarrollo de aplicaciones C++ se desperdicia implementando definiciones de clase. Con eso me refiero a la creación de prototipos de clases y luego a la creación de sus respectivas implementaciones.C++ Auto Class Implementación en el Editor

Por ejemplo:

#ifndef FOO_H 
#define FOO_H 

class Foo 
{ 
public: 
    Foo (const X& x, const Y& Y); 
    ~Foo(); 

    void PerformXYZ (int Count); 
}; 

#endif 

Y ahora voy a tener que copiar y pegar, a continuación, añadir el Foo :: repetitivo en cada función.

Foo::Foo (const X& x, const Y& Y) 
{ 

} 

Foo::~Foo() 
{ 

} 

void Foo::PerformXYZ (int Count) 
{ 

} 

Por ahora copio las declaraciones de funciones a sus respectivos archivos * .cpp, eliminar las líneas vacías, luego vuelva a colocar ';' con "\ n {\ n \ n} \ n". Sin embargo, todavía tengo que especificar el espacio de nombres para cada función.

¿Hay herramientas en Eclipse, Vim o cualquier otro IDE/editor que le quiten esta carga a un desarrollador?

+0

Hombre, tenemos la misma rutina :) – GManNickG

+0

Crees que algo así existiría (sería muy útil). Si a nadie se le ocurre una respuesta, debe pensar en escribir un complemento o programa para hacerlo. – Kredns

Respuesta

5

En Visual Studio hay herramientas para agregar funciones y variables. Tools automatiza el proceso en cuestión. Pero nunca los uso :)

En el Visual Assist X está el feature que ayuda a agregar la implementación de los métodos. Es la mejor solución.

+0

+1 Asistencia visual. – peterchen

+0

Yo también encuentro estos ayudantes de GUI de uso limitado ya que puedo escribir el código más rápido de lo que puedo generarlo usando estas herramientas. Dicho esto, creo que lo que el interrogador propone sería un ahorro de tiempo. –

2

En Visual Studio 2008, puede agregar una clase (generará un archivo .h y .cpp) utilizando la opción Proyecto-> Agregar clase ... Pero es muy primitivo y solo escribe constructores y destructores. Después de agregar la clase, puede ir a la vista de clase y usar la opción de menú 'Agregar método' para agregar métodos a la clase.

0

El Zeus editor se puede configurar para hacer esto usando su función de plantilla de la siguiente manera.

Paso 1: Crear unac: \ temp \ test.tpl archivo que tiene el siguiente aspecto:

#ifndef $Word_H 
#define $Word_H 

class $Word 
{ 
public: 
    $Word (const X& x, const Y& Y); 
    ~$Word(); 
    void PerformXYZ (int Count); 
}; 
#endif 

$Word::$Word (const X& x, const Y& Y) 
{ 
} 

$Word::~$Word() 
{ 
} 

void $Word::PerformXYZ (int Count) 
{ 
} 

Paso 2: usando la plantilla de , Opciones de menú para agregar la plantilla siguiente:

$ExpandTemplate<c:\temp\test.tpl> 

Paso 3: Utilizando el Archivo, Nuevo menú, escriba la palabra Bar, coloque el cursor en la palabra Bar y ejecutar la plantilla recién creada y se obtiene este texto:

#ifndef Bar_H 
#define Bar_H 

class Bar 
{ 
public: 
    Bar (const X& x, const Y& Y); 
    ~Bar(); 
    void PerformXYZ (int Count); 
}; 
#endif 

Bar::Bar (const X& x, const Y& Y) 
{ 
} 

Bar::~Bar() 
{ 
} 

void Bar::PerformXYZ (int Count) 
{ 
} 
2

Al igual que usted, no tengo mucho tiempo se pensó mi tiempo como desarrollador de C++ se desperdicia escribiendo tediosas definiciones de clase. La única herramienta que he encontrado hasta ahora que alivia parcialmente este druge-trabajo es VisualAssistX, como uno de los otros carteles menciona.

Aunque no llega a eliminar por completo la necesidad de escribir definiciones de clases, VA X tiene algunos buenos métodos de "refactorización" que ayudan en esta área. Por ejemplo, puede crear una declaración de método y automáticamente creará un cuerpo de implementación para usted. También puede hacer cosas como "Agregar miembro similar", que completa el cuadro de diálogo "agregar miembro" con los datos de un método existente o cambiar la firma de una función y hacer que se propague a los archivos cpp y h automáticamente.

No es gratis, pero vale la pena el dinero.

Jeroen

1

Para vim, estoy manteniendo this suite que proporciona fragmentos de clase (que se puede adaptar fácilmente a sus necesidades).

NB: La generación de cada definición de función se puede automatizar con el comando :GOTOIMPL, pero debe hacerse función tras función.

1

Eclipse seguramente tiene algo relacionado con esto en su menú de refactorización aunque no lo he usado durante un año y no recuerdo ninguna especificación.