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

Методология, которая позволяет моделировать систему как набор объектов, которыми можно управлять и манипулировать модульным способом

17
Почему закрытые поля недостаточно защищены?
privateПолезна ли видимость полей / свойств / атрибутов класса? В ООП рано или поздно вы создадите подкласс класса, и в этом случае полезно понять и иметь возможность полностью изменить реализацию. Одна из первых вещей, которые я делаю, когда делаю подкласс класса, - это изменение набора privateметодов на protected. Тем не …

23
Если неизменные объекты хороши, почему люди продолжают создавать изменяемые объекты? [закрыто]
Если неизменяемые объекты¹ хороши, просты и дают преимущества в параллельном программировании, почему программисты продолжают создавать изменяемые объекты2? У меня есть четыре года опыта в программировании на Java, и, как я понимаю, первое, что люди делают после создания класса, - это генерирование геттеров и сеттеров в IDE (что делает его изменчивым). …

14
Должны ли мы избегать создания объектов в Java?
Коллега сказал мне, что в Java создание объекта является самой дорогой операцией, которую вы можете выполнить. Поэтому я могу только заключить, чтобы создать как можно меньше объектов. Кажется, это несколько противоречит цели объектно-ориентированного программирования. Если мы не создаем объекты, то мы просто пишем один длинный класс класса C для оптимизации?

2
Должны ли имена пакетов быть единственными или множественными?
Часто, особенно в библиотеках, пакеты содержат классы, которые организованы вокруг единой концепции. Примеры: xml, sql, user, config, db . Я думаю, что мы все вполне естественно чувствуем, что эти пакеты правильны в единственном числе . com.myproject. xml. Элемент com.myproject. SQL .Connection com.myproject. пользователь .User com.myproject. пользователь .UserFactory Однако, если у …

15
Зачем нам нужны частные переменные?
Зачем нам нужны закрытые переменные в классах? В каждой книге по программированию, которую я прочитал, говорится, что это частная переменная, именно так вы ее определяете, но на этом остановимся. Формулировка этих объяснений всегда казалась мне такой, будто у нас действительно кризис доверия к нашей профессии. Объяснения всегда звучали так, как …


16
Когда оправдываются геттеры и сеттеры?
Геттеры и сеттеры часто критикуются за то, что они не являются правильными. С другой стороны, большая часть кода OO, который я видел, содержит обширные методы получения и установки. Когда получатели и установщики оправданы? Вы пытаетесь избежать их использования? Они чрезмерно используются в целом? Если у вашего любимого языка есть свойства …

14
Откуда взялась эта концепция «отдавать предпочтение композиции перед наследованием»?
В последние несколько месяцев, мантра «композиция благосклонности вместо наследования», кажется, возникла из ниоткуда и стала почти своего рода мемом в сообществе программистов. И каждый раз, когда я вижу это, я немного озадачен. Это как кто-то сказал: «Скорее тренируйся, чем молотки». По моему опыту, состав и наследование - это два разных …

8
Являются ли плохие методы программирования типичными для индустрии программного обеспечения? [закрыто]
Я только начал свою первую работу в качестве разработчика программного обеспечения более месяца назад. Все, что я узнал об ООП, ТВЕРДОМ , СУХОМ , ЯГНИ, шаблонах проектирования, SRP и т. Д., Можно выбросить из окна. Они используют C # .NET Webforms и делают почти все внутри Code Behind с очень …

17
Лучше ли возвращать NULL или пустые значения из функций / методов, где возвращаемое значение отсутствует?
Я ищу рекомендацию здесь. Я борюсь с тем, лучше ли возвращать NULL или пустое значение из метода, когда возвращаемое значение отсутствует или не может быть определено. Возьмите следующие два метода в качестве примера: string ReverseString(string stringToReverse) // takes a string and reverses it. Person FindPerson(int personID) // finds a Person …

14
Какова идеальная длина метода для вас? [закрыто]
В объектно-ориентированном программировании, конечно, нет точного правила о максимальной длине метода, но я все же обнаружил, что эти две цитаты несколько противоречат друг другу, поэтому я хотел бы услышать, что вы думаете. В « Чистом коде: справочник по мастерству гибкого программного обеспечения» Роберт Мартин говорит: Первое правило функций состоит в …

6
Что на самом деле является «бизнес-логикой»?
Я занимаюсь веб-разработкой с 2009 года, когда начал работать с PHP. Когда я перешел на ASP.NET, я много слышал о DDD и OOAD, где большое внимание уделяется этой «бизнес-логике» и «бизнес-правилам». Дело в том, что все приложения, которые я разрабатывал до сих пор, были посвящены операциям CRUD, и я никогда …

12
Должен ли я избегать частных методов, если я выполняю TDD?
Я только сейчас изучаю TDD. Насколько я понимаю, частные методы не поддаются проверке и не должны беспокоиться, потому что общедоступный API предоставит достаточно информации для проверки целостности объекта. Я понял ООП некоторое время. Насколько я понимаю, частные методы делают объекты более инкапсулированными, таким образом, более устойчивыми к изменениям и ошибкам. …

17
Является ли инкапсуляция еще одним из ООП слонов?
Инкапсуляция говорит мне сделать все или почти все поля приватными и выставить их через getters / setters. Но теперь появляются такие библиотеки, как Lombok, которые позволяют нам раскрывать все приватные поля одной короткой аннотацией @Data. Он создаст геттеры, сеттеры и конструкторы настроек для всех приватных полей. Может ли кто-нибудь объяснить …

13
Должны ли мы устранить локальные переменные, если мы можем?
Например, чтобы сохранить процессор в Android, я могу использовать такой код: PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "abc"); wakeLock.acquire(); но я думаю локальные переменные powerManagerи wakeLockмогут быть устранены ((PowerManager)getSystemService(POWER_SERVICE)) .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag") .acquire(); похожая сцена появляется в окне предупреждений iOS, например: из UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"my title" …

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