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

Объектно-ориентированное проектирование - это процесс планирования системы взаимодействующих объектов с целью решения программной задачи.

209
Нужны ли нам ОО-языки для управления сложностью программного обеспечения?

Это будет очень нетехнический, мягкий вопрос, и я не уверен, что это правильная платформа. Но я начинающий студент CS, поэтому надеюсь, что вы, ребята, это терпите. В первом семестре мы познакомились с такими понятиями ООП, как инкапсуляция, сокрытие данных, модульность, наследование и т. Д. Через...

194
Неправильно ли использовать логический параметр для определения поведения?

Время от времени я видел практику, которая «чувствует» неправильную, но я не могу четко сформулировать, что в ней плохого. Или, может быть, это просто мое предубеждение. Поехали: Разработчик определяет метод с логическим значением в качестве одного из его параметров, и этот метод вызывает другой, и...

144
Банда Четырех тщательно исследовала «Пространство Образца»?

С тех пор, как я впервые узнал о шаблонах проектирования Gang of Four (GoF) , по крайней мере 10 лет назад, у меня сложилось впечатление, что эти 23 шаблона должны быть лишь небольшим образцом чего-то гораздо большего, что мне нравится называть Пространством шаблонов . Это гипотетическое...

135
Лучше ли возвращать NULL или пустые значения из функций / методов, где возвращаемое значение отсутствует?

Я ищу рекомендацию здесь. Я борюсь с тем, лучше ли возвращать NULL или пустое значение из метода, когда возвращаемое значение отсутствует или не может быть определено. Возьмите следующие два метода в качестве примера: string ReverseString(string stringToReverse) // takes a string and reverses it....

133
Это нарушение принципа подстановки Лискова?

Скажем, у нас есть список сущностей задач и ProjectTaskподтип. Задачи могут быть закрыты в любое время, кроме тех, ProjectTasksкоторые не могут быть закрыты, если они имеют статус Запущено. Пользовательский интерфейс должен гарантировать, что опция закрытия запуска ProjectTaskникогда не будет...

115
Что на самом деле является «бизнес-логикой»?

Я занимаюсь веб-разработкой с 2009 года, когда начал работать с PHP. Когда я перешел на ASP.NET, я много слышал о DDD и OOAD, где большое внимание уделяется этой «бизнес-логике» и «бизнес-правилам». Дело в том, что все приложения, которые я разрабатывал до сих пор, были посвящены операциям CRUD, и...

106
Как вы оправдываете написание большего количества кода, следуя правилам чистого кода?

Заметка модератора На этот вопрос уже отправлено 17 ответов . Прежде чем опубликовать новый ответ, пожалуйста, прочитайте существующие ответы и убедитесь, что ваша точка зрения еще не покрыта должным образом. Я следовал некоторым рекомендациям, рекомендованным в книге «Чистый код» Роберта Мартина,...

105
Почему квадратное наследование от Rectangle будет проблематичным, если мы переопределим методы SetWidth и SetHeight?

Если Квадрат является типом Прямоугольника, то почему Квадрат не может наследовать от Прямоугольника? Или почему это плохой дизайн? Я слышал, как люди говорят: Если вы сделали Square производным от Rectangle, то Square должен использоваться везде, где вы ожидаете прямоугольник В чем здесь проблема?...

95
Почему я должен использовать внедрение зависимости?

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

84
Богатые доменные модели - как именно вписывается поведение?

В дебатах моделей предметной области Rich против Anemic Интернет полон философских советов, но не хватает авторитетных примеров. Цель этого вопроса - найти четкие рекомендации и конкретные примеры правильных моделей проектирования на основе доменов. (В идеале в C #.) Для реального примера эта...

76
Почему базовые для всех объектов не рекомендуется в C ++

Страуструп говорит: «Не изобретайте сразу уникальную базу для всех ваших классов (класс Object). Как правило, вы можете сделать это лучше для многих / большинства классов». (Язык программирования C ++, четвертое издание, раздел 1.3.4) Почему базовый класс для всех вообще плохая идея, и когда имеет...

69
Мой предложенный дизайн обычно хуже, чем у моего коллеги - как мне стать лучше? [закрыто]

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

64
Наличие флага, указывающего, должны ли мы выдавать ошибки

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

55
Что означает «пользователь не должен решать, является ли он администратором или нет. Привилегии или Система безопасности должны ».

В примере, использованном в этом вопросе, передается минимальное количество данных для функции, которая помогает определить, является ли пользователь администратором или нет. Один общий ответ был: user.isAdmin() Это побудило комментарий, который был повторен несколько раз и проголосовал много раз:...

51
Являются ли классы только с одним (публичным) методом проблемой?

В настоящее время я работаю над программным проектом, который выполняет сжатие и индексацию видеозаписей видеонаблюдения. Сжатие выполняется путем разделения объектов фона и переднего плана, а затем сохранения фона в виде статического изображения и переднего плана в виде спрайта. Недавно я...

46
Почему цепные сеттеры нетрадиционны?

Реализация цепочки на bean-компонентах очень удобна: нет необходимости перегружать конструкторы, мега-конструкторы, фабрики и обеспечивает повышенную читаемость. Я не могу думать о минусах, если только вы не хотите, чтобы ваш объект был неизменным , и в этом случае у него все равно не было бы...

44
Распространение исключений: когда я должен ловить исключения?

MethodA вызывает MethodB, который, в свою очередь, вызывает MethodC. Нет обработки исключений в MethodB или MethodC. Но в MethodA есть обработка исключений. В MethodC происходит исключение. Теперь это исключение всплывает в методе А, который обрабатывает его соответствующим образом. Что не так с...

44
Где разместить бизнес-логику в дизайне MVC?

Я создал простое Java-приложение MVC, которое добавляет записи через формы данных в базу данных. Мое приложение собирает данные, проверяет и сохраняет их. Это связано с тем, что данные поступают онлайн от разных пользователей. данные в основном числовые по своей природе. Теперь, когда числовые...

43
Как модульные тесты облегчают дизайн?

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