почему программисты не любят чужой код прикол
Почему программисты не любят чужой код
Дубликаты не найдены
Баяны
178K поста 12K подписчиков
Правила сообщества
Сообщество для постов, которые ранее были на Пикабу.
Хоть бы для приличия этот боян проверили, что ли. Тексты они тут как картинку размещать будут.
@moderator, я стареть начинаю от такого древнего баяна, помогите!
Заскриншотил баян, чтобы баян не посчитали баяном
а потом васю поменять на гришу
Кажется, мне немножко страшно
Вот и в моей жизни произошло событие, которое потрясло меня настолько, что я зарегистрировался Пикабу!
Я рано женился и очень быстро остался один. Это отдельная грустная история… Попереживав немножко, всего года три, взялся я как-то устраивать свою личную жизнь. На этом пути меня ждало много всякой дичи, к которой я старался относиться с юмором 🙂
Однажды, мой хороший друг внезапно пригласил меня в гости без объяснения причин. «Будут знакомить» подумал я. Угадал. В гостях обнаружилась «хорошая подруга жены друга».
Единственным странным моментом в ее поведении была реакция на шутки – смеяться она начинала резко и громко, я даже в первый раз испугался. Жена друга периодически бросала на нее какие-то тревожные взгляды, но я списал это на то, что ей интересна реакция Лены на меня.
Из разговоров за столом о новой знакомой я узнал лишь одну значимую деталь – работала она поваром в столовой какого-то крупного предприятия. По итогу приятных посиделок мы получили напутствие: «че вы как два бобыля, сходили бы на свидание». И я решил – почему нет?
По прошествии нескольких дней, таким же как сейчас осенним утром, в субботу, я стою в условленном месте и жду Лену. Спустя полчаса после условленного времени она появилась. В мужской куртке не по размеру (от мужа бывшего, козла, осталась – было уточнено потом) и резиновых сапогах (мокро же, кто его знает где мы будем гулять). Меня это немного смутило, но Лена лучезарно улыбалась, и даже в этом странном наряде все равно выглядела достаточно интересно 🙂
Поглядев на это чудо, и прикинув, куда можно с ней пойти, я повел Лену гулять по ВДНХ – по случаю, мы как раз оказались рядом.
По ходу дела быстро выяснилось, что те самые тревожные взгляды на Лену видимо значили «Лена, молчи!». В следующие несколько часов я собрал такие факты:
— Лена очень много говорит;
— Лена очень много курит;
Мы с Леной ходили по красивым осенним дорожкам среди советской архитектуры… Она своим необычным, с хрипотцой голосом, рассказывала мне о совей нелегкой жизни, про работу, про бывшего мужа, который гад такой – сбежал к другой и вообще про всё-всё.
Я накормил ее шашлыком, которого она съела раза в три больше, чем я, и узнал, что Лена очень любит пиво, которого она так же выпила раза в три больше, чем я. Глядя как она все это уплетает, я сидел и думал, хочу ли я продолжить это знакомство?
Ничего не имею против курильщиков, ну вот чисто субъективно – не выношу запаха табачного дыма, которым от Лены разило даже в тем моменты, когда она была без сигареты…
Закончилось все тем, что я отвез ее домой на такси, и виртуозно уклонился от предложения зайти на «чашечку чая». Лена была по-своему классной, но скажу честно – когда за ней закрылась дверь подъезда, я вздохнул с облегчением.
Я боялся, что она будет звонить, но нет, обошлось. А где-то через неделю мне позвонил тот самый друг, и сказал, что его жене уж очень интересно, чего же это у нас как-то не сложилось? Я долго отбивался фразами типа «ну вот как-то так, не получилось», но он не отступал, и я решил отболтаться, как мне показалось тогда, самой безобидной причиной – сказал, что мне не понравилось, что Лена курит.
С тех пор прошло 13 лет. Сегодня в 4:35 мне в ВК пришло сообщение от Лены: «я бросила курить». Кажется, мне немножко страшно…
Про избиение в метро или «почему на Руси перевелись мужики»
Думаю, все в курсе недавнего случая в московском метро, где граждане без национальности себя шумно вели, тетенька сделала им замечание, они ее послали, за нее заступился парень и ему толпой в три носа сломали лицо. Сразу после этой истории в интернетах поднялся вой с диванов о том, что мужики на Руси перевелись, что только один заступился и вот это вот все.
Давай, дорогой читатель, подробно разберем данную ситуацию.
И вот ты хочешь прервать их хамское поведение. Тут на 100% ясно, что будет драка и словами все не ограничится. Куражащимся гражданам без национальности просто западло прогибаться. Особенно, пьяным. И, особенно, на виду у корешей. И драка будет один против трех. Потому что ты придешь один и они придут одни.
А дальше у нас два варианта:
1. Если у тебя зашкаливающий личный уровень, ты занимаешься рукопашкой со стадии сперматозоида и следуешь совету нашего президента «если драка неизбежна — надо бить первым», то ты укладываешь всех троих. Естественно, если дегенераты не успели достать ножи и тебе дико везет. А через мгновение ты слышишь, как самая активная пассажирка, 10 секунд назад взывавшая к мужикам, уже звонит машинисту и требует наряд. И не на шумевших, а на тебя.
Я много лет ездил в метро по ночам, насмотрелся на всякое. И в 95% случаев те, кто требовали от дяденьки защиты, через мгновение дружно требуют его посадить. Потому что они думали, что он все решит как–то мирно, спокойно и доброй беседой. А он, маньяк и садист, совсем нетолерантно кулаками в живых людей тычет.
А те выть, как сирена, начинают и кровоточат по всем углам! Чем полностью портят настроение активных граждан.
После этого тебя задерживают, смотрят запись с камер и оказывается, что тебя никто пальцем не трогал, а ты, на ровном месте положил трех ребят, которые мирно приехали учиться и ехали с института домой. А около ОВД тебя будет ждать 50 тонированных Приор.
Как недавно было под Новосибирском, где граждане без национальности лихо требовали выдать им для расправы аж целого сотрудника полиции, застрелившего их соплеменника–дегенерата.
А дальше родственники избитых пойдут выть по всем каналам, как злой скинхед их кровиночек избил. Они, сюрприз, даже сейчас рассказывают, какие их сыночки–корзиночки были хорошие, всем помогали, за всю жизнь ни капли в рот, ни сантиметра в жoпу и как они удивлены, что такое произошло и наверное Москва их испортила. А во всех соц.сетях будут валиться сотни угроз тебе и твоим родным. Граждане без национальности всегда ведут себя по одному сценарию.
И тебе просто дико повезет, если спустя год жутких проблем ты отделаешься условным. А скорее, как в известном случае с бурятом Чимитом Тармаевым, сядешь на много лет.
На него, напомню, в том же самом метро 10 лет назад напала толпа из 6 граждан без той же самой национальности. Он сперва убежал от них в соседний вагон, а когда они догнали то, отбиваясь ножом, завалил одного. В итоге — 8 лет, от звонка до звонка. В том году вышел. И это он еще самооборонялся!
А в описанном варианте никакой самообороны не было бы.
2. Если ты не захочешь бить первым и пойдешь просто поговорить, то тебя самого завалят с вероятностью в те же 100%. Причем, традиционным для граждан без национальности способом — сзади, как этого парня. И хорошо, если не убьют или не превратят в растение.
Ну а дальше выяснится, что граждан, избивших тебя, просто не найдут. А если найдут, то, внезапно, отпустят. У нас, знаете ли, даже после убийств, представителей некоторых национальностей любят отпускать. Широта русской души! Можно вспомнить Манежку и 2010 год. И только мощнейший резонанс заставляет представителей закона работать. Так было и в 2010, и сейчас.
Как мы видим, есть всего два варианта: либо, с огромной долей вероятности, сесть. Либо, с той же самой вероятностью, лечь или остаться инвалидом. Парень, влезший в конфликт, поступил смело и достойно, но, фактически, никому не помог и ничего не решил. По итогам, он разменял свое здоровье на свободу этих дегенератов.
Именно благодаря его травмам их теперь и посадят. Но в его случае удачно сошлось множество факторов: его просто чудом не убили, дегенератов по горячим следам поймали, пошла дикая волна в интернете и правоохранительные органы сразу же принялись активно работать. А могло быть иначе и он потерял бы здоровье просто так: никого не спас, никого не наказали. Такое, увы, бывает очень часто.
И когда кто–то в вагоне шумит, а активная тетенька призывает тех самых мужчин что–то сделать, то стоит такой мужчина, прокручивает все это у себя в голове и понимает, что сейчас, на ровном месте, может сломать себе всю дальнейшую жизнь. А, бонусом, и жизнь своих тетенек. Например, мамы, жены, дочки.
Они ни разу не одобрят, когда узнают, что их сын/муж/отец из–за ругани в метро до конца жизни будет прикован к постели. Или уедет на годы пылесосить Сибирь.
И что мужчине выбрать? Как расставить приоритеты? Кто для него важнее? Очень легко говорить про каких–то абстрактных мужчин, которые перевелись.
Потому что на судьбу абстрактного мужчины всем насрать. Он просто должен решить проблему, а что с ним будет дальше — похер. Поэтому всем страдальцам по настоящим мужчинам всегда надо иметь ввиду под ним своего сына/мужа/брата/отца/друга. Они готовы, чтобы конкретно он погиб в драке из–за ругани в метро или сел?
Но граждане, воющие про отсутствующих мужчин, живут в своем розовом мире. Там можно трех пьяных куражащихся дегенератов с ножами как–то так угомонить, что никто даже не пострадает и все закончится тихо и мирно, а все останутся друзьями.
Видимо, добрым словом и отеческим советом. Но так бывает только в диванных фантазиях. В жизни агрессия подавляется только еще большей агрессией. А это, в свою очередь, ведет к проблемам со здоровьем у одних и с законом — у других.
К сожалению, так устроена реальная жизнь. Она, сюрприз, цинична и жестока. И это не вопросы мужественности и смелости. Это обычный здравый расчет, без которого нельзя. Очень уж ставки высоки. Сесть или лечь, защищая себя и близких — одно. Защищая жизнь незнакомого человека — другое. А вот получить все то же самое просто из–за чьей–то ругани в метро — вообще третье.
А как же надо было поступить в данной ситуации?
Да точно так же, как, в итоге, и поступили — нажать кнопку связи с машинистом и вызвать к вагону полицию. Именно это и решило проблему. Не заступничество парня, который героически пал в неравной битве, а вызванная по кнопке полиция, которая и задержала дегенератов. Только вот вызвали ее, почему–то, после избиения.
Не с бесполезными замечаниями к дегенератам лезть, а звать специалистов по общению с ними. Пусть они и разбираются, это их работа, им за нее платят из наших налогов. Тогда произошло бы все ровно то же, но парень бы не пострадал.
И вопрос возмущенным гражданам с диванов надо ставить иначе: не «почему мужики перевелись», а «почему умные перевелись», независимо от пола? Почему они готовы лезть в конфликт с тремя дегенератами, но не готовы нажать на кнопку связи с машинистом? Кнопок в вагоне куча, жми любую. Почему никто этого не сделал?
Почему для того, чтобы нажать на нее, они сперва ждут, пока человека забьют ногами? Раньше нажать религия не позволяет? Почему они воют и требуют решить проблему от одних мужиков, но упорно не хотят вызывать других мужиков, которым за эти вызовы как раз и платят?
Я в метро через машиниста вызывал полицию много раз. Они всегда входили на станции и уводили буйных персонажей. И всегда самые активные требователи угомонить шумящих, смотрели на меня после этого, как на предателя.
А однажды тетенька, минуту назад орущая «мужчины, есть здесь мужчины?!» мне даже высказала:
«А сам–то разобраться не мог? Теперь паренька из–за тебя посадят! Тьфу, позорище, а не мужик!»
Мы развлекались как могли
Вчера забавный диалог с дочкой(17 лет) получился:
— Пап а что вы делали вечерами в моём возрасте?
— Пили самогон, слушали сектор газа и стреляли из воздушки друг в друга.
— Афигеть. А зачем?
— Нуу, у нас не было интернета, мы развлекались как могли.
— Даа, жаль что у нас есть интернет.
Запойная сила
Многие спрашивают: зачем ты тягаешь такие веса? Вот вам ответ©
Г-о-о-о-л.
Норма жизни
Проходил медосмотр. Психиатр спрашивает:
-есть жалобы?
-нет вроде.
-сонливость, усталость, апатия, отсутствие мотивации к работе?
-да, есть такое.
-это нормально, это у всех. Ну все, иди, не задерживай очередь.
[Пост удалён]
[Содержание поста было удалено]
Комментарий администрации Пикабу.
Здравствуйте. Здесь находился пост, автор которого утверждал, что интернет-магазин Озон списал у него полмиллиона рублей без ведома владельца карт. Несмотря на то, что пост содержал весьма сомнительные пруфы (фактически их не было, кроме факта списания денежных средств), он был составлен очень грамотно, включал в себя множество упоминаний площадки для лучшей индексации в поисковиках и хорошо давил на эмоции.
Поэтому мы просим пользователей более критично относиться к тому, что пишут авторы постов. Ведь во многом из-за недобросовестных пользователей мы с вами оказываемся в ситуациях, где мы для отмены услуги или возврата денег вынуждены доказывать, что обычные пользователи не пытаются обмануть систему, а действительно потеряли деньги.
Ну и это, берегите себя и своих близких. И да, старый аккаунт блокирован за мультиакк, автора текущего поста мы ждём в комментариях, если ему есть что добавить.
Чужой код — горе программиста
Программистам часто задают вопрос, почему они категорически отказываются дописывать друг за другом код. На профессиональном языке объяснять долго, поэтому мы с товарищем придумали яркую аналогию. Когда в очередной раз к нам с вопросом пристала коллега, мы ей объяснили наглядным диалогом.
Сначала мы дали вводную. Представь, сказали, что дело происходит на острове, на который послали прораба закончить химическую лабораторию. Он приехал и увидел следующее: комнату, наполненную швабрами, здоровый вентилятор и дирижабль. Для чего весь этот хлам — непонятно. Само собой, прораб швабры, вентилятор и шар выбросил. И достроил проект как надо. По идее, как надо. Однако через десять минут после эксплуатации начинается ахтунг.
— У нас утечка газа! Мы все умрём!
— Да вроде не должно так быть!
— Ты проект менял?
— Да, швабры выкинул.
— Идиот! Они же подпирали потолок! Баки с веществом в комнате сверху слишком тяжёлые, мы поставили швабры, чтобы они подпирали потолок!
— Ну а я откуда знал? Табличку бы повесили!
— Ладно, врубай вентилятор, сейчас сдует всё.
— Так нет его, я выкинул. На кой чёрт тебе вентилятор? Положил бы противогазы!
— Этот вентилятор с прошлого раза остался, вот я его и пристроил!
— Нет вентилятора, забудь! Что делать?
— Ладно, остался последний шанс. Залезай в дирижабль — и полетели!
Не судите чужой код строго
Так сложилось что большую часть своей сознательной жизни я программирую на PHP. Наш мозг, воспринимая информацию из любого источника, делает это без отрыва от авторитетности этого источника. Грубо говоря, если вы любите PHP — вы автоматически добавили очков авторитетности автору этой статьи, а если не любите — автоматически отняли. Этот процесс происходит на бессознательном уровне и является по сути призмой восприятия, которая с одной стороны защищает нас от падения в бесконечный анализ информации любой степени авторитетности, но с другой стороны ограничивает нас в поиске новой более актуальной информации. Самое поганое здесь то, что авторитетность источника редко когда проверяется на сознательном уровне (потому что на это нужны время и ресурсы в виде драгоценных калорий), я могу быть с той же долей вероятности разработчиком плюсов, домохозяйкой-кухаркой, водопроводчиком без принцессы или генетически модифицированным котом. Не судите мою статью строго, у меня лапки.
То же самое относится к чтению чужого кода: если его автор сидит по левую руку от вашего трона, работает в вашей фирме 10+ лет и зарабатывает на один ноль больше вас, это совершенно не то же самое, что автор, которого уволили за что-то плохое, а вас наняли на его место. Но по сути то и там и там код — это всего лишь набор байтов, которые было бы полезно оценивать без привязки к авторитетности источника.
Когда мы читаем чужой код, нас могут посещать самые разнообразные эмоции: восхищение, смех, раздражение, разочарование, полное неприятие. Полезно знать о том что проявление любых эмоций в любом контексте — это автоматический ответ низшего (первого) уровня нервной системы, сформированный эволюционным путем, необходимый в первобытной среде. Основная задача такого ответа, в случае «негативной» эмоции — запустить механизм действий «бей или беги» с одной единственной целью — выжить. В нашей текущей офисной среде при анализе чужого кода подобный ответ становится скорее бесполезным и даже вредным, поскольку вы тратите на него драгоценное время и ресурсы, плюс загрязняете свой мозг нейромедиаторами, понижающими вашу сообразительность в угоду скорости реакции. Хорошая новость в том что этот ответ можно перепрограммировать. Можно подавлять негативные эмоциональные реакции, а можно их инвентировать, например, смеяться там где вы раньше злились. Смех, в отличие от злости, выбрасывает в мозг хорошие вкусные полезные нейромедиаторы, доставляющие удовольствие, закрепляющие опыт и мотивирующие на дальнейшую работу.
Для того чтобы перепрограммировать эмоцию, нужно мысленно выйти в мета-позицию, чтобы вместо осуждения чужого кода оценить собственную обстановку, оценить себя. Почему этот кусок чужого кода вызывает во мне отвращение? Действительно ли дело в том что его писал дилетант, а мне такому хорошему и опытному теперь приходится страдать? Если я такой хороший и опытный, то почему у меня возникают проблемы с тем чтобы понять чужой код и переписать его так как я считаю нужным? Возможно мне просто не хватает оперативной памяти для того чтобы осознать эту лапшу? Возможно автор этого куска знает что-то чего не знаю я?
Современные средства разработки позволяют практически на лету преобразовывать чужой код в более понятные и приятные структуры. Функция или переменная плохо названа — ctrl+shift+R и в пару секунд она называется по хорошему. Табуляции вместо пробелов, неудобно, непривычно раскиданы отступы и открывающиеся бракеты в египетском стиле — ctrl+shift+F и форматирование восстановлено! Комментарий избыточен или устарел — ctrl+D и его нет. Если изменить призму восприятия, чтение чужого кода может превратиться в увлекательную интерактивную детективную игру.
Код это всего лишь инструмент. Как бы плохо и ужасно он не был написан, в конкретное время и в конкретном месте он успешно решал конкретную проблему, а значит он уже «оправдан». Что-то изменилось в бизнес-требованиях, что то было не учтено — код поломался или стал не актуален, и это нормально. Код имеет свойство эволюционировать самыми разными путями: и постепенно, обрастая пластами и революционно, переписываясь с нуля. Конечно хорошо, когда программист предвидит будущее и на начальных этапах закладывает в код возможности для дальнейшего его развития. Но эта секира остра с двух сторон, вы можете ошибиться с предсказыванием будущего, будущее может не наступить вовсе, а время и ресурсы будут безвозвратно утеряны. Тут важно понимать код какой степени качества от вас требуется. Если это огромная распределенная система, модули к которой программируют ваши коллеги из самых разных точек земного шара в фирмах слабо связанных с вашей, тогда да, имеет смысл использовать модные паттерны, оборачивать модули в сервис-контейнеры даже там где вы не можете себе представить зачем это нужно. Но если это маленькая локальная CRM для одной фирмы, модули которой зависят друг от друга настолько жестко, что отключение любого модуля по сути ведет к остановке работы всей системы… в этом случае вполне оправданно вызывать чужие методы напрямую, это уменьшит количество классов, облегчит вашу оперативную память и сократит время на отладку проблем. Но вот возникает ситуация когда маленькая локальная CRM превращается в нечто расширяемое, что ваша фирма хочет выложить в открытый доступ и продавать. Бизнес-требования изменились. Стоит ли винить программиста в том что он не предвидел этого?
Стандартизация
Код это всего лишь инструмент, но его создание — это чистое творчество. Любую задачу можно решить бесконечным числом самых разнообразных способов. Некоторые из них более производительны, чем другие — пример объективной оценки. Некоторые из них более читабельны, чем другие — пример субъективной оценки. Даже если вы убедите весь офис в том что какой-то кусок кода не читабелен, все еще останется как минимум один автор, который с вами не согласится. Стандартизация кода направлена на то чтобы преобразовать чистое творчество в как можно более рутинный набор действий для того чтобы другим программистам было проще разбираться в вашем коде. То есть, по сути, чтобы вас можно было заменить другим специалистом, более покладистым и дешевым. А через пару десятков лет так и вовсе искусственным интеллектом. Стоит помнить, что если какой-то стандарт противоречит здравому смыслу, возможно его имеет смысл нарушать в некоторых местах, а то и вовсе отказаться от него или заменить на другой, более подходящий.
Матёрые стандарты продают себя с позиции «при выборе стандарта обратите внимание на популярность сообщества». Интересно как они продавали себя когда только-только вышли в свет. Основная мысль в том, что популярность того или иного стандарта это не тот фактор, который вы бы хотели учитывать в первую очередь при выборе. Популярность и сообщества очень инертны и могут на протяжении многих десятилетий отвергать новые более хорошие стандарты. Особенно если они революционны.
Аналогичные примеры встречаются сплошь и рядом и в культуре программирования. Стандарт PSR ратует за 4 пробела вместо табуляции, игнорируя очевидный факт: среда разработки большинства PHP-программистов изменилась с консольных редакторов на полноценные IDE, в которых оперировать табуляциями удобнее во многих смыслах: и удалять проще, нажимая Backspace один раз, и настроить можно индивидуальную длину табуляции по вкусу.
Применяя тот или иной стандарт задавайтесь вопросом: кому вы делаете удобнее? Кому неудобнее? Кому станет лучше от правила «именуем имена методов лоуерКамелКейсом»? Очевидно лишь тем, кто привык их так именовать. Всем остальным станет неудобно, им придется адаптироваться, а это потери времени и ресурсов абсолютно на пустом месте, учитывая то что
а) теперь у нас есть волшебные IDE, подсвечивающие разными цветами разные элементы кода,
б) программисты имеют свойство перескакивать с проекта на проект, стандарты кодирования в которых могут различаться.
Лично я при разработке своих проектов использую:
Умение разбираться в чужом коде
Триггер, вызывающий рвотные порывы у подавляющего большинства программистов (пример субъективной оценки). Вам никогда не казалось странным, что зачастую нам проще переписать весь код с нуля, чем разбираться в чужом? В любой другой отрасли мы действуем иначе: сперва учимся читать, потом — писать; сперва пользоваться (электроприборами, зданиями), затем — их проектировать. Мне кажется все дело в нашем образовании (конкретно в области программирования). Нас учат достигать цели самым прямым и быстрым способом, используя некоторые свеже-приобретенные знания. В результате мы комбинируем их (знания) ровно до тех пор пока «оно» не заработает, немного тестируем и отправляем учителю на модерацию. На мой взгляд было бы неплохо добавить в этот процесс дополнительную ступень, на которой мы сравниваем наш код с мастер-кодом, который хоть и не является идеальным и единственно правильным, но дает альтернативный путь решения, зачастую более оптимальный и читабельный.
Что касается триггера, чтобы его отключить, достаточно просто мысленно поставить себя на место заказчика, который всю свою жизнь наблюдает за уходящими-приходящими программистами, утверждающими что работа их предшественников это фекалии и нужно все переписать чтобы стало хорошо. Заказчик не обладает компетенцией чтобы выяснить говорите ли вы правду или просто ленитесь разбираться в чужом коде. Чтобы завоевать его доверие в подобном вопросе, следует покопаться в чужом коде и найти парочку гигантских дыр в безопасности и продемонстрировать их заказчику. Но даже в этой ситуации с точки зрения бизнеса, возможно, будет выгоднее «закостылить». Особенно если это аутсорс с конкретными сроками и деньгами. Нужно ли винить программиста в этом?