Делать каждый класс отдельной сборкой - PullRequest
3 голосов
/ 31 марта 2011

Я не опытный программист .Net, поэтому этот вопрос.

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

Я знаю, что вопрос расплывчат, но, возможно, существуют конкретные рекомендации относительно того, что следует помещать в отдельную сборку, а что вообще не следует

Заранее спасибо

Ответы [ 5 ]

5 голосов
/ 31 марта 2011

Это не очень хорошая идея.Соберите проблемы в одну сборку.Но не один класс на сборку.Если вы меняете два класса, вам нужно отправить две сборки вместо одной.Что ты выиграл?

4 голосов
/ 31 марта 2011

Это очень плохая идея.

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

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

примеры, где вы можете разбить на сборки:

  • две совершенно разные программы - clock.exe и facebookAlbumViewer.exe
  • 3-уровневое программное обеспечение: MyProgramDataModel.dll, MyProgramBusinessLogic.dll и MyProgramGui.exe в будущем вы поставите новый MyProgramDataModel.dll (который теперь работает с Oracle вместо MySql), поэтому вы развертываете только этот компонент. Это будет иметь смысл только для больших и сложных программ.
4 голосов
/ 31 марта 2011

Вы говорите о клиентском программном обеспечении.Проект приличного размера с несколькими сотнями классов -> несколькими сотнями DLL-файлов неприемлем для клиентского программного обеспечения, и это не обычная практика.

Сборки не так уж и велики, чтобы беспокоиться об этом.С помощью DLL на класс вы будете раскрывать всю структуру своего кода - MyApp.dll, MyApp.MainForm.dll, MyApp.DatabaseLogic.UserAuthentication.dll -

2 голосов
/ 31 марта 2011

Сколько времени вы сэкономите на компиляции?Сколько времени вы потратите на добавление нового проекта для каждого класса?

Не тратьте свое время, пусть компилятор сделает свою работу.Ваше время стоит больше, чем компилятор.

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

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

...