Re: А почему нет вызова функций с именованными аргументами?
От: B0FEE664  
Дата: 11.09.14 13:22
Оценка:
Здравствуйте, enji, Вы писали:

E>Если с таким разбирается компилятор С, то что мешает компилятору С++ разобраться с

E>
E>void f(int a, int b);
E>f(.a = 1, .b=42);
E>

E>Ваше мнение?

Моё мнение такое: экономит надо не время записи, а время чтения.
Запись:
E>f(.a = 1, .b=42);
ничем не лучше, а даже хуже, чем:

const int a = 1;
const int b = 42;
f(a, b);


Но, что такое a? Что такое b? —

Вызов функции с константами определёнными по месту вызова — это экзотика для хорошего стиля.
Если в программе встречается более чем один вызов функции с одинаковыми не именованными константами, то это уже плохо. Следует либо поименовать константы, либо завернуть вызов функции в другую функцию, например:
inline void LastAnswerOnUltimateQuestion()
{
  const int nAnswerNumber = 1;
  const int nAnswerValue  = 1;
  f(nAnswerNumber, nAnswerValue);
}


Заметили ошибку? Легко исправить?
А вы бы её заметили, во всех разбросанных по коду вызовах:
// file: start.cpp
f(.nAnswerNumber = 1, .nAnswerValue = 42);
// file: background.cpp
f(.nAnswerNumber = 1, .nAnswerValue = 42);
// file: crash.cpp
f(.nAnswerNumber = 1, .nAnswerValue = 1);
?
Легко исправить?
И каждый день — без права на ошибку...
Отредактировано 11.09.2014 13:30 B0FEE664 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.