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

13
Может ли проблема круг-эллипс быть решена путем изменения отношений?

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

13
Принцип инверсии зависимости: Как определить «политику высокого уровня» и «детализацию низкого уровня» для других людей?

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

13
Следуют ли SOLID чтению и записи файлов две разные обязанности?

Я только начинаю изучать SOLID, и я не уверен, что чтение из файлов и запись в файлы являются одной и той же ответственностью. Цель имеет тот же тип файла; Я хочу читать и писать .pdf в моем приложении. Приложение на Python, если это имеет какое-либо значение....

13
Применяя твердые принципы

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

13
Не нарушают ли макеты принцип Open / Closed?

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

13
Стек, расширяющий LinkedList. Нарушение принципа подстановки Лискова?

Существует класс LinkedList с такими функциями, как add_first (), add_last (), add_after (), remove_first (), remove_last () и remove () Теперь есть класс Stack, который предоставляет такие функции, как push (), pop (), peek () или top (), и для реализации этих методов он расширяет методы класса...

12
Принцип Открытого Закрытия (OCP) против Принципа Инверсии Зависимостей (DIP)

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

12
Является ли перегрузка примером принципа Open / Closed?

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

12
Полезно ли мини-рефакторинг кода в надежде улучшить качество, или это просто «перемещение кода» без особой выгоды?

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

11
Как меняется мышление о шаблонах проектирования и методах ООП в динамических и слабо типизированных языках?

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

11
SOLID против статических методов

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

11
Как указать предварительное условие (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...

10
Применяется ли принцип разделения интерфейсов к конкретным методам?

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

10
Является ли нарушением принципа Открыто-Закрыто обновление константы, представляющей реальное значение?

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

10
Когда я следую SRP, как мне поступить с проверкой и сохранением сущностей?

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

10
Является ли обнаружение для разработчиков проблемой при использовании принципов SOLID?

Я занимаюсь линейкой бизнес-приложений, где все остальные разработчики привыкли делать базовые CRUD-приложения или сосредоточены исключительно на создании симпатичных / функциональных интерфейсов, и я получаю много нового. «С тем, как мы используем это, сотрудник будет иметь все, что вы можете...

9
Обход правил у волшебников и воинов

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

9
Существует ли принцип интерфейса «спросите только то, что вам нужно»?

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

9
В чем разница между «наймом» и честным «почти» для окончательных интервью на месте? [закрыто]

Закрыто. Этот вопрос не по теме . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме разработки программного обеспечения в стеке. Закрыто 6 лет назад . Итак, я недавно провел собеседования на местах с Google и Amazon и получил...

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

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