Вопросы с тегом «design»

9
Нужно ли проверять использование всего модуля или только аргументы открытых методов?

Я слышал, что рекомендуется проверять аргументы открытых методов: Стоит ли проверять на ноль, если он не ожидает ноль? Должен ли метод проверять свои параметры? MSDN - CA1062: проверка аргументов общедоступных методов (у меня есть .NET фон, но вопрос не специфичен для C #) Мотивация понятна. Если...

9
Должен ли хорошо известный бизнес-идентификатор объекта быть представлен специальным типом в DDD / OOP?

В практическом плане это означает использование пользовательского (неизменяемого) classнад stringили каким-либо другим примитивным типом. Примеры: Издательство: Международный стандартный номер книги. Финансы: международный идентификационный номер ценных бумаг. Преимущества: Может обеспечить формат...

9
Обзор дизайна сериализации C ++

Я пишу приложение на C ++. Большинству приложений требуется чтение и запись данных, и это не исключение. Я создал дизайн высокого уровня для модели данных и логики сериализации. Этот вопрос требует пересмотра моего дизайна с учетом этих конкретных целей: Иметь простой и гибкий способ чтения и...

9
CRUD API: как указать, какие поля обновлять?

Допустим, у вас есть какая-то структура данных, которая сохраняется в какой-то базе данных. Для простоты назовем эту структуру данных Person. Теперь перед вами стоит задача разработать CRUD API, который позволяет другим приложениям создавать, читать, обновлять и удалять Personфайлы. Для простоты...

9
Существуют ли существенные недостатки в зависимости от абстракций?

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

9
Почему неуместно использовать UML-диаграммы для планирования организации вашего кода?

Так что да, диаграммы могут быть неуместны время от времени. Когда они неуместны? Когда вы создаете их без кода, чтобы проверить их, а затем намерены следовать им. Нет ничего плохого в том, чтобы нарисовать диаграмму для изучения идеи. Гибкая разработка программного обеспечения: принципы, шаблоны...

9
Проекты и методы для защиты от ошибочных нулевых записей из базы данных

Одна часть моей программы извлекает данные из многих таблиц и столбцов в моей базе данных для обработки. Некоторые из столбцов могут быть null, но в текущем контексте обработки это ошибка. Этого не должно "теоретически" происходить, поэтому, если это так, это указывает на неверные данные или ошибку...

9
Принцип сегрегации интерфейса: что делать, если интерфейсы имеют значительное перекрытие?

Из Agile Software Development, Принципы, Шаблоны и Практики: Pearson New International Edition : Иногда методы, вызываемые различными группами клиентов, перекрываются. Если перекрытие небольшое, то интерфейсы для групп должны оставаться отдельными. Общие функции должны быть объявлены во всех...

9
Насколько полезен «истинный» размер переменных в C?

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

9
Как возразить против такого «абсолютно публичного» мышления при проектировании классов бизнес-объектов?

Мы проводим много модульного тестирования и рефакторинга наших бизнес-объектов, и у меня, похоже, совсем другие мнения о дизайне классов, чем у других коллег. Пример класса, который я не фанат: public class Foo { private string field1; private string field2; private string field3; private string...

9
Когда использовать черты, в отличие от наследования и состава?

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

9
Дизайн кода: делегирование произвольных функций

На PPCG у нас часто бывают вызовы King of the Hill , в которых разные боты кода сталкиваются друг с другом. Нам не нравится ограничивать эти проблемы одним языком, поэтому мы осуществляем кросс-платформенную связь через стандартный ввод-вывод. Моя цель - написать фреймворк, который авторы задач...

9
Как четко определить границы ограниченного контекста

После месяца или около того чтения и исследования DDD я решил начать свой собственный проект и создал DDD с этими ограниченными контекстами> клиенты Товары заказы Billing Каждый ограниченный контекст имеет API покоя в качестве уровня представления, уровня домена, постоянного уровня. Пока все...

9
Идиоматическое обёртывание C ++ типа шаблона API в C

Я работаю над упаковкой API C ++, который предоставляет доступ к хранилищу данных (Hazelcast) в функции C, чтобы к хранилищу данных также можно было получить доступ из кода только на C. API Hazelcast C ++ для структуры данных Map выглядит следующим образом: auto map =...

9
На языке REST, в чем разница между ресурсом и представлением?

Я понимаю, что REST позволяет моделировать операции сервиса как представление состояния и переход из одного состояния в другое с использованием HTTP. Я всегда понимал ресурсы как представления о состоянии сервисной стороны до недавнего времени, когда читал эту статью Джимми Богарда, которого я знаю...

9
Почему Swift сначала инициализирует собственные поля подкласса?

В языке Swift, чтобы инициализировать экземпляр, нужно заполнить все поля этого класса и только потом вызывать суперконструктор: class Base { var name: String init(name: String) { self.name = name } } class Derived: Base { var number: Int init(name: String, number: Int) { // won't compile if...

9
Это нормально для интерфейсов, чтобы зависеть от конкретных классов?

Я создаю интерфейс на Java для пользовательского обработчика ошибок. Хочу передать объект ошибки аргумента, но мне нужно, чтобы он был потомком Exceptionкласса. Можно ли использовать мое имя класса в интерфейсе? Разве это не сделает его менее интерфейсным с точки зрения отсутствия зависимости от...

9
Что делает итератор шаблоном дизайна?

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

9
Является ли это хорошим подходом для иерархии классов на основе pImpl в C ++?

У меня есть иерархия классов, для которой я хотел бы отделить интерфейс от реализации. Мое решение состоит в том, чтобы иметь две иерархии: иерархию дескрипторов классов для интерфейса и иерархию закрытых классов для реализации. Базовый класс дескриптора имеет указатель на реализацию, которую...