Как решить, когда внедрять DLL?

В какой момент вы решите, что некоторые из ваших подпрограмм и общий код должны быть помещены в библиотеку классов или DLL? В одном из моих приложений я хотел бы поделиться своим общим кодом между разными проектами (как мы все знаем, это запрограммировать грех на дублирование кода).

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

Я не считаю, что это должно зависеть от языка или фреймворка, но если да, то я использую фреймворк .NET.


person Matt Hanson    schedule 06.07.2010    source источник


Ответы (2)


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

В общем, я использую следующее эмпирическое правило:

  • Для тривиального дублирования кода (пара простых 1-2-строчных функций, которые легко понять и отладить) я просто скопирую и вставлю код.

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

  • Для более обширного совместного использования кода (группа взаимосвязанных классов или уровень связи с базой данных, который полезен для нескольких проектов) я реорганизую их в автономную библиотеку, упакую и распространим их, используя все, что подходит для того, что я программирую. в.

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

person Chris B.    schedule 08.07.2010

Если код совместно используется несколькими приложениями, он должен находиться в DLL или библиотеке классов.

Для более крупного приложения вы также можете разбить различные подсистемы приложения на отдельные библиотеки. Таким образом, каждый проект может сосредоточиться на одной конкретной задаче. Это упрощает структуру вашего приложения и облегчает поиск любого фрагмента кода. Например, у вас может быть приложение с графическим интерфейсом пользователя с разными библиотеками DLL (проекты .NET) для:

  • Работа с определенным сетевым протоколом
  • Доступ к общему коду, например к служебным классам
  • Доступ к устаревшему коду (через PInvoke)
  • и т.д...
person Justin Ethier    schedule 06.07.2010