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

32
Принцип наименьшего знания

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

32
Является ли «Parent x = new Child ();» вместо «Child x = new Child ();» плохой практикой, если мы можем использовать последний?

Например, я видел несколько кодов, которые создают такой фрагмент: Fragment myFragment=new MyFragment(); которая объявляет переменную как Fragment вместо MyFragment, а MyFragment является дочерним классом Fragment. Я не удовлетворен этой строкой кодов, потому что я думаю, что этот код должен быть:...

32
Это хорошая практика, чтобы использовать список перечислений?

В настоящее время я работаю в системе, где есть пользователи, и у каждого пользователя есть одна или несколько ролей. Является ли хорошей практикой использование списка значений Enum для пользователя? Я не могу придумать ничего лучшего, но с этим не все в порядке. enum Role{ Admin = 1, User = 2, }...

32
Что такое процедурное программирование? Чем именно он отличается от ООП? Это так же, как функциональное программирование?

Я программирую на Java в очень объектно-ориентированном (ОО) стиле. ООП приходит ко мне очень интуитивно, но я очень мало знаю о других видах программирования. Что такое процедурное программирование ? Чем именно он отличается от ООП? Это то же самое, что функциональное программирование ? Раньше я...

32
Функциональное программирование по сравнению с ООП с классами

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

32
Каков принцип наименьшего удивления?

В программировании то, что называется принципом наименьшего удивления? Как эта концепция связана с разработкой хороших API? Это применимо только к объектно-ориентированному программированию или оно проникает и в другие методы программирования? Связано ли это с принципом «делать что-то в своем...

31
Вы обычно отправляете объекты или их переменные-члены в функции?

Что является общепринятой практикой между этими двумя случаями: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } или function insertIntoDatabase(long accountId, long thingId, double someValue) {...

31
Почему объекты передаются по ссылке?

Молодой сотрудник, который изучал ОО, спросил меня, почему каждый объект передается по ссылке, что противоположно примитивным типам или структурам. Это общая характеристика языков, таких как Java и C #. Я не мог найти хороший ответ для него. Каковы мотивы для этого дизайнерского решения?...

31
Является ли переопределение конкретных методов запахом кода?

Правда ли, что переопределение конкретных методов - это запах кода? Потому что я думаю, что если вам нужно переопределить конкретные методы: public class A{ public void a(){ } } public class B extends A{ @Override public void a(){ } } это можно переписать как public interface A{ public void a(); }...

31
Хорошо ли иметь запах кода, если он допускает более простое решение другой проблемы? [закрыто]

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

31
Что бы вы сделали, если бы ваш клиент потребовал от вас не использовать объектно-ориентированное программирование?

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

30
Понимание «программирования для интерфейса»

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

30
Учитывая табун лошадей, как мне определить среднюю длину рога всех единорогов?

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

30
Что означает «S» в OOPS?

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

30
Интерфейсы на абстрактном классе

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

30
Когда и зачем использовать вложенные классы?

Используя объектно-ориентированное программирование, у нас есть возможность создать класс внутри класса (вложенный класс), но я никогда не создавал вложенный класс за 4 года своего опыта программирования. Для чего нужны вложенные классы? Я знаю, что класс может быть помечен как закрытый, если он...

30
Это запах кода, чтобы установить флаг в цикле, чтобы использовать его позже?

У меня есть фрагмент кода, в котором я повторяю карту до тех пор, пока определенное условие не станет истинным, а затем позже использую это условие, чтобы выполнить еще кое-что. Пример: Map<BigInteger, List<String>> map = handler.getMap(); if(map != null && !map.isEmpty()) { for...

30
Как сторонники функционального программирования ответят на это утверждение в Code Complete?

На странице 839 второго издания Стив Макконнелл обсуждает все способы, с помощью которых программисты могут «преодолевать сложности» в больших программах. Его советы завершаются этим утверждением: «Объектно-ориентированное программирование обеспечивает уровень абстракции, который применяется...

29
Почему класс должен быть чем-то отличным от «абстрактного» или «окончательного / запечатанного»?

После более 10 лет программирования на Java / C # я создаю либо: абстрактные классы : контракт не предназначен для создания как есть. заключительные / закрытые классы : реализация не предназначена для использования в качестве базового класса для чего-то другого. Я не могу представить себе ситуацию,...

29
Создать новый объект или сбросить каждое свойство?

public class MyClass { public object Prop1 { get; set; } public object Prop2 { get; set; } public object Prop3 { get; set; } } Предположим , у меня есть объект myObjectиз MyClassи мне нужно сбросить свои свойства, что лучше создать новый объект или переназначить каждое свойство? Предположим, у...