Î знаю, откуда ты. Некоторые языки заставляют вас делать это.
String str = getStr();
switch(str) {
case "POST" : this.doPost(); break;
case "GET" : this.doGet(); break;
//and the other http instructions
}
И что теперь? Конечно, есть хороший способ ООП сделать это:
str.request(this);
Жаль, что String не может быть расширен, и теперь вы рассматриваете возможность написания класса HttpInstruction с 8 подклассами для каждой инструкции HttpInstruction. Честно говоря, особенно когда речь идет о парсерах, это просто существенно сложно.
Конечно, это не хороший ООП, но хороший код не всегда ... возможен.
Позвольте мне на минутку расстаться. Я пишу свою диссертацию. Мне лично не нравится обычная настройка рекурсивных функций. У вас обычно есть как funcRec (arg1, arg) и func (arg1): = func (funcRec (arg1,0));
поэтому я определил это в своей диссертации с аргументами по умолчанию. Не все знают концепцию аргумента по умолчанию. В моей диссертации используется псевдокод, но профессор заставил меня изменить алгоритм на традиционный способ, потому что вы не часто сталкиваетесь с аргументами по умолчанию, поэтому не используйте их. Не удивляйте своего читателя без необходимости. Я думаю, что он прав.
Но результат в том, что теперь я застрял с функцией, единственной целью которой является отсылка аргументов по умолчанию - что может быть красивее.
Итак, суть в том, что действительно красивым программам требуются отличные библиотеки, отличные браузеры и инструменты кода, средства отслеживания ошибок качества FogBugz, по крайней мере, лучшая интеграция, управление версиями качества git и т. И окружающие вас люди, которые могут использовать все эти вещи и знают, как справляться со всеми этими вещами. И самое главное: прекрасный язык, который позволяет изящно решать сложные проблемы.
Так что, скорее всего, вы застряли на Java, что затрудняет поиск хорошей замены коммутаторов во всех ситуациях. Self будет иметь элегантное решение. Но вы не используете Self, и если бы вы были, ваши коллеги не смогли бы прочитать его, так что забудьте об этом.
А теперь найдите компромисс.
Грустно, я знаю.