Стиль!Шаблон против двойного кода, что это хорошо? - PullRequest
0 голосов
/ 29 марта 2011

У меня много похожих кусочков кода. Например. парсинг конфигурационных файлов с помощью jdom, включение шаблонов в регулярные выражения. Это все, что сделано в 10 строк. Написание какого-то абстрактного мета-монстра, который делает все это, было бы очень сложно.

Теперь я всегда здесь, люди плачут о двойном коде. Это в моем случае действительно такой плохой? Подобный код облегчает понимание и поддержку. Нет большой взаимосвязи функций.

Я правильно поступаю?

Ответы [ 3 ]

1 голос
/ 29 марта 2011

Нет, очень похожий код делает его сложным для поддержки, если у вас есть больше, чем, скажем, три из этих частей кода.Когда вы обнаруживаете ошибку (или получаете изменение спецификации), которая затрагивает все или несколько из этих фрагментов кода, вы должны попытаться обнаружить различия .Это может быть даже труднее исправить, когда все они абсолютно одинаковы.

Самое меньшее, что вы можете сделать, это попытаться выявить некоторые общие черты и создать крошечную библиотеку хорошо названных вспомогательных функций.Снятие хитрых битов важнее, чем количество сохраненных строк кода.

1 голос
/ 29 марта 2011

Чрезмерная инженерия - это антипаттерн.Если вам не нужна абстракция, не используйте ее.Абстракция и шаблоны являются наиболее полезными, когда ваш проект большой или должен расти.Если это не ваша ситуация, то пусть это будет просто и глупо.

Это также вопрос вкуса.Лично, даже если это иногда не рекомендуется, я предпочитаю использовать шаблоны и абстракцию даже в простых ситуациях, если я чувствую, что это может быть полезно в будущем, потому что я ненавижу переписывать одни и те же строки кода дважды.Кроме того, шаблоны проектирования также помогают избежать ошибок, поскольку они упорядочивают ваш код и отношения классов.

0 голосов
/ 29 марта 2011

Это действительно зависит от того, как выглядят эти 10 строк.Некоторые случаи, которые, по-видимому, не требуют надлежащей абстракции, могут быть решены с помощью простого цикла.

...