LINUX.ORG.RU

Напутствие в трудной жизни.

 


9

3

Дисклеймер. Этот пост всесторонне вдохновлен каким-то древним видео в интернете, автора которого я благополучно забыл. Если автор сейчас читает это - респект тебе и увага, бро!

Итак.

Помойму программисты сильно перегибают палку.

Засрали всю джаву мусором.

Хотите вы бин, и что-то в нем хранить тупо, сделайте все поля public! Вместо лесов геттеров-сеттеров.

Боитесь, что такой класс (с пабликами) будет не thread-safe и хомяки не смогут писать с ним хороший многопоточный код? Да побойтесь б-га, хомяки вообще не напишут хорошего многопоточного кода, всё это миф. Дайте среднестатистическому человеку треды и локи, и он напишет код в миллион раз более медленный, чем аналогичный на готовом TransferQueue. Вот и пишите свой продюсер-консумер на TransferQueue, не выпендривайтесь.

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

Но сидят сумрачные гении, и ночами напролет пишут какие-то иерархии классов, чтобы одну строчку копипасты сэкономить. Всё это фигня! В такой надуманной иерархии классов еще сложней разобраться, чем отрефакторить копипасту. И уж точно ее сложнее модифицировать. Мой совет: копипастите смело и открыто! Если коллеги будут придираться, спокойным голосом, глядя на правое ухо поциента, говорите: «вот сам и поправь», 90% что коллега посинеет от страха и сдрыснет в ужасе, в остальные 10% можно утешаться тем, что эту лажу писать пришлось хотя бы не тебе.

Никто не заставляет писать Factory которые производят Factory, которые производят Factory! Хочешь посмотреть, откуда берется объект, а там целый стектрейс на 50 этажей, можно блуждать пока не умрешь от голоду. Хотите сделать объект - ставите new и поехали. Сразу понятно - вот тут делается объект. Фактори нужно изничтожать безбожно (только если это не Spring, Spring надо пожалеть).

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

Никаких фреймворков! Ехал фреймворк через фреймворк, и все - говно. Каждый день кто-то еще производит новый фреймворк. Потом набигают ПМы-хипстеры и такие, а что у нас популярно? Ахххаха, гороскоп показывает, что в эту фазу луны популярен Wicket, давайте нафигачим на нем гуй для Международной Космической Станции. Потом где-то там эта чушка не распарсила XML, свалилась в корку обосравшись стектрейсами, и все космонавты сварились. Отлично! Зато фреймворк!

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

Это всё от другой болезни, называется «Архитектура». Ее нужно долго придумывать, и потом всех насиловать. Можно сказать, архитектура передается половым путем, как сифилис и гангрена. Кто-то из великих говорил, что архитектура - это самая стрёмная, самая зачерствевшая и неизменяемая часть кода, то что фиг изменишь. Нормальный код должен легко меняться. Но во все времена были люди, поклоняющиеся говну. И вот тут, обязательно найдутся поклонники архитектуры. Совет тут такой: шлите архитектуру в зад, пишите гибко изменяемый код, так чтобы (если такая возможность потребуется) двумя легкими движениями рефакторинга текстовый процессор превращался в графический редактор и наоборот. Софт - это не паравоз, нельзя взять три семьнадцать колес, паровой бачок, сложить их по чертежу(архитектуре) и получить паровоз. Софт - это непрерывный процесс рефакторинга.

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

Самая жуть, это всякие ынтерпрайзные сервера, портлеты, фигеты, шушпанчики. Вот притащил ты себе в проект WebLogic или еще какой-нибудь архитектурно-окаменевший кусок, и что изменилось? Кстати, вы видели чтобы на одном реальном хайлоадном сервере запускалось больше одного приложения? Обычно бывает как раз наоборот - на куче серверов запускается ОДНО приложение! А сколько бед от этой псевдофункциональности по огранизации шаред хостинга! Что ынтерпрайзные сервера лучше делают, чем Jetty запущенная прямо из функции main? Собственно в этом и совет, запускайте джетти откуда-нибудь руками, или из мавена, и не парьте мозг.

Надо писать так, чтобы код отражал СУТЬ. Чтобы деплой отражал СМЫСЛ. Посмотрел на код - и сразу понятно, что там написано. Запустил сервер - и сразу понятно, что и как он обслуживает, где скачать его исходники и пофиксить, если чо.

Если вы последовали перечисленным советам, но вас никто не понимает, скажите что stevejobs с лора разрешил.

В общем, идея понятна, теперь можно приступать к критике :)

Привет.

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 2)

ООП в джаве - говно, наследование - говно, паттерны - говно, фабрики - - говно, фреймворки - говно, архитектура (всего ынтерпрайза) - говно, комментарии - и то :-)

Может все-таки, кто-то что-то не осилил?

anonymous
()

А ещё есть аджайлы, скрумы, канбаны и прочее ГТД, вот это зло, а не какие-то паттерны

GblGbl ★★★★★
()

согласен, предлагаю заменить java, javascript'ом или clojure или ruby

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

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

Тут еще такая проблема как договора и прозрачность, тестами не заключишь договор, а для 99.999999% людей они не являются прозрачными, что бы объяснить какой функционал делает их система, такие дела.

поэтому и городят убогие тз и спецификации которые совпадают на 20% с реальностью, подумай как решить эту проблему и станешь миллиардером :)

umren ★★★★★
()

передается половым путем, как сифилис и гангрена
гангрена
половым путем

Даже не хочу знать как ты умудрился.

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

Лучший выход - сказать «Гала, пошла на х*й». Ты программист или эникей?

Solace ★★
()

Совкоэнтерпрайзные ватники должны страдать.

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

А вообще, судя по твоим рассуждениям,похоже, ты созрел отказа от жабы и перехода на что-то вменяемое.

Но переход с говна на дрисню ничего не меняет же.

anonymous
()

«Напутствие в жизни» от хиккующего нищего ничтожества? Смешно.

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

на форме «поиск клиента» нету возможности искать по телефону клиента

То есть, лошара наш клепает самый позорный и убогий во всех отношениях CRUD. Находится вообще на самой низшей ступени иерархии кодеришек. И при этом смеет рассуждать за архитектуру и паттерны?!?

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

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

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

Да ты никак цену себе набиваешь? 😊 Мол, стивджобс клепает фигню значит стоит гроши, а я весь такой клепаю (выбрать из списка) и стою дофига и больше? Маркетологам, рекламщикам, хорошим продавцам и грамотному CEO не забудь отстегнуть - на 90% твой говнокод в деньги именно они превращают. Ты без бизнеса не стоишь и гроша😊

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

А торговцы веществами еще больше зашибают. Какое мне до этого дело? Речь про иерархию внутри узкого мирка кодеришек, и в этом узком мирке стивджобс сидит на самом дне, занимает самую презираемую нишу.

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

иерархией озабочены разве что недоразвитые приматы вроде гопоты, остальные занимаются тем, что им нравится

Alyssa
()

Хотел вот Java'у немного подучить, теперь точно не буду. Вдруг такие же пасты извергать начну? Ну нафиг, лучше за C# возьмусь.

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

твой модуль телепатии поломался, начнем с того что я сейчас вообще не кодер

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

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

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

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

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

Ололошечки, хиккующее некомпетентное ничтожество ещё и рассуждать о микрософтовском мире осмелилось.

anonymous
()

что толку советовать, если слабовато или неадекватно на них реагируешь?

ДП это только design - нужно уметь извлекать пользу из всего. Без паттерна посетитель сложновато бороться с рекурсией

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

Типичные рассуждения для омежки, сидящего на самой нижней ступеньке социальной лестницы.

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

кстати, вот вопрос на засыпку, кодеришкам из топового класса: как именно надо писать код, чтобы JIT из HotSpot всё-таки смог динамически применить TCO?

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

Нет. Те, кто не может себе позволить покупать недвижимость там, где жить приятно и полезно для здоровья - нищеброды. Те, кто не может себе позволить оплатить обучение детей в приличных ВУЗах Ivy League - нищеброды. Те, кто не может себе позволить работать столько часов, сколько хочется для души, или не работать вовсе - нищеброды.

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

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

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

те, кто не может позволить себе слетать в космос - нищеброды

те, кто не имеет миллиарда - вообще могу идти в жопу

-))

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

а те, кто имеет шанс принудительно слетать в космос?

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

говорят, J9/Harmony могло джитом делать TCO в отдельных случаях. Интересно, портировали ли эту фичу в HotSpot после смерти harmony, и если да - на чем это можно посмотреть. Читать исходник хотспота, наверное, не вариант.

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

Если это и в правду интересует, то дело не в коде, а в хаке байткода.

Вот эти ребята http://docs.paralleluniverse.co/quasar/ шуруют а-ля go/erlang. Добавляют легковестные треды, что без шаманства со стэком невозможно. Уж не знаю, держат ли они хвосты, но вещи очень похожие.

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

и тут залетает Галочка из бухгалтерии

«Заводите тикет, будет обрабатываться в режиме очереди в зависимости от приоритета» и да, наймите уже QA.

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

Не знаю, но смотри проекты в связке erlang + JAVA да и первый побольше.

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

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

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

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

в джаве у тебя хотя бы есть выбор, хочешь ты писать говно или нет

Эквивалентно выбору «хочу или не хочу срать».

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

Рассуждения обиженного жизнью омежки. Без здоровья и образования ты не проживешь, а космос - игрушки (и вред для здоровья).

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

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

что это за жизнь без космоса? так, чмошное существование одноклеточного анонимуса -))

Alyssa
()
Ответ на: комментарий от gh0stwizard

потому что увидел проект, который делало 1.5 человека?

пришел к выводу, что 1.5 человека (а лучше 5, максимум 10) и есть самая лучшая организация. Это как раз то, про что рассказывают в «мифическом человеко-месяце». Пять кодеров, которые общаются только вот в этом тесном кругу, обладающие неограниченными запасами ядреного кофеинума, могут сдвинуть горы. В отличие от. Самый большой мой проект был Госуслуги, и имхо вот все эти сотни людей без мозгов вполне можно было заменить десятью людьми с мозгом.

месяц писать хорошо, честно, усидчево спеку, потом три месяца писать код.

если столько дофига времени, может сразу писать тесты? В смысле, можно писать даже BDD тесты, например для джавы http://concordion.org/

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

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

Памяти жрет дотнет меньше (даже студия!), а работает быстрее. Скоро асп.нет придет на линукс/мак и все, похороним мы джавку. Останутся только копрофилы на поддержке.

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

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

Обломись, бабка, 10 человек с мозгом на улице не вялается. В отличие от 100 без мозга.

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

весело, но без мата было бы как-то острее, выразительней что-ле

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

Лига плюща😊 Элитарность, тебе ведь её не хватает, правда? Деньги ни при чем, возможно даже у тебя их достаточно, но за илитку тебя до сих пор не признают. Никогда не признавали, ведь верно? Родители говорили тебе, что ты выше их всех, что ты элита, но окружающие тебя дети нищебродов так не думали. Эти нищеброды до сих пор так не думают. Забей. Они нищеброды, они ничего непонимают. Ты не останешься нищебродом на всю жизнь.

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

Элитарность, тебе ведь её не хватает, правда?

Причем тут илитарность? Инженеришки и яйцеголовые никем и нигде за илитку не считаются, а учиться на всякую шваль типа юристов - западло. Ценность ivy league не в какой-то там якобы илитарности, а только в том, что только там реально учат, в отличии от всяких заборопокрасочных гадюшников.

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

В отличие от

Да-да. То, что у нас нет своего IBM не значит, что лучшее сейчас это лучшее всегда. Собери сам команду из 100 толковых людей. В чем проблема? Это риторический вопрос :-)

если столько дофига времени, может сразу писать тесты?

Еще раз, спецификация это один из способов выражения мыслей. Твои тесты это другой способ. Один другому не мешает. Если ты на основе только тестов можешь координировать работу всей команды — пожалуйста. Только не надо говорить, что раз ты не умеешь писать спеки, то никто не может, а значит спеки не нужны.

И вот смотри, опять ты пытаешься убежать от написания спек, потому что это времязатратно. А тесты писать ты пробовал? А разрабатывать приложение по TDD? Лично я знаю, что этот путь не менее затратен по времени, чем спецификации: тесты также надо править, менять. Нет серебрянной пули. Уверен, что если с тестами не заладится, то нафиг и тесты.

Можно вообще не писать тестов, спецификаций, вообще писать только код. И если кто спросит объяснить на пальцах ты ответишь, но увы, кроме тебя никто не сможет объяснить также ясно как ты сам.

И тут можно перейти еще к вопросу к документации. Ее тоже долго писать, сам знаешь. Нафиг документацию! Читайте код: он ясен и лаконичен.

TL;DR

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

В МС мире нет такой кучи говна, как в джаве. Вот и весь секрет.

в МС мире вообще ничего нет. Но это не секрет :-)

Стандартные инструменты просто хорошо работают

Джависты обычно специализируются на нестандартных решениях. В частности написании сложного конкурентного-параллельного кода, кластерах, базах данных, итп. Имхо, появление asp.net на линуксе не изменит ничего, как конкурировали вы с похапэ и раби, так и будете продолжать. Scala, Clojure, либы типа Akka - всё это на JVM. Вот есть у нас конкурент - эрланг, но это на самом деле никакой не конкурент, никто не запрещает на джаве с эрлангом одновременно писать.

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

в МС мире вообще ничего нет. Но это не секрет :-)

Так, чего нет в МС мире? Ты искал и чего-то не нашел? Или так, лишь бы сказать?

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

Это тырпрайз теперь так называется?

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

lazy_aleks
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.