Реализация автокласса C ++ в редакторе - PullRequest
6 голосов
/ 20 июля 2009

Большая часть моего времени, потраченного на разработку приложений на C ++, тратится на реализацию определений классов. Под этим я подразумеваю создание прототипов классов и создание соответствующих реализаций.

Например:

#ifndef FOO_H
#define FOO_H

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

   void PerformXYZ (int Count);
};

#endif

А теперь мне придется скопировать и вставить, затем добавить повторяющийся Foo :: в каждую функцию.

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

}

Foo::~Foo ()
{

}

void Foo::PerformXYZ (int Count)
{

}

Пока я копирую объявления функций в соответствующие им файлы * .cpp, удаляю пустые строки, затем заменяю ';' с "\ n {\ n \ n} \ n". Тем не менее, я все еще должен указать пространство имен для каждой функции.

Существуют ли инструменты в Eclipse, Vim или любом другом IDE / редакторе, которые снимают с разработчиков это бремя?

Ответы [ 6 ]

5 голосов
/ 20 июля 2009

В Visual Studio есть инструменты для добавления функций и переменных. Инструменты автоматизируют рассматриваемый процесс. Но я никогда ими не пользуюсь:)

В Visual Assist X есть функция , которая помогает добавлять реализацию для методов. Это лучшее решение.

2 голосов
/ 20 июля 2009

Как и вы, я долго думал, что мое время как разработчика C ++ тратится на написание утомительных определений классов. Единственный инструмент, который я нашел до сих пор, который частично облегчает эту работу, - это VisualAssistX, как упоминает один из других авторов.

Несмотря на то, что у VA X нет полной необходимости в написании определений классов, у него есть несколько хороших методов «рефакторинга», которые помогают в этой области. Например, вы можете создать объявление метода, и оно автоматически создаст для вас тело реализации. Вы также можете сделать что-то вроде «Добавить аналогичного члена», который заполняет диалоговое окно «Добавить члена» данными существующего метода или изменить сигнатуру функции и автоматически распространить ее на файлы cpp и h.

Это не бесплатно, но стоит денег.

Йерун

2 голосов
/ 20 июля 2009

В Visual Studio 2008 вы можете добавить класс (он сгенерирует для вас файлы .h и .cpp), используя опцию Project-> Add Class .... Но это очень примитивно и пишет только конструктор и деструкторы. После добавления класса вы можете перейти к представлению класса и использовать опцию меню «Добавить метод» для добавления методов в класс.

1 голос
/ 20 июля 2009

Eclipse, безусловно, имеет что-то, связанное с этим, в своем меню рефакторинга, хотя я не использовал его в течение года и не помню никаких особенностей.

1 голос
/ 20 июля 2009

Для vim я поддерживаю этот пакет , который предоставляет фрагменты классов (которые могут быть легко адаптированы к вашим потребностям).

Примечание: генерация каждого определения функции может быть автоматизирована с помощью команды :GOTOIMPL, но она должна выполняться как функция после функции.

0 голосов
/ 20 июля 2009

Редактор Zeus может быть настроен для этого с помощью функции шаблона следующим образом.

Шаг 1: Создайте файл c: \ temp \ test.tpl , который выглядит следующим образом:

#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)
{
}

Шаг 2: Используя шаблон , меню Параметры , чтобы добавить следующий шаблон:

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

Шаг 3: Используя меню Файл, Новое , введите слово Бар , поместите курсор на слово Бар и запустите новый созданный шаблон, и вы получите этот текст:

#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)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...