Пример
Предположим, у нас есть текст для записи, который можно преобразовать в «верхний или нижний регистр» и напечатать «слева, по центру или справа».
Реализация конкретного случая (слишком много функций)
writeInUpperCaseAndCentered(char *str){//..}
writeInLowerCaseAndCentered(char *str){//..}
writeInUpperCaseAndLeft(char *str){//..}
and so on...
vs
Функция многих аргументов (плохая читабельность и даже сложность кодирования без хорошей IDE с автодополнением)
write( char *str , int toUpper, int centered ){//..}
vs
Зависимость от контекста (трудно повторно использовать, сложно кодировать, использовать уродливые глобальные переменные, а иногда даже невозможно «обнаружить» контекст)
writeComplex (char *str)
{
// analize str and perhaps some global variables and
// (under who knows what rules) put it center/left/right and upper/lowercase
}
И, возможно, есть другие варианты... (и приветствуются)
Вопрос в том:
Есть ли какая-либо хорошая практика или опыт/академический совет для этой (повторяющейся) трилеммы?
РЕДАКТИРОВАТЬ:
Что я обычно делаю, так это комбинирую реализацию «конкретного случая» с внутренней (я имею в виду не в заголовке) общей общей функцией с многими аргументами, реализуя только используемые случаи и скрывая уродливый код, но я не знаю, есть ли лучшего способа, которого я не знаю. Подобные вещи заставляют меня понять, почему было изобретено ООП.