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

Вопросы о решении проблем и планировании решения посредством разработки программного обеспечения.

6
Намерен ли Дейкстра на модуляризацию кода, когда писал о разделении интересов?
Сначала я прочитал отрывок из статьи Эдсгера В. Дейкстры 1974 года «О роли научной мысли»: Позвольте мне попытаться объяснить вам, что на мой вкус характерно для всего разумного мышления. Дело в том, что человек желает углубленно изучать аспект своего предмета изолированно ради своей собственной последовательности, все время зная, что он …

2
Гранулярность исключений
Я столкнулся с дебатами между несколькими друзьями и мной. Они предпочитают общие исключения, такие как ClientErrorExceptionи ServerErrorExceptionс подробностями в качестве полей исключения, тогда как я предпочитаю делать вещи более конкретными. Например, у меня может быть несколько исключений, таких как: BadRequestException AuthenticationFailureException ProductNotFoundException Каждый из них построен на основе кода ошибки, …

7
Я делаю свои занятия слишком гранулированными? Как следует применять принцип единой ответственности?
Я пишу много кода, который включает в себя три основных шага. Получить данные откуда-то. Преобразуйте эти данные. Положите эти данные куда-нибудь. Я обычно заканчиваю тем, что использую три типа классов - вдохновленные их соответствующими шаблонами дизайна. Фабрики - построить объект из какого-то ресурса. Посредники - использовать фабрику, выполнить трансформацию, затем …

2
Является ли это хорошим подходом для иерархии классов на основе pImpl в C ++?
У меня есть иерархия классов, для которой я хотел бы отделить интерфейс от реализации. Мое решение состоит в том, чтобы иметь две иерархии: иерархию дескрипторов классов для интерфейса и иерархию закрытых классов для реализации. Базовый класс дескриптора имеет указатель на реализацию, которую производные классы дескриптора приводят к указателю производного типа …
9 design  c++  c++11 

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

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

2
Программирование на ориентированные на данные интерфейсы
Часть нашего кода написана в следующем стиле: // IScheduledTask.cs public interface IScheduledTask { string TaskName { get; set; } int TaskPriority { get; set; } List<IScheduledTask> Subtasks { get; set; } // ... several more properties in this vein } // ScheduledTaskImpl.cs public class ScheduledTaskImpl : IScheduledTask { public string …

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

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

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

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

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

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

3
REST ограничен только оптимистичным управлением параллелизмом?
контекст Из-за отсутствия сохранения состояния архитектурного стиля REST, когда каждый запрос стоит отдельно, ведущий сервер никогда не хранит никакой информации о клиенте. Таким образом, пессимистическое управление параллелизмом не подходит, потому что для этого требуется хранилище сервера, клиент которого получает блокировку ресурса. Затем используется оптимистичный контроль параллелизма с помощью Etagзаголовка. (кстати, …

4
Является ли Шаблон посетителя действительным в этом сценарии?
Цель моей задачи - спроектировать небольшую систему, которая может выполнять запланированные повторяющиеся задачи. Повторяющаяся задача - это что-то вроде «отправлять электронное письмо администратору каждый час с 8:00 до 17:00 с понедельника по пятницу». У меня есть базовый класс с именем RecurringTask . public abstract class RecurringTask{ // I've already figured …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.