169 похожих чатов

Начал читать Элегантные объекты Егора Бугаенко и Object Thinking Дэвида

Уэста. Кто знаком с книгами, насколько эти подходы актуальны в рамках андроида и можно ли вообще ориентироваться на мысли этих авторов? Некоторые моменты кажутся мне нерациональными или это я их не так понял:

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

Не использовать Dto классы, потому что они нарушают инкапсуляцию. А ключевая идея ООП заключается в сокрытии данных за объектами. Объекты должны иметь доступ только к тем данным, которые они инкапсулируют, и никогда к данным, инкапсулированным другими объектами.
Это правильно про инкапсуляцию, но в Clean Architecture Dto везде используются (модели Data, Domain, Presentation слоёв, если я правильно понял). А клин вроде как стандарт.

Не должно быть публичных переменных. Как тогда получить какой-нибудь ид или использовать мапперы, если класс сам будет маппером, то это нарушение SRP.

Dao противоречит ООП, так как вместо того, чтобы инкапсулировать взаимодействие с базой данных внутри объекта, Dao извлекает его, а это превращает объекты в процедурные контейнеры данных.
Не могу понять, что тут не так, да и в Room Dao используется. И даже аннотация есть. На мой взгляд, это удобно. Если работать с базой в самом объекте, то получается, ее надо тащить во все слои, и смысл в слоях пропадает?

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

Полный отказ от использования null.
Но если где-то важен перформанс, то null ведь лучше, чем класс обозначающий отсутствие данных, многие функции SDK могут вернуть null. И почему проверка на null плохо, а проверка является ли объект инстансом класса пустых данных хорошо?

3 ответов

36 просмотров

очень интересный вопрос, тоже увлекся этим недавно

Ну описанное перебор, то есть это все хорошо, но на уровне "к этому надо стремиться" а не "только так и пишем". Избегать null, статиков. Про null применительно к андроиду так скорее: - Если нам фреймворк вернул нулл, то оно дальше следующей строчки не идет - весь остальной код нами написанный нуллабельных переменных не содержит. А как писать просто хорошо можно посмотреть на реальных сэмплах от гугля.

Элегантные объекты вообще не применимы в Android

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта