Здравствуйте, B0FEE664, Вы писали:
BFE>Вы сами так пишите,Автор: enji
Дата: 11.09.14
только вместо локальных констант используете enum.
это от бедности
BFE>BFE> SendAnswer(
BFE> .nAnswerNumber = 1,
BFE> .nAnswerPriority = 42,
BFE> .nAnswerValue = 42
BFE> );
BFE>
BFE>так как читать такое намного проще читать. Однострочники меня не волнуют.
это нормально. Все равно компактней твоего варианта, плюс не вводит лишних имен. Плюс ошибку в имени определит компилятор
E>>Опять же, ты можешь ошибиться и написать f(b, a). А если я напишу f(.b=42, .a=1), то это будет корректно обработано (ну по крайней мере, если применить правила из питона).
E>>Далее, функция может иметь аргументы по умолчанию — void f(a = 1, b = 2, c = 3). И ее можно будет вызывать f(.c=4). Твой вариант с константами тут не поможет...
BFE>Это хорошие аргументы до тех пор, пока мы не думаем о виртуальных методах.
а что с ними не так? Такая штука есть например в питоне, в нем все методы виртуальные...
E>>Это к вопросу о нужности лямбд. Зачем нужна лямбда из одной строки, когда можно на 5 строках в другом месте файла изобразить повторно используемый функтор? Вроде как и низачем. Однако ж функторы особо не пишут, и вместо find_if фигачат цикл...
BFE>Потому, что для чтения кода важна локальность определения. Редко, когда один и тот же функтор используется более одного раза в программе.
Во во. Та же штука с именованными аргументами...
BFE>Ну и вообще, предложенный метод не достаточно радикален. Перепутать f(.a=1, .b=42) и f(.a=42, .b=1) тоже довольно просто.
Тут по крайней мере четко видно, что есть "а", а что есть "b"