Да, это идея: аргументы не должны использоваться для выбора конкретного поведения.Вместо этого следует использовать разные методы (особенности в терминах Эйфеля).
Пример. Предположим, существует метод, который перемещает двумерную фигуру в заданную позицию.Положение может быть указано с использованием полярных или декартовых координат:
move (coordinate_1, coordinate_2: REAL_64; is_polar: BOOLEAN)
-- Move the figure to the position (coordinate_1, coordinate_2)
-- using polar system if is_polar is True, and Cartesian system otherwise.
В соответствии с принципом, лучше определить две функции:
cartesian_move (x, y: REAL_64)
-- Move the figure to the position with Cartesian coordinates (x, y).
polar_move (rho, phi: REAL_64)
-- Move the figure to the position with polar coordinates (rho, phi).
Хотя этот принцип представляется универсально применимымнекоторые объектно-ориентированные языки не обеспечивают достаточных средств для этого в определенных случаях.Очевидным примером являются конструкторы, которые во многих языках имеют одно и то же имя, поэтому использование опций становится единственным выбором (в качестве обходного пути можно было бы использовать фабрики объектов в этих случаях).