Обновить
2K+
37
Вячеслав Чернышов@xpendence

backend.developer { java, kotlin }.in(Sber)

172
Подписчики
Отправить сообщение
Что Вы понимаете под верхними уровнями иерархии?
Тоже бывает. Но реже.
Спешу удовлетворить Ваш интерес. Из книги Роберта Мартина «Чистая архитектура», издание 2018 года, 77 страница. Слова «подтип» там нет. Изучать чистую архитектуру по википедии… Ну, такое… :) Уж лучше хабр :)
Изначально статья называлась «Что не так с S.O.L.I.D», Вы попали пальцем в небо :)
Добавлю чёткости. На предыдущем месте работы одна команда писала заказ для одного крупного ритейлера (привет, Николай). О S.O.L.I.D ничего не слышали (привет, Джонни). Пролетели по срокам более чем в 2 раза. На код без слёз не взглянешь.
Не увидел в расшифровке Ваших претензий про «вообще жесть», я-то думал, сейчас узнаю, как я опозорился, а в ответ услышал филосовское в стиле: «ну ок, в принципе, ладно».

Ну теперь-то уж нам только и остаётся, что «остаться при своём», благо, Ваш адвокат постом выше очень обстоятельно лёг на абмразуру, так что, вдаваться в дальнейшую дискуссию, действительно, смысла нет.
Да, Вы во многом правы, если закопаться очень глубоко и долго дискутировать на эти, в общем-то, философские темы, но зачем заниматься буквоедством? Даже в узком кругу мы стараемся общаться на понятном друг другу языке, а большинство постов на Хабре пишутся для широкой публики, максимально просто и понятно.

И раз уж мне действительно непонятно, что это товарищ прицепился с таким замечанием, так может, Вы позволите ему самому высказаться и объяснить свою позицию?

А Вам — хороших выходных.
Как объекту можно присвоить ссылку? Давайте подумаем.
Как нам известно, объект создаётся при помощи конструкции

var user  = new User();

Как работает эта конструкция (если вкратце)?
new — ключевое слово, выделяющее память под объект.
User — тип объекта.
() — вызываемый конструктор.
и самое главное — user — это ссылка.

Соответственно, при создании нового объекта происходит выделение памяти под этот объект, в нужный конструктор отправляются параметры, если они есть, и объекту присваивается ссылка, по которой мы можем этот объект потом достать.

Можем ли мы присвоить объекту ещё одну ссылку? Конечно. Например:

user1 = user;

Что произошло? Мы не создали новый объект, не выделили память под него. Мы просто присвоили ему ещё одну ссылку. Теперь объект доступен из памяти по двум ссылкам, а не по одной.

Окей. Как происходит преобразование объекта?

Object object = getObject();
var user  = (User) object;

При преобразовании объекта, насколько мне известно, происходит следующее:
— тип объекта теперь User, со всеми полями и методами
— новый объект при этом не создаётся
— преобразованному объекту присваивается новая ссылка — user.

Теперь объект можно получить по обеим ссылкам — по старой и по присвоенной.

Так почему присвоение ссылки объекту? Потому что для одного объекта может быть много ссылок, а для ссылки объект всего один. Ссылка принадлежит объекту, а не наоборот.

Но Вы и так это знаете.
Вроде всё красиво, одно не понятно: как запихнуть в пакет ресурсы приложения с фс,
то бишь произвольные файлы, которые надо положить в конкретное место.

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

Ну так null может быть только поле, а не метод :)
Отступы сохраняются относительно первого символа, IDEA подсвечивает их специальной вертикальной линией.

Да, Вы правы. Так и есть.
Вам, похоже, нужен Embeded Postgres + java-генератор, описанный в статье (через ApplicationListener). В таком случае, при сборке сначала отработает Embeded Postgres, поднимет Вам базу, потом отработает flyway и накатит таблицы, а потом сработает генератор, который сгенерирует сущности. При остановке приложения база будет свёрнута.

Рабочая конфигурация при этом не сильно будет отличаться от предложенной в посте (Postgres меняем на Embeded — вот и все отличия).
Очень сожалею, что встал на четвереньки. Теперь собака, похоже, будет бежать за мной ещё пару кварталов :)
Когда на тебя лает собака, вовсе необязательно разделять её уровень дискуссии, становиться на четвереньки, лаять в ответ и «объяснять свою позицию». Именно по этим соображениям я не поддержал начатую Вами «дискуссию». Прошу Вас больше не тратить моё время, да и своё тоже.
Я не имею ничего против того, чтобы Вы оставались в недоумении. Этот мой коммент тоже дизлайкнуть не забудьте.
Я не знаю, с чего Вы взяли, что SQL = фекалии. Я этого не говорил :) Вы, кстати, таким способом можете продолжить дискуссию с самим собой, я не против. Мне же не настолько интересно обсуждение значений слов, интересных Вам, чтобы тратить на это рабочее время, поэтому дальше без меня :) И, кстати, спасибо за минус. Вы подтвердили моё мнение о Вас.
Вот смотрите. Вы уронили свой айфно в унитаз. Вам хочется его достать, но не хочется мараться о плавающие там фекалии. Вы надеваете перчатки и достаёте свою добычу. С одной стороны, Ваши руки побывали там, но с другой, они не касались содержимого. В этом и заключается смысл выражения «не мараться».

По поводу других аллегорий, применяемых в статье, тоже можете смело обращаться ко мне. Объясню.
Ну ладно уж, нашли багу :)
Сомневаюсь, что нужно так усложнять и так сильно выходить за пределы стандартной работы библиотеки. Вы ведь проработаете в компании, напишете это всё и уволитесь, а другому разработчику потом разбираться. Будете постоянно икать. Оно Вам надо?
Жаль, что не протестировали икеевские батарейки. По моим наблюдениям, у них какой-то ядерный заряд, которого в настенных часах хватает на годы, а в беспроводной мышке на 4 месяца (там, где другие батарейки держат месяц-полтора).

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Ведущий
Java
Kotlin
Clean Architecture
Проектирование архитектуры приложений
Системная аналитика