Что “Ядро” означает в Контексте Дизайна Библиотеки?

Принцип, за которым я следую, является этим: Если ситуации можно реалистично избежать путем кодирования, затем используют утверждение. Иначе используйте исключение.

Утверждения для обеспечения, что Контракт придерживается к. Контракт должен быть справедливым, так, чтобы клиент имел возможность удостоверяться, что он соответствует. Например, можно заявить в контракте, что URL должен быть допустимым, потому что правила о том, что и не является допустимым URL, известны и последовательны.

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

я хотел бы добавить, что Утверждение / различие Исключения не является действительно лучшим способом думать об этом. То, о чем Вы действительно хотите думать, является контрактом и как он может быть осуществлен. В моем примере URL выше той лучшей вещи сделать, имеют класс, который инкапсулирует URL и является или Пустым указателем или допустимым URL. Это - преобразование строки в URL, который осуществляет контракт, и исключение выдается, если это недопустимо. Метод с параметром URL является намного более четким, что метод со Строковым параметром и утверждением, которое указывает URL.

8
задан John Saunders 15 August 2009 в 21:17
поделиться

7 ответов

На мой взгляд, CORE означает нечто необходимое. Математические функции и другие полезные функции не входят в ядро. Они скорее "утилиты".

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

6
ответ дан 5 December 2019 в 08:54
поделиться

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

Например, методы расширения для многих классы, дополнительные математические функции и т. д. Вещи, которые недостаточно велики, чтобы оправдать их выполнение.

Что еще делают, я понятия не имею.

4
ответ дан 5 December 2019 в 08:54
поделиться

Я попросил Bing определить «Ядро». Одно из определений, которое он придумал, было:

существенная часть: центральная или самая важная часть чего-то

Итак, в основном, когда кто-то называет ядро ​​библиотеки, это центральная и самая важная часть его приложения и / или фреймворка: -)

6
ответ дан 5 December 2019 в 08:54
поделиться

I view the core as the the abstract heart of the application. The core typically implements enough logic to define the behavior of the whole application.

So in my view data access and presentation should not be part of core. This allows both web and desktop applications to share the same core module.

In your case I would have contain business logic, error handling and configuration in the core module.

I also belive that the main reason for having a big core module is to avoid the cost of having to maintain a lot of smaller modules.

1
ответ дан 5 December 2019 в 08:54
поделиться

I see core as a prerequisite for any other library that you may use from that vendor. So, while the vendor may offer several independent packages, they all rely on core to get things done. Otherwise it may result in severe code duplication.

0
ответ дан 5 December 2019 в 08:54
поделиться

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

Так что я бы не стал беспокоиться о том, что " верный." Используйте термин по своему усмотрению.

1
ответ дан 5 December 2019 в 08:54
поделиться

Это, вероятно, будет сочтено ересью, но после нескольких лет структурирования решений с отдельными проектами для доступа к данным, бизнес-логики и т. Д. Я, скорее всего, собираюсь объединить эти слои в один проект под названием MyApp.Core, чтобы базовое решение состояло только из основного проекта и проекта пользовательского интерфейса. Это не означает, что никакие другие проекты никогда не понадобятся или не будут добавлены (например, MyApp.Tests), но что базовая структура будет основана на этих двух.

Изменить: сокращено для каждого предложения в комментариях.

1
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

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