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

Мнемоника для набора принципов проектирования: единая ответственность, открытый-закрытый, подстановка Лискова, сегрегация интерфейса, инверсия зависимостей

6
Может ли проблема круг-эллипс быть решена путем изменения отношений?
Имея CircleпростиратьсяEllipse перерывам в Лиск Substition принципе , потому что она изменяет постусловие , а именно: вы можете установить X и Y независимо друг от друга , чтобы нарисовать эллипс, но X всегда должен быть равен Y для окружностей. Но разве проблема не в том, что круг является подтипом эллипса? …

5
Полезно ли мини-рефакторинг кода в надежде улучшить качество, или это просто «перемещение кода» без особой выгоды?
пример Я натолкнулся на монолитный код, который делает «все» в одном месте - загружает данные из базы данных, показывает разметку HTML, действует как маршрутизатор / контроллер / действие. Я начал применять SRP, перемещая код базы данных в собственный файл, обеспечивая лучшее именование вещей, и все это выглядело хорошо, но потом …

1
Принцип Открытого Закрытия (OCP) против Принципа Инверсии Зависимостей (DIP)
Я пытался понять разницу между Open Closed Principle (OCP) и Dependency Inversion Princible (DIP). Основываясь на исследованиях, которые я провел в Интернете, я пришел к выводу, что «DIP - это один из вариантов, с помощью которого мы можем достичь OCP». Я прав на это? Можете ли вы привести пример, который …

5
Является ли перегрузка примером принципа Open / Closed?
Википедия говорит «программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации» Слово функции привлекло мое внимание, и теперь я задаюсь вопросом, можем ли мы предположить, что создание перегрузки для метода может рассматриваться как пример принципа Open / closed или нет? Позвольте мне …

4
Как указать предварительное условие (LSP) в интерфейсе в C #?
Допустим, у нас есть следующий интерфейс - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Предварительное условие состоит в том, что ConnectionString должен быть установлен / инициализирован, прежде чем любой из методов может быть запущен. Это предварительное …

9
SOLID против статических методов
Вот проблема, с которой я часто сталкиваюсь: пусть будет проект интернет-магазина с классом Product. Я хочу добавить функцию, которая позволяет пользователям публиковать отзывы о продукте. Итак, у меня есть класс Review, который ссылается на продукт. Теперь мне нужен метод, который перечисляет все отзывы о продукте. Есть две возможности: (А) public …

4
Как меняется мышление о шаблонах проектирования и методах ООП в динамических и слабо типизированных языках?
В этом отношении уже есть довольно полезный вопрос (« Шаблоны проектирования без ООП? »), Но мне более любопытна переходная точка зрения для человека, только начинающего работать с динамическими и слабо типизированными языками. То есть: скажем, я программировал на C ++, C # или Java в течение многих лет и впитал …

3
Применяется ли принцип разделения интерфейсов к конкретным методам?
Поскольку принцип сегрегации интерфейса предполагает, что ни одного клиента не следует заставлять зависеть от методов, которые он не использует, поэтому клиент не должен реализовывать пустой метод для своих методов интерфейса, в противном случае этот метод интерфейса должен быть помещен в другой интерфейс. Но как насчет конкретных методов? Должен ли я …

3
Является ли обнаружение для разработчиков проблемой при использовании принципов SOLID?
Я занимаюсь линейкой бизнес-приложений, где все остальные разработчики привыкли делать базовые CRUD-приложения или сосредоточены исключительно на создании симпатичных / функциональных интерфейсов, и я получаю много нового. «С тем, как мы используем это, сотрудник будет иметь все, что вы можете сделать с сотрудником». И это было правдой. Этот «класс» имел тысячи …
10 solid  crud 

2
Когда я следую SRP, как мне поступить с проверкой и сохранением сущностей?
В последнее время я читал « Чистый код» и различные онлайн-статьи о SOLID, и чем больше я читаю об этом, тем больше чувствую, что ничего не знаю. Допустим, я создаю веб-приложение с использованием ASP.NET MVC 3. Допустим, у меня есть действие UsersControllerс таким Createдействием: public class UsersController : Controller { …

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

7
Обход правил у волшебников и воинов
В этой серии постов в блоге Эрик Липперт описывает проблему объектно-ориентированного проектирования на примере мастеров и воинов, где: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } } sealed …

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

2
Существует ли принцип интерфейса «спросите только то, что вам нужно»?
Я перешел на использование принципа проектирования и использования интерфейсов, который гласит: «просите только то, что вам нужно». Например, если у меня есть куча типов, которые можно удалить, я сделаю Deletableинтерфейс: interface Deletable { void delete(); } Тогда я могу написать общий класс: class Deleter<T extends Deletable> { void delete(T t) …

6
В чем разница между «наймом» и честным «почти» для окончательных интервью на месте? [закрыто]
Закрыто. Этот вопрос не по теме . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме разработки программного обеспечения в стеке. Закрыто 6 лет назад . Итак, я недавно провел собеседования на местах с Google и Amazon и получил вежливые письма с …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.