Здравствуйте, Hexxx, Вы писали:
H>На больших проектах часто начинают выделять "особо хороший код" в отдельную библиотеку, гордо именуюемую common. H>Делают так многие, и все считают что это правильно. С одной стороны это хорошо, в одном месте правишь — хорошо всем. С другой стороны, когда начинается новый проект, слегка похожий на предидущий, в него начинают тулить комоны. А потом выясняется что проект совсем не похож на предидущий и комоны надо переписать так чтобы они удовлетворяли новым требованиям и начинается...
H>Короче, я так понимаю что я поднимаю риторический вопрос про добро и зло. Полюбому уже должно быть где-то умными дядьками это все описано. Ткните плиз а то никак не нагуглю.
Коллеги, может я чего не понимаю, но в чем вообще проблема? Если при разработке одного проекта появился функционал для повторного использования, да еще и достаточно отвязанный от контекста данного проекта, сам Бог велел использовать его в похожих проектах. При этом, чтобы избежать проблем с одновременным использованием одной и той же библиотеки в разных проектах, когда надо немножко поменять ее под каждый проект, просто делать для каждого проекта отдельную ветку развития данной библиотеки. Если в одном из проектов выловили ошибку или оптимизировали работу, просто копировать соответствующие удачные решения всем заинтересованным лицам (проектам). А если новые проекты стартуются часто, постепенно обновлять базовую ветку этой библиотеки.
Понятное дело, что если вынести в такой коммон сырой, плохо спроектированный или неполный функционал, слишком много уйдет времени на параллельное исправление нескольких веток. Но во-первых, это может все равно оказаться быстрее, чем писать все по-новой, а во-вторых, нужно стремиться к тому, чтобы общие и часто используемые решения были как можно лучшего качества.