Это было предложено при разработке C ++, и Страуструп обсуждает это в своей статье «Проектирование и развитие C ++», стр. 153 и далее. Предложение было правильно сформулировано и основано на предыдущем опыте работы с Ada. Это не было принято.
Основной причиной было то, что никто не хотел поощрять функции с большим количеством параметров. Каждая дополнительная функция в языке чего-то стоит, и не было желания добавлять функцию, чтобы было легче писать плохие программы.
Также были подняты вопросы о том, что представляют собой канонические имена параметров, особенно в обычном соглашении заголовка и файла кода. Некоторые организации имели более длинные и более описательные имена параметров в файле .h, а также более короткие и удобные для ввода имен в файле .cpp (заменяйте суффиксы файлов по желанию). Требование, чтобы они были одинаковыми, потребовало бы дополнительных затрат на компиляцию, а перепутывание имен в исходных файлах может привести к незначительным ошибкам.
Это также может быть обработано с помощью объектов, а не вызовов функций. Вместо вызова GetWindow с дюжиной параметров создайте класс Window с дюжиной личных переменных и при необходимости добавьте установщики. Сцепляя сеттеры, можно написать что-то вроде my_window.SetColor(green).SetBorder(true).SetBorderSize(3);
. Также возможно иметь разные функции с разными значениями по умолчанию, которые вызывают функцию, которая фактически выполняет эту работу.
Если вы просто беспокоитесь о влиянии документации contentFetcher.DownloadNote(note, manual : true);
, вы всегда можете написать что-то вроде этого contentFetcher.DownloadNote(note, /* manual */ true);
, так что это не очень полезно в документации.