LINUX.ORG.RU

Java джун познаёт мир

 , ,


4

2

Работаю больше 4 месяцев джуном на джаве (spring-boot, hibernate), познаю кровавый интерпрайз. Пока легаси поддерживать не кидали, пилю новый функционал на проектах.

В связи с чем у меня возникло сразу несколько глобальных вопросов по джава-индустрии, надеюсь матёрые форумчане помогут разобраться.

Getters/Setters

Постоянно в дтошках вижу одну и туже картину. Куча private полей, и к каждому из них геттер и сеттер. Больше ничего в классе нету. Я не понимаю, нафига строить тут типа «инкапсуляцию», если класс ничего семантически не инкапсулирует? Почему бы не сделать просто public филды?

Lombok

Крутая штука, но некоторые её до жути боятся и продолжают генерировать шаблонный код. Из трёх проектов, в которых я писал код, в двух ломбока не было и всё надо было делать руками (да, нажать биндинг для генерации в idea - тоже, считай, руками). Кроме того ломбок предоставляет @RequiredArgsConstructor, который в спринг-бинах просто мастхэв

Любовь к старым технологиям

Во всех трёх проектах (и это не легаси говно, с нуля все написаны в 2020) используется java 8. Почему не 9, где для optional подвезли нормальные методы? Почему вообще у чуваков такая тяга к старым технологиям? В новой джаве вот уже рекорды добавили, чтобы без ломбока и прочего жить нормально, так не, мы продолжим сидеть на 8, в худше случае и без ломбока.

И это не только с версией джавы, на проектах (новых!) используется версия querydsl 3.x, поддержка которой давно закончилась. Понятно, что в 4.x поломали совместимость, но неужели разобраться с этим это прям такое запарное дело?

Ехал singleton через singleton или процедурное программирование

По сути в архитектуре веб-приложухи на джаве нету никакого ООП. Все Service-компоненты с бизнес-логикой это по сути просто набор процедур. Все объекты service-классов существуют в единственном виде как синглтон. По крайней мере, я так это понял. Dtoшки это вообще не класс, это просто классический record в виде си. Всё в итоге сводится к процедурному программированию, когда дтошки (читай - записи) суются в методы сервисов (читай - в процедуры), откуда вызываются другие методы (по сути те же процедуры).

Код и данные максимально разделены. Это как-то не сходится с моими представлениями о ооп и тому, чего я ожидал от «ооп-языка»

Непонятные решения в БД и около её.

В лабах я привык использовать idшники в качестве PK, однако в реальном интерпрайзе везде uuidшники. Я погуглил, понял, что всё как-то связано с масштабированием и немного с безопастностью (если неавторизованные юзеры работают с сущностями), но в одном проекте у нас были и idшники, и uuidшники! Зочем?

Чейнджсеты ведутся в liquibase, причём все они хранятся в одном каталоги и инклюдятся в мастер-чейнджсет через includeAll. Нумеруются по принципу дата-айдишник-описание.xml. НО. Это же костыль! Если у меня в один день будет changeset в id=9 и с id=10, то 10ка попросту выполнится перед девяткой! Если уж использовать только числовые айди, то почему бы liquibase Не выполнять их по очереди?

Также не пишутся никакие sql-триггеры, вся логика прописывается в коде. Хотя в некоторых местах триггеры выглядели бы прям как образцовый пример из методички, на мой взгляд.

Ответ на: комментарий от Aber

sql файлы с ченджсетами именованными например датой 20201025.sql, изменения применяются через какой-нибудь cli типа psql

Да, я не спорю что такие вещи можно напилить самому, просто если готовое уже есть то пилить часто нет смысла. К тому же автоматичекое определение текущей версии и апдейт до нужного состояния, генерилки апдейтив и прочие мелочи которые облегчают жизнь.

В ряде проектов для тестов используется h2 база и мне это не нравится, т.к. там база не полная, сложные вещи требуют raw-sql

Ну да, х2 не универсальное решение конечно, но лучше иметь возможность проверить 90% изменений чем не проверить ничего.

ya-betmen ★★★★★ ()
Ответ на: комментарий от Fizzika

К счастью, нет, у нас REST. Кстати, а кто-то использует SOAP в новых проектах в 2020 году?

Зависит от того, для чего данный проект. Мы у себя многое переписали в этом году с JavaEE на SpringBoot, но интеграции со сторонними системами остались прежними, а это во многих случаях SOAP/XML.

Irben ★★ ()
Ответ на: комментарий от KivApple

У Java же обратная совместимость, не? Просто изменить версию Java и пересобрать проект? Из ломающего я помню только то, что рефлексию ломали вводя модули, но и то решается одним ключом запуска.

В общем случае - да. И многие вещи чинятся достаточно легко, если код не написан через одно место. Нельзя также забывать, что приложению надо где-то крутиться. Вот бегало приложение на восьмёрке и под Wildfly версии Х. Захотелось на 11-ую обновиться, так будьте любезны и Wildfly обновить. А там куча изменений и в итоге получаем достаточно большие изменения, под которые можно целый проект завести.

Irben ★★ ()
Ответ на: комментарий от Aber

Liquibase можно применять по-разному. Изначально мы добавляли его в зависимость к артефакту и при запуске приложения пробегал liquibase, который лочит базу, выполняет скрипты, снимает блокировку. Всё было классно на больших кластерах, когда у тебя 4-8 серверов и перезапускаются они раз в пару-тройку недель во время релизов. Скорость там не нужна.

Всё изменилось, когда переехали на SpringBoot и в контейнеры. Теперь куча подов и если идёт деплой релиза, то заколдобишься ждать, когда один за другим прогонят liquibase скрипты. А если ещё есть настройка в Kubernetes liveness / readiness probe, то половина контейнеров может вылетить, так как тупо не дождались своей очереди за отведённое время.

В общем, теперь мы запускаем liquibase во время релиза в рамках pipeline. И скорость запуска увеличилась и переделывать мало, что пришлось. Красота!

Irben ★★ ()
Ответ на: комментарий от Legioner

Во-первых иногда нужны нетривиальные геттеры/сеттеры. Возможно в будущем.

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

— не понадобится :: Ну, вот, сделали возможность использовать все мыслимые источники данных, а проект как начался с MySQL, так на нём до конца и просидел. Вроде как и хорошо, но усложнение оказалось совершенно бесполезным, даже вредным, так как для внесения любого изменения нужно предпринимать больше действий, относительно примитивного варианта. Если на проекте есть средняя текучка, то постоянно приходят кадры, которым нужно объяснять нахрена вот это всё. Это снижает производительность команды. Опять же, есть риск, что новичок не поймёт основополагающих принципов и закроет тикет так, как ему удобнее и быстрее. И тогда половина кода будет на красоте, а половина — костылями. И следующему будет ещё сложнее разобраться

— понадобится, но другое :: Возникли новые требования, но не те, о которых подумал разработчик. Код надо адаптировать. Но сложную кодовую базу менять сложнее, чем простую. А время поджимает. И поперёк изначальной архитектуры мы лепим новую. Так доброе желание избавиться от говнокода приводит только к большему его количеству.

Плак, плак.

ugoday ★★★★★ ()

Getters/Setters

Постоянно в дтошках вижу одну и туже картину. Куча private полей, и к каждому из них геттер и сеттер. Больше ничего в классе нету. Я не понимаю, нафига строить тут типа «инкапсуляцию», если класс ничего семантически не инкапсулирует? Почему бы не сделать просто public филды?

Почитайте что такое видимость в пределах пакета, подумайте. Можете и про модули почитать и подумать, хотя модули так и не взлетели, но на самом деле очень зря, кое-что они решают.

Lombok

Крутая штука, но некоторые её до жути боятся и продолжают генерировать шаблонный код. Из трёх проектов, в которых я писал код, в двух ломбока не было и всё надо было делать руками (да, нажать биндинг для генерации в idea - тоже, считай, руками). Кроме того ломбок предоставляет @RequiredArgsConstructor, который в спринг-бинах просто мастхэв

ее не боятся, просто она привносит не только решения, но и проблемы, все гуглится и хабрится, смотрите.

Во всех трёх проектах (и это не легаси говно, с нуля все написаны в 2020) используется java 8. Почему не 9, где для optional подвезли нормальные методы? Почему вообще у чуваков такая тяга к старым технологиям? В новой джаве вот уже рекорды добавили, чтобы без ломбока и прочего жить нормально, так не, мы продолжим сидеть на 8, в худше случае и без ломбока.

И это не только с версией джавы, на проектах (новых!) используется версия querydsl 3.x, поддержка которой давно закончилась. Понятно, что в 4.x поломали совместимость, но неужели разобраться с этим это прям такое запарное дело?

Все очень просто, во-первых пресловутая средняя температура по больнице и правило инертности, ориентируются на то что работает и то что точно знают все, да надо было бы и во-вторых написать, но и во-первых уже достаточно.

Два оставшихся пункта поток сознания и призма восприятия которая не может быть обсуждаема без конкретного кода.

abcq ★★ ()
Последнее исправление: abcq (всего исправлений: 1)

Работаю больше 4 месяцев джуном на джаве (spring-boot, hibernate), познаю кровавый интерпрайз. Пока легаси поддерживать не кидали, пилю новый функционал на проектах

Да, это энтерпрайз, здесь едят детей. Ногу будешь? Давай, решайся, или проходи мимо.

byko3y ★★ ()
Ответ на: комментарий от Legioner

Потому, что ООП это говно. То, что ты видишь, называется анемичная модель и это правильный подход

Оригинальная статья: https://www.martinfowler.com/bliki/AnemicDomainModel.html

Перевод на российский: https://habr.com/ru/post/224879/

byko3y ★★ ()
Ответ на: комментарий от Fizzika

Возможно там банально не поднять 11ую джаву (старый application server).

не в среде дело: облако в aws, openjdk, jenkins

Чтобы что-то сделать, надо, чтобы это кто-то сделал. Облака, белогривые лошадки — это хорошо. Но есть ли у вас человек, который переведёт инфраструктуру на новую яву? А есть ли у него время, может он занят чем? Тут вообще всё не так однозначно.

ugoday ★★★★★ ()
Ответ на: комментарий от byko3y

Ну а по факту то, положа руку на сердце, не так уж и сложно было перевести python2 код в python3 код, больше истерики было.

Ну и кстати да, весь цимес в том что можно не использовать эту модульность и дальше в 9+ java, так что тут не совсем такая же ситуация, обратная совместимость во всей красе, хотя кое-что все же поломали это факт, но поломали то, что ссзбэшные джава программисты сами сделали вопреки здравому смыслу на свой страх и риск, а потом заголосили, мол но мы закладывались на это поведение на которое никто в общем-то не давал никаких контрактов.

abcq ★★ ()
Последнее исправление: abcq (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

Читай/смотри Егора Бугаенко

Это тот хрен из ютюпчика, который сначала говорит, что никогда не писал код за деньги а потом учит как это нужно делать?

Да :)

byko3y ★★ ()
Ответ на: комментарий от abcq

Третий питон не давал толком ничего по сравнению со вторым. Если бы PSF не надавил, то двойка до сих пор была бы в проде.

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

byko3y ★★ ()
Ответ на: комментарий от byko3y

Так если посмотреть всегда есть выбор, например мести улицы, значит ли это что это осознанный выбор бутылки в терминах беседы? )

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

abcq ★★ ()
Последнее исправление: abcq (всего исправлений: 2)
Ответ на: комментарий от Nervous

Если на проекте есть средняя текучка, то постоянно приходят кадры, которым нужно объяснять нахрена вот это всё.

Документацию пейсать не пробовали?

Документация имеет смысл, если интерфейсы/архитектура пишется навека. Если система «живет», то неизбежно возникает ситуация «подумал одно, в коде написано другое, а в доках написал третье». Даже если только недавно сам работал с этим кодом. Классический пример — API винды.

byko3y ★★ ()
Ответ на: комментарий от abcq

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

У тебя психика жертвы. Да, это «другой взгляд». Ты вот трусы меняешь потому, что мамка иначе заругает? Может быть пора самому принимать решения?

byko3y ★★ ()
Ответ на: комментарий от Nervous

Документация имеет смысл, если интерфейсы/архитектура пишется навека

А так как ничего вечного нет, то и документацию пейсать не надо. Удобно

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

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

Конечно, если к исходникам нет доступа — это другой разговор, и тогда переводчик нужен всегда. Но тред о том, что доступ к сорцам есть, а значит тотальное документирование непродуктивно.

byko3y ★★ ()
Ответ на: комментарий от byko3y

документация не должна выходить за пределы обзора крупных архитектурных сущностей (карта местности) и подсказок о неочевидных особенностях (минные поля)

Собственно, как раз то, о чем был плач (что каждому новому человеку нужно рассказывать устные былины о проекте, иначе он заблудится в архитектуре).

Я думаю, еще как минимум не помешает раздел Getting started.

доступ к сорцам есть, а значит тотальное документирование непродуктивно.

Тотальное и не нужно. Для деталей реализации есть комментарии и докстринги. Но хотя бы публичные интерфейсы-то можно кратко описать?

Nervous ★★★★ ()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от Fizzika

Мне знаешь что интересно... сколько же такой угар платят? Ну то есть примерно, плюс-минус в два раза. Мне просто интересно, насколько работает теория «чем хуже работа — тем больше за нее платят» — вроде тех бывших кодеров на COM или 1C, которые даже за большие деньги не хотят возвращаться.

byko3y ★★ ()
Ответ на: комментарий от byko3y

Нормально вас ранило. В чем смена трусов на ваш взгляд и где пруфы смены, где мамка которая заругает? Что за крики отчаяния?

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

Могу повторить еще раз, язык это инструмент, не всегда удачный и удобный. Хотите выбирайте под задачу другой, хотите пользуйтесь тем что есть и пытайтесь выкрутится теми средствами что доступны, нет тут никакой черствости, лишь прагматичный выбор из каких-то причин и доводов, и выбор это не только ваш, таковы правила игры если вы не делаете проект в стол на собственные средства.

Резюмируя вас же, можно сказать что вы сели вместо бутылки на фляжку в виде python и канистру в виде с, а настоящий стул все еще в том серебре которого так никто и не нашел за годы поисков.

abcq ★★ ()
Ответ на: комментарий от Nervous

Собственно, как раз то, о чем был плач (что каждому новому человеку нужно рассказывать устные былины о проекте)

Научить человека 25+ чему-то новому — это тяжелая задача, есичо. Да, желательно устно, с обратной связью. Можно и письменно, но это намного тяжелее, и при этом трудоемчее, если человеков меньше десятка.

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

byko3y ★★ ()
Ответ на: комментарий от byko3y

Тут печалить должно совсем другое, обычно они работают и работают хорошо, и даже потребляют не так уж и много в отличии от полновесных энтерпрайзных серверов которые необходимы для «классических» приложений. Тут реально грех жаловаться по сравнению с тем вектором по которому жила java до этого, когда чтобы сделать что-то не очень жирное намеренно опускались до голых сервлетов.

abcq ★★ ()
Ответ на: комментарий от abcq

вы все равно остаетесь в пределах зоны комфорта тех языков которые вам нравятся

Наверное, потому я их беспощадно поношу тут из треда в тред и мне пишут замечания, что нельзя так негативно относится ко всему подряд.

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

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

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

Инструмент для чего? Что же ты собрался увидеть, оглянувшись назад, на не зря прожитую жизнь?

byko3y ★★ ()
Последнее исправление: byko3y (всего исправлений: 3)
Ответ на: комментарий от abcq

Могу повторить еще раз, язык это инструмент, не всегда удачный и удобный. Хотите выбирайте под задачу другой, хотите пользуйтесь тем что есть и пытайтесь выкрутится теми средствами что доступны, нет тут никакой черствости, лишь прагматичный выбор из каких-то причин и доводов, и выбор это не только ваш, таковы правила игры если вы не делаете проект в стол на собственные средства.

Что за дерьмище я тут прочла? Некий персонаж (в силу своего знания) говорит нам, ребята, что язык - инструмент. А какие есть? А умеешь ли ты в него? Вот и получается полностью субъективное дерьмо.

все еще в том серебре которого так никто и не нашел за годы поисков.

Нашли, и давно. Жалко только, что в MS Research…

BaBa_Galya ()
Ответ на: комментарий от xavaco5033

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

обычным людям насрать на девятки

если нужно перезапустить сайт, чтобы накатить обновления - он час стоит и не открывается, и никто не обижается

я как раз пытаюсь донести, что нормальным людям на все эти девятки насрать, это какая-то заморочка регуляций банков

stevejobs ★★★★☆ ()
Ответ на: комментарий от Nervous

Когда вы отбираете программистов, они у вас сортировки пишут или сочинение на заданную тему? Когда вы админов собеседуете, они вам про сетки рассказывают, или со своими публикациями знакомят? Ну так и чего удивляться, что люди закодить чего-то могут, а правильно описать результат у них не получается.

еще как минимум не помешает раздел Getting started.

И чтобы его постоянно перечитывали и переписывали. И чтобы на это официально выделялось время. И чтобы лето круглый год и дети не болели.

ugoday ★★★★★ ()
Ответ на: комментарий от ugoday

люди закодить чего-то могут, а правильно описать результат у них не получается

А потом ты такой приходишь и неустанно охреневаешь от того, что они там смогли закодить, не приходя в сознание и не оставив ни строчки документации.

Потом депрессии начинаются, выгорания всякие. Жорево медикаментов горстями. А разгадка-то одна.

Nervous ★★★★ ()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от KivApple

У Java же обратная совместимость, не? Просто изменить версию Java и пересобрать проект? Из ломающего я помню только то, что рефлексию ломали вводя модули, но и то решается одним ключом запуска.

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

Legioner ★★★★★ ()
Ответ на: комментарий от byko3y

В пользу анемичной модели высказываются очень умные люди, мнение которых я уважаю больше, чем мнение Мартина Фаулера в данном вопросе (при этом я, конечно, очень уважаю мнение Мартина по многим вопросам и его Refactoring я посоветую прочитать абсолютно любому, кто ещё не читал). Ссылок не будет, сорри. Можно на RSDN погуглить дебаты, когда-то они были горячие.

Помимо прочего эта статья была написана 17 лет назад. Тогда ещё люди грезили ООП.

А вообще пресловутый Егор Бугаенко хорошо прорекламировал мне ООП, я как почитал, как оно должно выглядеть, так и понял, что это полный бред и от такого нужно держаться подальше.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: Вот и ешьте свою жабу. от deadplace

Re: Вот и ешьте свою жабу.

К сожалению джава слишком хороша, чтобы отказываться от неё из-за отсутствия этой штуки. А так двачую неистово и абсолютно не понимаю, почему разрабы не вводят эту мелочь в язык. Там делать-то нечего, куда более сложные штуки пилят, а properties это же по сути синтаксический сахар.

Legioner ★★★★★ ()
Ответ на: комментарий от byko3y

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

Очень странное мнение. Я писал под венду немало и мне всегда хватало мсдна. Почему это документация не настоящая? На мой взгляд документация на винду одна из лучших в мире.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Что за херню вы вечно порите, адепты тайного знания о модулях java. Ничего там вкуривать не надо, все запускается также как и запускалось. Но если ты хочешь перевести свой проект на модульность тут и придется поплясать. Зачем вы несете эту ахинею нелепую, просто подумай логически, в любом некродистрибутиве давно java 9+, все как работало так и работает. Рефлексию кстати тоже никто не ломал, поломали некорректный код на основе этой рефлексии, но никто не просил идиотов которые писали подобный код этот код писать, идиотам дали 5 лет на то чтобы исправить положение дел, скоро лавочку прикроют окончательно.

anonymous ()
Ответ на: комментарий от BaBa_Galya

Я вот не знаю водителя мусоровоза

У меня внучок есть, пашет. Могу познакомить, если больше расскажешь о «дне». Интересно

Ты коротко и в переносных значениях пишешь, потому я не понимаю, о чем речь. Я не пишу за деньги на питоне нынче, если чо.

byko3y ★★ ()
Ответ на: комментарий от ugoday

Когда вы отбираете программистов, они у вас сортировки пишут или сочинение на заданную тему? Когда вы админов собеседуете, они вам про сетки рассказывают, или со своими публикациями знакомят? Ну так и чего удивляться, что люди закодить чего-то могут, а правильно описать результат у них не получается

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

Это те самые люди, которые любят хаскель, и которые пишут снова и снова статьи «что такое монада», с каждым поколением получая всё менее и менее понятные объяснения этой, на самом деле, копеечной сущности. А вот потому что они изъясняются абстрактными точными терминами, а человек материален, потому ему ближе что-то прикладное, что можно пощупать и понюхать — но нет, это будет неточно, слишком просто и понятно, институтские коллеги засмеют за слишком «быдляцкий» слог.

byko3y ★★ ()
Ответ на: комментарий от Nervous

А потом ты такой приходишь и неустанно охреневаешь от того, что они там смогли закодить, не приходя в сознание и не оставив ни строчки документации

Ты знаешь, чисто по моим ощущением, я не могу вспомнить, чтобы когда-то аккуратно написанная софтина с сорцами, но без доков или почти без доков, вызывала у меня проблемы. Самые большие проблемы у меня вызывала АРХИТЕКТУРА, с доками или без, но обычно к ней пишут доки, потому что иначе черт ногу сломит в коде, поскольку в нем, как обычно, данные с одной стороны, а намертво привязанный к ним код находится с другой стороны, а еще лучше если этот единый код раскидан по всему проекту, чтобы нужно было облазить каждый каталог для понимания работы сущности. К слову, именно ООП провоцирует написание такого кода.

byko3y ★★ ()
Ответ на: комментарий от Legioner

Очень странное мнение. Я писал под венду немало и мне всегда хватало мсдна. Почему это документация не настоящая? На мой взгляд документация на винду одна из лучших в мире

Да, документация под винду очень много прорабатывалась, и она достаточно исчерпывающа для применений умеренной сложности. Но как только ты ударяешься в глубокую системщину, вроде асинхронного ввода-вывода или тяжелого GDI, то внезапно обнаруживается граница документации, за которой детали поведения системы уже не ясны, и приходится либо действовать методом тыка, либо гуглить подобные проблемы, либо качать с торентов сорцы. Причем, многие индусы прибегают именно к методу тыка — из-за этого и возникло такое большое количество софта, не портируемого даже между версиями винды, не говоря уже про Wine. Вот Wine — это реализация документированного интерфейса. Если софт не работает под Wine, то он использует недокументированные особенности. Документированные интерфейсы в Wine существуют уже очень давно, и работа в основном как раз ведется над реализацией недокументированных.

byko3y ★★ ()

2020 год. Я в пятницу запушил каркас сервиса на 15й джаве, обмазавшись ломбоком и флайвей на спринге вебфлакс.

И мне вообще пофигу на всё. Это дерьмо будет работать лет 5-10 в худшем случае, в лучшем, его перепишут за пару недель максимум.

Только поехавшие ынтерпрайзники считают, что писать нужно так, будто их говнокод будет работать пол века.

А за употребление слова «функционал» и любовь к хранимкам, я бы тебе по жопе надавал.

system-root ★★★★★ ()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от system-root

Старого пердуна чую за версту.

Только поехавшие ынтерпрайзники считают, что писать нужно так, будто их говнокод будет работать пол века

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

А за употребление слова «функционал» и любовь к хранимкам, я бы тебе по жопе надавал

Всё зависит от границ законченных модулей. Если жавакод намертво присобачен к данным и перелопачивает их в почти сыром виде, то хранимки не нужны. Если с базой работает несколько софтин и база представляет собой законченное хранилище, то есть смысл привязывать логику к данным и запаковывать в СУБД без внешних зависимостей. То, что нынче чаще нужно реализовывать первый сценарий, не значит, что не существует второго.

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

byko3y ★★ ()
Последнее исправление: byko3y (всего исправлений: 1)