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

10
Как удалить дублирующийся код (в общем)?

На языке ОО (например, но не только на Java), как вы исправляете дублирующий код в зависимости от области его появления? Я бы начал с (например) в том же классе (области действия) выполнить рефакторинг Извлечь метод (исправить) в классах той же иерархии (области видимости) выполнить Extract Method...

10
Разумно ли расширять класс только для повторного использования одной функции?

Я разрабатываю ряд пост-фильтров для сайта WordPress, и я создал первые 4 с одним классом. Последние два достаточно различны по объему, чтобы разделить только одну функцию (функцию для создания конечных ссылок) в своих классах. Разумно ли в данном случае или в любом другом подобном гипотетическом...

10
Должен ли я передать объект в конструктор или создать экземпляр в классе?

Рассмотрим эти два примера: Передача объекта в конструктор class ExampleA { private $config; public function __construct($config) { $this->config = $config; } } $config = new Config; $exampleA = new ExampleA($config); Создание класса class ExampleB { private $config; public function...

10
Когда уместна перегрузка метода?

Предположим, я работаю над существующей, достаточно большой системой. У меня есть объект myObjectкласса MyClass(для примера, предположим, я работаю в Java). myObjectэто композиция, содержащая Collection, скажем, а Listи другие объекты, которые (я думаю) не имеют значения. Он содержит методы...

10
лучшая практика для инициализации учеников в php

У меня есть много кода, как это в моих конструкторах: - function __construct($params) { $this->property = isset($params['property']) ? $params['property'] : default_val; } Лучше сделать это, чем указывать значение по умолчанию в определении свойства? то есть public $property = default_val?...

10
Шаблон проектирования для обработки ответа

Большую часть времени, когда я пишу некоторый код, который обрабатывает ответ для определенного вызова функции, я получаю следующую структуру кода: пример: это функция, которая будет обрабатывать аутентификацию для системы входа class Authentication{ function login(){ //This function is called from...

10
Что если глобальные значения имеют смысл?

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

10
Как избежать общих имен для абстрактных классов?

В общем, хорошо избегать таких слов, как «handle» или «process», как части имен рутины и имен классов, если вы не имеете дело с (например) дескрипторами файлов или (например) процессами unix. Однако абстрактные классы часто не знают, что они собираются делать с чем-то, кроме, скажем, обработки. В...

10
ООП терминология в Ruby и C ++

Я учусь на С ++ в своей школе. Так как я программировал на Ruby, я знаю кое-что ООП. Но в C ++ есть функции-члены, переменные-члены и статические функции. В Ruby у нас есть методы экземпляра, переменные экземпляра и переменные класса. И есть еще ... По какой причине они разные? Это совершенно...

10
Является ли «если метод повторно используется без изменений, поместите метод в базовый класс или создайте интерфейс», это хорошее правило?

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

10
Сколько усилий я должен инвестировать в создание слабосвязанных конструкций?

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

10
Каков рекомендуемый подход для вспомогательных функций в JavaScript?

Каков рекомендуемый подход для вспомогательных функций? Я хотел бы выбрать одну технику и запустить ее, чтобы создать свой новый «класс». Вот варианты дизайна, которые я обдумал: Вариант 1: вспомогательная функция во внешней области, вызывается с контекстом экземпляра function createPane (pane) {...

10
Наследование: действительно ли код из суперкласса * скопирован * в подкласс, или на него ссылается подкласс *?

Класс Subявляется подклассом класса Sup. Что это значит практически? Или, другими словами, каково практическое значение слова «наследование»? Вариант 1: Код из Sup фактически скопирован в Sub. (как в 'copy-paste', но без скопированного кода, визуально видимого в подклассе). Пример: methodA()метод...

10
Зачем нам нужен экземпляр класса Scanner для получения входных данных на Java?

Java является объектно-ориентированным, но зачем нам нужно создавать объект из класса Scanner для получения ввода? next()Например, не могут ли методы быть статическими? C выглядит для меня довольно просто, как вы только используете scanf(), gets()или fgets(). Я уверен, что у разработчиков Java есть...

10
Избегайте конструкторов со многими аргументами

Так что у меня есть фабрика, которая создает объекты разных классов. Все возможные классы происходят от абстрактного предка. Фабрика имеет файл конфигурации (синтаксис JSON) и решает, какой класс создать, в зависимости от конфигурации пользователя. Чтобы добиться этого, фабрика использует boost ::...

10
Является ли наследование Python стилем наследования «как есть» или композиционным стилем?

Учитывая, что Python допускает множественное наследование, как выглядит идиоматическое наследование в Python? В языках с единичным наследованием, таких как Java, наследование будет использоваться, когда вы можете сказать, что один объект «a-a» другого объекта и вы хотите разделить код между...

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

У меня есть два базовых класса, Operationи Trigger. У каждого есть несколько подклассов, которые специализируются на определенных типах операций или триггеров. А Triggerможет вызвать конкретный Operation. Хотя Operationможет быть вызвано конкретным Trigger. Мне нужно написать код, который...

10
Использование интерфейсов для слабосвязанного кода

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

10
Разве плохо создавать классы, единственной целью которых является неявное преобразование в другой класс?

Представьте себе ситуацию, когда мы используем библиотеку, которая позволяет вам создавать Circleобъекты, где вы можете указать радиус и центр круга, чтобы определить его. Однако по какой-то причине он также принимает обязательный flavourпараметр. Теперь предположим, что мне действительно нужно...