для чего комментируют арументы?
От: Аноним  
Дата: 10.07.11 22:44
Оценка:
В чем смысл писать так?

LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)

Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?
Re: для чего комментируют арументы?
От: Ground Россия  
Дата: 11.07.11 03:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В чем смысл писать так?


А>LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)


А>Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?


Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.
Re[2]: для чего комментируют арументы?
От: Muxa  
Дата: 11.07.11 04:13
Оценка:
G>Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.

чем этот вариант
LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/);
удобнее этого
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
?
Re[3]: для чего комментируют арументы?
От: vsb Казахстан  
Дата: 11.07.11 04:25
Оценка: +1
Здравствуйте, Muxa, Вы писали:

G>>Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.


M>чем этот вариант
LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/);
удобнее этого
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
?


Может вызывать предупреждение компилятора о том, что аргумент функции не был использован. Иногда это предупреждение помогает найти опечатку в имени переменной, или другие похожие ошибки, но часто аргумент функции намеренно не используется. В этом случае его имя можно либо опустить, либо писать закомментированным.
Re[4]: для чего комментируют арументы?
От: Caracrist https://1pwd.org/
Дата: 11.07.11 05:05
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, Muxa, Вы писали:


G>>>Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.


M>>чем этот вариант
LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/);
удобнее этого
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
?


vsb>Может вызывать предупреждение компилятора о том, что аргумент функции не был использован. Иногда это предупреждение помогает найти опечатку в имени переменной, или другие похожие ошибки, но часто аргумент функции намеренно не используется. В этом случае его имя можно либо опустить, либо писать закомментированным.


В данном примере дана декларация; так что разницы никакой.
~~~~~
~lol~~
~~~ Single Password Solution
Re: для чего комментируют арументы?
От: _niko_ Россия  
Дата: 11.07.11 05:21
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>В чем смысл писать так?


А>LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)


А>Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?


Если мы говорим об объявлении функции:
    void set(int, int, int);                                        // вариант 1
    void set(int start, int, length, int initValue);                // вариант 2
    void set(int /*start*/, int, /*length*/, int /*initValue*/);    // вариант 3

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

Если мы говорим об реализации:
    void set(int /*start*/, int, length, int initValue, int)
    {
        // Метод без реализации

        (void) length;    // в рамках языка С++ данная запись равносильна следующей reinterpret_cast<void>(length)

        // start      - мы знаем какую смысловую нагрузку несет в себе данная переменная, но в коде она нам пока не нужна.
        // length     - аналогично start, за исключением того что сама переменная на момент компиляции функции все же существует и при последующем редактировании ф-ии мы можем смело её использовать.
        // initValue  - аналогично length, за исключением того что компилятор генерирует предупреждение т.к. мы не используем переменную которую объявили (а предупреждение компилятор может рассматривать как ошибку).
        // <4я пер-я> - аналогично start, за исключением того что мы понятия не имеем о её смысловой нагрузке.
    }
Re: для чего комментируют арументы?
От: okman Беларусь https://searchinform.ru/
Дата: 11.07.11 06:01
Оценка: 1 (1) +2
Здравствуйте, Аноним, Вы писали:

А>В чем смысл писать так?


А>LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)


А>Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?


Оптимизация тут не при чем.
Комментируют, чтобы предотвратить предупреждения компилятора о неиспользуемых аргументах.
На высоком уровне предупреждений компилятора, — опция "/W4" MSVC,- они могут вываливаться сотнями.
Особенно это напрягает на проектах большого объема. В то же время совсем удалять имена неиспользуемых
аргументов нехорошо, так как они могут в любой момент потребоваться.
Re[3]: для чего комментируют арументы?
От: gegMOPO4  
Дата: 11.07.11 08:32
Оценка: -1
Здравствуйте, Muxa, Вы писали:
M>чем этот вариант
LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/);
удобнее этого
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
?


Компилятор может ворчать, если имена параметров в объявлении и определении будут отличаться. Или если в определении имя опущено.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.