2013-06-20 4 views
6

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

void some_method(int); 

и второй стиль:

void some_method(int a); 

Имеет ли один стиль преимущество над другим. Для меня один стиль просто не имеет имени переменной и имя переменной должно быть реализовано в сопроводительном файле cpp.

ответ

9

Там нет никакой разницы в функциональности, но я часто использую имена параметров в виде документации, например, так:

void verbTheThing(int verbId, int thingId); 

Когда у меня нет ничего ценного, чтобы добавить, я просто не добавить:

int max(int, int); 
+1

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

+0

Спасибо, это помогло – MistyD

+0

@PaulR Хорошая точка. Вместо этого я мог бы сказать, что прилагаю усилия, чтобы удалить бессмысленные (потенциально отвлекающие) имена параметров при размещении прототипа в файле заголовка. –

4

Основная проблема - Консистенция. Выберите один и придерживайтесь его. Я предпочитаю второй лично, потому что имена параметров могут описывать функциональность и код, который самодокументируется лучше, чем альтернатива.

+0

+1; Однако я обычно делаю исключения для дефолтных и удаленных специальных функций. –

3

Основное отличие - читаемость. Вторая версия длиннее, но иметь имя аргумента может быть реальной помощью. Маленький пример:

int move(int, int, int, int); 

int move (int fromX, int fromY, int toX, int toY); 
1

Оба варианта не имеют никакого отношения к компиляции. Но второй лучше, поскольку присвоение имени параметру повышает читаемость кода и помогает понять его лучше

1

Оба варианта действительны. Но указание имени параметра в заголовке может значительно помочь кому-то, прочитав подпись функции, быстро выяснить, что она на самом деле делает и какие данные представляют параметры.

2

Некоторые среды разработки (Visual Studio, Borland C++ Builder, например, eclipse также должны иметь эту функцию) автоматически перечисляют аргументы функции при вводе ( скобки.

list parameters

Для тех Ид это общая любезность, чтобы убедиться, что имена аргументов функции (в пределах заголовков) являются описательными, насколько это возможно, потому что они служат в качестве документации.

Даже если у программиста нет IDE с этой функцией, декларации функций вперед (в заголовках) должны всегда быть максимально описательными. По той же причине - легче открыть заголовок и прочитать, какие функции должны означать значения, а не искать тело функции в пределах множества файлов *.cpp.

Не говоря уже о том, что в некоторых функциях вы не можете определить, какие параметры должны означать без имен параметров.

Например,

Image::blitRect(int, int, int, int); 

может быть

Image::blitRect(int x1, int x2, int y1, int y2); 
Image::blitRect(int x1, int y1, int x2, int y2); 
Image::blitRect(int x, int y, int width, int height); 

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

0

Фактически, между ними нет никакой разницы. Это сводится к тому, что вы объявляете свои методы ... Например, если вы объявляете свою функцию до функции «main()». , вам, вероятно, не нужно заботиться о имени параметров. Однако, предшествовавшему методу , вы должны ввести свое имя параметра в defintion. Это всего лишь код стиля, который позволяет вам и всем читать код.

Смежные вопросы