Я подробно остановлюсь здесь на комментарии, который я сделал к Когда у метода слишком много параметров? , где у OP были незначительные проблемы с чужой функцией, у которой было 97 параметров.
Я большой сторонник написания поддерживаемого кода (и его часто легче написать, чем прочитать, поэтому фраза Стива Макконнелла (хвала его имени) "писать только код").
Поскольку статистика того, как происходит большинство автомобильных аварий на перекрестках, и мой опыт (ymmv) показывает, что большинство "аномалий" происходят на интерфейсах, я перечислю некоторые вещи, которые я делаю, чтобы избежать недопонимания на интерфейсах, и предложу ваши комментарии, если я я иду неправильно.
Но, что более важно, я приглашаю ваши предложения сделать вещи еще более профилактическими (см., В конце концов, есть вопрос - как улучшить вещи?).
- Адекватная документация в форме (в актуальном состоянии) комментариев в формате DoxyGen, описывающих природу и характер каждого параметра.
- абсолютно NO задние махинации с глобальными переменными в качестве скрытых параметров.
- попытайтесь ограничить параметры шестью или восемью. Если больше, передайте связанные параметры как структуру; если они не связаны, то серьезно пересмотрите функцию. Если ему нужно так много информации, это слишком сложно поддерживать? Можно ли его разбить на несколько более мелких функций?
- используйте CONST как можно чаще и значимее.
- стандарт кодирования, который говорит, что сначала идут входные параметры, затем только вывод и, наконец, ввод / вывод, которые модифицируются функцией.
Я также #define несколько пустых макросов, чтобы сделать декларации еще проще для чтения:
#
определить вход
#
определить выход
#
определить MODIFY
bool DoSomething (INPUT int howOften, MODIFY Wdiget * myWidget, OUTPUT WidgetPtr * const nextWidget)
Всего несколько идей. Как я могу улучшить это? Спасибо.