История изменений
Исправление legolegs, (текущая версия) :
завтра появятся типы пунктира (давно хотел сделать, руки не доходят), мне еще один параметр вводить?
Конечно. Его так и так вводить, но это можно сделать явно, дописав аргумент в функцию, а можно скрытно, через флаги. Но неявные аргументы - это грабли.
Зачем, если я могу не меняя интерфейс функции и не ломая обратную совместимость дополнить функционал?
С каждым новым флагом придётся во все рисовальные функции дописывать всё усложняющиеся проверки на непротиворечивость. А вариант с раздельными enum просто не предусматривает возможности записать вызов функции неверно и проверки не нужны => код библиотеки меньше, ошибок меньше.
Обратную совместимость можно обеспечить через значения по умолчанию int f(x, y=0)
У функции и так 5 «сложных» параметров
Это с точки зрения компилятора их пять. А с точки зрения программиста их шесть, и планируется седьмой, и от этого не уйти. Если три параметра упаковать в один аргумент функции их семантически всё равно три, да ещё и правило упаковки добавляется. Сложность системы возрастает, а программист должен со сложностью бороться.
Исходная версия legolegs, :
завтра появятся типы пунктира (давно хотел сделать, руки не доходят), мне еще один параметр вводить?
Конечно. Его так и так вводить, но это можно сделать явно, дописав аргумент в функцию, а можно скрытно, через флаги. Но неявные аргументы - это грабли.
Зачем, если я могу не меняя интерфейс функции и не ломая обратную совместимость дополнить функционал?
С каждым новым флагом придётся во все рисовальные функции дописывать всё усложняющиеся проверки на непротиворечивость. А вариант с раздельными enum просто не предусматривает возможности записать вызов функцию неверно и проверки не нужны => код библиотеки меньше, ошибок меньше.
Обратную совместимость можно обеспечить через значения по умолчанию int f(x, y=0)
У функции и так 5 «сложных» параметров
Это с точки зрения компилятора их пять. А с точки зрения программиста их шесть, и планируется седьмой, и от этого не уйти. Если три параметра упаковать в один аргумент функции их семантически всё равно три, да ещё и правило упаковки добавляется. Сложность системы возрастает, а программист должен со сложностью бороться.