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

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

4
Практические пределы размера Hashtable и словаря в c #
Каковы практические ограничения на количество элементов, которые может содержать C # 4 Dictionary или Hashtable, и общее количество байтов, которые могут содержать эти структуры. Я буду работать с большим количеством объектов и хочу знать, когда эти структуры начнут испытывать проблемы. Для контекста я буду использовать 64-битную систему с тоннами памяти. …

5
Подводные камни доменного дизайна с Entity Framework
Многие учебники по DDD, которые я изучал, в основном охватывают теорию. Все они имеют примеры элементарного кода (Pluralsight и аналогичные). В Интернете также предпринимаются попытки нескольких людей создать учебники по DDD с EF. Если вы начнете их изучать ненадолго - вы быстро заметите, что они сильно отличаются друг от друга. …

2
Классы Python только с одним экземпляром: когда создавать (один) экземпляр класса и когда вместо этого работать с классом?
Данный класс Python, который будет создан только один раз, то есть будет только один объект класса. Мне было интересно, в каких случаях имеет смысл создавать отдельный экземпляр класса, а не работать непосредственно с классом. Есть похожий вопрос , но он имеет другую направленность: речь идет о группировании глобальных переменных и …

5
Должен ли я предпочесть композицию или наследование в этом сценарии?
Рассмотрим интерфейс: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Этот интерфейс реализован рядом классов, которые генерируют волны различной формы (например, SineWaveGeneratorи SquareWaveGenerator). Я хочу реализовать класс, который генерирует SoundWaveмузыкальные данные, а не необработанные звуковые данные. Он получит имя заметки и длину в виде ударов (не секунд) и внутренне …

3
Лучше предварительно инициализировать атрибуты в классе или добавлять их по пути?
Извините, если это АБСОЛЮТНО софомальный вопрос, но мне любопытно, какие есть лучшие практики, и я не могу найти хорошего ответа в Google. В Python я обычно использую пустой класс в качестве контейнера структуры данных super-catchall (вроде как файл JSON) и добавляю атрибуты по пути: class DataObj: "Catch-all data object" def …

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

4
Дизайн на «смешанных» языках: объектно-ориентированный дизайн или функциональное программирование?
В последние несколько лет языки, которые я люблю использовать, становятся все более и более «функциональными». Сейчас я использую языки, которые являются своего рода «гибридом»: C #, F #, Scala. Мне нравится разрабатывать свое приложение, используя классы, которые соответствуют объектам домена, и использовать функциональные возможности, где это делает кодирование проще, более …

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

7
С точки зрения дизайна, каковы лучшие практики для ведения журналов? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 6 лет назад . Я хочу добавить запись в приложение, над которым я сейчас работаю. …

10
Какой смысл в свойствах?
Вот некоторые аргументы для свойств и мои контраргументы: Проще использовать, чем писать методы получения и установки Пары методов получения и установки являются запахом кода. Упростить их написание - это все равно, что облегчить прохождение математического теста, используя форму Scantron и заполнив все буквы "С". Объекты, которые содержат только состояние, для …

2
Объектно-ориентированное позднее связывание
В определении объекта Alan Kays есть определение, которое я частично не понимаю: Для меня ООП означает только обмен сообщениями, локальное хранение и защиту, а также скрытие процесса состояния и крайнюю LateBinding всех вещей. Но что означает «LateBinding»? Как я могу применить это на языке, как C #? И почему это …

4
Шаблон Дублирования Класса?
В настоящее время я работаю сольным разработчиком над моим текущим проектом. Я унаследовал проект от другого разработчика, который с тех пор покинул компанию. Это веб-приложение в стиле модель-вид-контроллер в C #. Он использует Entity Framework для реляционного отображения объектов. И есть два разных набора классов для типов в модели предметной …

5
Лучший шаблон проектирования ООП для последовательности операций
Я работаю над приложением, модуль которого последовательно выполняет следующие финансовые операции: Когда пользователь запрашивает перевод определенной суммы на свой банковский счет: проверить, может ли какая-либо транзакция произойти сейчас? (транзакция может быть осуществлена ​​только в течение определенного периода времени) проверьте, запросил ли пользователь минимальную сумму для снятия проверьте, есть ли у …

4
Что такое «преждевременная абстракция»?
Я слышал, как фразу бросают вокруг, и для меня аргументы звучат совершенно безумно (извините, если я здесь играю, это не мое намерение), как правило, это звучит примерно так: Вы не хотите создавать абстракцию до того, как узнаете, каков общий случай, иначе (1) вы можете помещать в свои абстракции вещи, которые …

2
Существует ли элегантный способ проверки уникальных ограничений на атрибуты объекта домена без перемещения бизнес-логики на уровень обслуживания?
Я уже 8 лет адаптирую дизайн, ориентированный на предметную область, и даже после всех этих лет есть еще одна вещь, которая меня беспокоит. Это проверка уникальной записи в хранилище данных для объекта домена. В сентябре 2013 года Мартин Фаулер упомянул принцип TellDontAsk , который, по возможности, должен применяться ко всем …

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