Совет для хранения большого модульного проекта C++? [закрытый]

5
задан Jay 4 April 2010 в 22:32
поделиться

2 ответа

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

Я бы посоветовал тщательно обернуть такие внутренние проекты в разделяемые библиотеки, чтобы вы могли более или менее безболезненно обновлять только эти части, если изменения не нарушают ABI.

Еще один момент - если вы обнаружите и исправите ошибки в проекте с открытым исходным кодом - не держите исправления при себе. Протолкните патчи вверх по потоку. Это сделает проект лучше и сэкономит вам дни слияния с новой версией.

6
ответ дан 13 December 2019 в 22:05
поделиться

В порядке предпочтения

  1. Внесите как можно меньше изменений в сторонние библиотеки. Попробуйте обойти их ограничения в своем коде. Задокументируйте свои изменения, а затем отправьте патч.
  2. Если вы не можете обойти их ограничения, отправьте изменения в виде патча (это может быть идеалистичным с учетом ледяного темпа некоторых проектов).
  3. Если вы не можете сделать ни одно из этих действий, запишите то, что вы изменили, в централизованном месте, чтобы бедняк, выполняющий интеграцию для новых версий, мог понять, что, черт возьми, вы делали, и внесены ли изменения все еще нужны.

1 и 2 очень предпочтительны (однако, быстрые и очень медленные соответственно), в то время как третий вариант приведет только к головным болям и ошибкам, поскольку ваша база кода отклоняется от базы кода зависимостей. В моем коде у меня даже нет стороннего кода, загруженного в IDE, если мне не нужно просматривать файл заголовка.Это устраняет соблазн изменить то, что мне не принадлежит.

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

4
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: