>>205454730 (OP) Это оператор goto Это спагетти код Это использовать один и тот же участок кода каждый раз вместо функции Это индуский код Это код без комментариев Это код где не используется библеотеки
>>205455031 блять ... > Это код без комментариев Хороший код в комментариях не нуждается.
> Это код где не используется библеотеки Библиотеки менее эффективны, чем код, написанный под конкретные нужды. Т.е. код без библиотек обходится дороже, но это в некотором роде ручная работа. А это не является признаком говнокода.
>>205455119 >Библиотеки менее эффективны, чем код, написанный под конкретные нужды. Т.е. код без библиотек обходится дороже, но это в некотором роде ручная работа. А это не является признаком говнокода.
Блядь, можно просто жизненными ситуациями описать? Просто пиздец какой-то. Спросил про одно, а отвечают хуй знает что. Может это и есть быдлокод? Просят одно, захуяривают другое и нихуя нечитаемое.
>>205455119 >Хороший код в комментариях не нуждается Ну да, ты щас такой возьмёшь, посмотришь какие-нибудь радиометрические расчёты и поймёшь, что там делается.
>>205455182 Называй функции так, чтобы было понятно что они делают и комментарии не понадобятся. Ну и лаконичность приветствуется - хуйня типа kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange не нужна. Если же функцию не получается назвать коротко и ясно, значит проблема в том, что функция слишком много всего делает, что является признаком плохого дизайна и требует рефакторинга. Так что я бы даже сказал, что наличие комментов в коде свидетельствует о не самом его высоком уровне качества.
>>205455242 Бывают конкретные случаи, где это оправдано. Не нужно полностью избавляться от либ и тратить годы на hello world. Но в некоторых случаях можно добиться большей производительности, избавившись от библиотеки и переписать код руками под конкретную задачу. Библиотеки всегда обобщены и у их авторов нет максимума свободы.
>>205455571 Да блядь. А просил описать жизненную ситуацию. Допустим - Принудительно заставить ОПа показать хуй. (пишешь программу). - ОП хуй решительно не показывает - Проверяешь молнию, выясняешь цвет трусов. - После года тестов, выясняется, что ОП тян.
>>205455312 >значит я быдлокодер? Если ты конкретно про эти сравнения, то нет - каждый дрочит как он хочет. А вот неиспользование библиотек и прочее велосипедостроение, как и игнорирование прогресса в сфере, где ты пишешь, обычно ведёт к хуёвому качеству кода. Вполне можно и быдлокодом назвать такое.
>>205455119 >Хороший код в комментариях не нуждается. Манямирок/10, я конечно сам предпочитаю писать очевидный код, зачастую для этого делая его избыточным по объему, но далеко не всегда это получается рациональным решением по вопросу производительности. В таких случаях без нормальных комментариев ты сам потом будешь сосать дальше чем видеть, когда вернешься в свой же код хотя бы через месяц.
>>205455913 >свой велосипед поволяет разобраться как работает чужой Так это нормально если надо разобраться. Я иногда сам осознанно хуиту всякую пишу ради эксперимента.
>>205454730 (OP) Раз уж такой тред, спрошу. Хочу перекатиться из кодинга в системное администрирование. Заебали постоянные дедлайны, + я одиночка, а мне, как кодеру, приходится работать в команде, что я не люблю. А так, устроился в небольшую ламповую фирму, и сычуешь себе перед пекой. Если спросят, говоришь, что конфигурируешь что-нибудь. И всё. Правда, у меня знаний маловато из этой области. Ну, т.е. поднять на линупсе нджинкс с пхп и оракловской базой могу, но чему-то больше уже придётся учиться. Какие подводные? 22 лвл
>>205455975 > не всегда это получается рациональным решением по вопросу производительности Производительность имеет мало общего с читаемостью кода. Можешь привести конкретный пример?
Сторонники комментариев часто забывают о том, что языки программирования являются таки языками и являются средством выражения мысли. Согласись, лучше знать английский, чем смотреть фильм с субтитрами? Соответственно, уметь внятно облекать мысль в код и уметь читать его - лучше, чем писать комменты, нет?
>>205456047 пилю щас игрушку на юнити да, геймдевогосподин 400к/сек и после лютейшего говнокода по перемещению персонажа понял, что существует охуенно плавное физическое движение, создаваемое библиотекой юнити, и мое говно, которое лагает пердит и свистит при беге. Но зато САМ СДЕЛОЛ
>>205454730 (OP) Ну ок, представь себе бытовую ситуацию, проблему, которую ты можешь решить быстро и как попало, но зато прилагая минимум усилий, а можешь все-таки потратить сколько-то времени/нервов/денег, но сделать хорошо. В первом случае тебе, скорее всего, позже придется повторно решать эту проблему, т.к. она снова всплывет. Это и есть быдлокод/говнокод. Т.е. весь вопрос в том, когда ты получишь профит - немедленно и мало или позже, но много.
>>205456322 У меня примерно то же самое было когда я первые парсеры писал - пердолил их на регулярках. Потом нормальные библиотеки стал использовать и охуел как это просто делать через селекторы, а позже уже разобрался нормально с DOM и стал выдёргивать нужные вещи тупо копипастой xPath из браузера и стало ясно что это мартыханское занятие.
>>205456188 как минимум "Компьютерные сети" за авторством Олифера. Потом советую скачать Cisco Packet Tracer и курить по нему курсы. Как только освоишь Switching and Routing копишь ~20к и пиздуешь сдавать на сертификат Cisco CCNA (смотря где живешь, но в ДСах сто проц есть центры) Это как минимум, а дальше уже сам разберешься
>>205456556 Дружок, я писал код еще под 8-битные процы, я далеко не теоретик, поверь. И я проходил через много стадий "нужна/ненужна/гавно/нигавно". В какой-то момент ты понимаешь, что можешь выражать свои мысли не только по-русски или по-английски, но и, например, на С++. В этот момент, бессмысленные комментарии в коде не только не помогают, а начинают мешать.
Особенно бесит хуита для доксигена и прочей шняги. Код получается просто нафарширован говном, хтмлем, слэшами и снова говном. Сука, когда такое вижу, мне хочется убивать людей.
>>205456188 мимо джун админ переходишь в воркач. /wrk качаешь там CCNA курс, далее если админишь винду то по винде курс если линукс то там по редхату есть.
что надо знать? поднять телефонию на астере, shell, Tcpdump, iptables,nginx,zfs. Литература? Танненбаум, Олифер, Мендель Купер.
> но и, например, на С++ Охуеть. Как это. Можно как-то раскрыть. Ну я понимаю художник выражает свое видение мира на холсте. Кал верблюда разбросал и так он видит пустыню. Но как это с кодом?
>>205455517 Ну это, конечно, из пальца высосанное утверждение. >>205456872 >Дружок, я писал код еще под 8-битные процы Это тебе сколько, 60 лет? И общаешься ты при этом почему-то как подросток с двачей. Хм....
>>205456872 >Особенно бесит хуита для доксигена и прочей шняги. А мне наоборот нравится когда комментариев по 10 строк на метод, а сам метод в 1-2 строки. Прямо видишь как мастер одной строкой кода большое дело делает.
>>205457007 Сложно объяснить. Другая грамматика или типа того. На бытовом уровне это ощущается как разбиение мысли/задачи на минимально возможные семантически составляющие, их оптимизация и наслаждение от полученного результата.
>>205457079 Никто с этим и не спорит. Задача кода - зарабатывать деньги. Где-то дешевле возспользоваться библиотекой, а где-то - написать свой код (если он будет лучше по каким-либо критериям). Ведь ты бы не отказался водить автомобиль ручной сборки вместо конвейерной штамповки? Но это на порядки дороже. Так же и с кодом.
Аноны, подскажите, насколько мой код является говнокодом. Эта функция проверяет какое слово из массива words является анаграммой по отношению к слову word.
function anagrams(word, words) { let anagramWords = []; words.forEach(function (anagramWord) { if(anagramWord.length!=word.length) { return; } let equal = true; let anagramWordCopy = anagramWord.split('').slice().sort(); let wordCopy = word.split('').slice().sort(); for(i = 0; i<=wordCopy.length; i++) { if(wordCopy!=anagramWordCopy) { equal = false; break; } } if(equal) { anagramWords.push(anagramWord); } }); return anagramWords; }
А вот та же самая функция, написанная другими разработчиками. Как научиться писать так коротко и охуенно как они? Ведь мой длинный код полюбому работает медленнее и хуже.
>>205457007 на самом деле когда долго над чем то разбираешься в языке, постоянно думаешь как что реализовать, почему так а не так - ирл реально многое воспринимаешь как код. Например иду вечером домой и типа "может быть shop.BuyBeer(); бля money <= 0 " Так что это нихуя не рофл - программирование та еще залупа. Я уже молчу про gamedev и 3D добичей которые при виде лужи на земле говорят "о, заебись шейдер". Есть у меня друг такой
Пользуясь случаем хочу сказать как у меня печёт от СОЛИД принципов и от ПАТТЕРНОВ.
Ну ладно там я понимаю когда закладывается реально огромный проект с тысячами классов. Но блять когда пишется сраный каталог товаров, или какая-нибудь гостевуха, то тут конечно пиздец как важно захуярить абстрактную фабрику или соблюсти принцип Барбары Лисков. В итоге получается что бизнес-логики на 10 строк, а всякого архитектурного говна на 1000.
>>205457421 Более того, бывают случаи, когда библитечная реализация вполне себе мирно сосуществует с велосипедом на стероидах в пределах одного проекта. Например строки.
>>205457446 >Как научиться писать так коротко и охуенно как они? Посмотрел на чужой код - разобрал как он работает - в следующий раз уже сможешь сам применять.
>>205457501 У тебя печёт от их незнания, поэтому у тебя типичное НИНУЖНО. Никто тебя не заставляет писать правильно - пиши как хочешь. Написанное с применением различных абстракций обычно более гибко, расширяемо и универсально чем твой подход.
>>205457584 Насколько это дрочево с codewars поможет мне повысить какие-то скиллы именно для коммерческой разработки? Там задания по сравнению строк, перебору массивов, геометрические задания и т.д. Насколько это всё приносит реальной пользвы?
>>205457501 Вот! Хороший пример пример быдлокода. А точнее, неграмотного его примененения. Ведь быдлокод вполне решает свои задачи в кратосрочной перспективе. Так если проект нужен здесь и сейчас и развиваться дальше не будет, почему бы и не наговнякать хуйни по-быстрому и не тратить время и деньги там, где это не нужно?
Это само собой получается. Потом видишь, что где-то что-то похоже и надо объединить.
Ну и ещё так для оптимизации делают. Если inline компилятор не поддерживает. Демосценер какой-нибудь может заебашить макрос, который сгенерирует многа-многа кода. Зато быстрее, чем в функцию ходить.
>>205455660 >Но в некоторых случаях можно добиться большей производительности Преждевременная оптимизация - общеизвестный антипаттерн. Вообще изобретать велосипеды для улучшения производительности... Ну я могу, например представить такой кейс при написании кастомного запроса в БД вместо использования стандартных средств ORM. Скажем так, это все - узкие и редкие кейсы. В современном мире проще десяток нод докупить в кластер чем платить 300кк/сек за рефакторинг быдлокода. ОП, кстати, молодец. Такой себе трололо опрос. Быдлокод это понятие который каждый определяет сам для себя а потом можно до хрипоты спорить над этим понятием.
>>205457972 Фух, ты меня успокоил. Сколько раз писал каталоги товаров - никогда не задумывался о паттернах, архитектуре и прочем, хотя подозревал, что пишу как-то неправильно, не по-трушному. А просто хуякал что-то в стиле:
$id = intval($_GET['id']); $query = mysql_query("SELECT * FROM `products` WHERE `category`=$id");
>>205455783 >неиспользование библиотек и прочее велосипедостроение Большое вам спасибо, пидорасы. Теперь для того, чтобы загрузить банальную страничку со статьёй, мне нужно подгрузить целый контейнеровоз всяких свистелок и перделок, которые почему-то считаются прогрессом. Что это за мир, где даже для банального увеличения ссылки при наведении, используется библиотека, которая больше всего контента на странице?
>>205458282 Поспешу расстроить. Даже мелкие проекты следует стремиться делать правильно, чтобы накопить экспы. Другое дело, если у тебя уже 80-й лвл, а проект можно сделать за один вечер, если применить говнокод.
>>205454948 >Это код где не используется библеотеки Этого сразу нахуй, вспоминаю с ужасом проекты, где какой-нибудь просто функционал, который можно за пару дней написать, зато тянутся 100500 библиотек, библиотеки тянут еще свои зависимости, в итоге в проекте уже их гора целая, они глючат, не на всех платформах и конфигурациях работают, добавляют своих багов, и в итоге вместо простоты и элегантности одна сплошная жопа.
>>205458296 Если бы всё писали руками, токсик, то никакой бы банальной странички со статёй ты бы не увидел - смотрел бы телейвизер. Разработка была бы дико дорогим занятием, что тормозило бы весь интернет. Кого вообще волнует трафик в 2к19 году, тем более кодовый? У тебя картинка с двача в 2 раза больше весит чем пяток этих библиотек на странице.
>>205458282 Вот это как раз говнокод. У тебя смешаны модели, контроль и представления, в итоге будет много повтору, код будет сопротивляться расширению и изменениям, очень быстро нарастет сложность и разветвленность. Такого качества код годится только на сайты однодневки ставить, где особо не нужно возиться, ну или фриланс, где сделал да забыл.
>>205458397 Окей, подскажи как бы ты сделал отображение товаров в каталоге.
Алсо, на этой неделе впервые попробовал RedBean. Оказалось так охуенно. Не надо ебаться с запросами и защитой от SQL-инъекций. Даже таблицы создавать не надо, они генерируются на лету. Вот я пиздец столько просрал лишнего времени раньше, когда не пользовался этой охуенной штукой.
>>205458291 Я тебя щас на суахили нахуй пошлю, а если ты не поймешь, насру твоей матери на лицо. Доступно объяснил? Если на языке регэкспа изъясняется 1 человек из 100к, это не их проблема, а того, кто осознавая масштабы пользования этим языком, не комментирует то что он накалякал.
>>205458417 Возможно, спорить не буду. Однако, в моей практике такие задачи встречаются с завидным постоянством. Вот пример. В проекте используется STL и, соответственно, std::string. Внезапно возникает необходимость хранить в памяти миллионы строк. std::vector<std::string>? Да, работать будет, все ок. Но если, учесть то, что строки не меняются, то можно это дело очень неплохо оптимизировать - все строки null-terminated и хранятся в одном непрерывном куске памяти. Опаньки, получаем просто адский буст по перфомансу, памяти, аллокациям и аллаху. Какая из библиотек предоставляет подобное решение? И зачем мне вообще библиотеки, если подобная фигня пишется за полчаса?
>>205458547 >Алсо, на этой неделе впервые попробовал RedBean. Оказалось так охуенно. Ты ещё фреймворки не пробовал. Я тоже как-то охуел, когда круд на 5 сущностей с эндпоинтами за 3 часа написал, вместо недели.
>>205455119 Потом после таких пидорасов как ты, которые считают, что они пишут "хороший код", приходится тратить лишние часы чтобы отдебажить написанное ими дерьмо. Любая адекватная IDE уже автодоки хуярит, настроить только нужно. Но нет же, слишком сложно для таких гениев, которые пишут идеальный код
>>205458710 >защита от инъекций есть в pdo уже Чет я на хабре статью почитал, а там пишут что нихуя не защищает. Поэтому решил попробовать ORMки, т.к. заебался писать корявую хуету с htmlspecialchars и mysql_real_escape_strings.
>>205458793 Ебучий сын спидозной собаки, а если такой кадр как ты окажется на проекте, а мне потом за ним сопровождать его дерьмо, что прикажешь делать, блять?
>>205458812 Я знаю как правильно пишется, но мне нравится писать именно так. Это как со словом "жопа": все знают что пишется так, но на двачах смешнее писать "жёппа". Сразу +10 к юморности фразы.
>>205455165 >Не существует никакого быдлокода. Существует, ой как существует. От конкретных вещей вроде упоротого стиля написания заканчивая еще более упоротыми архитектурными решениями, когда для этого не было никаких технических причин.
- пачки вложенных тернарников или глубокие пирамиды if'ов; - ехал регэкс через регэкс вместо кода; - отсутствие нормального наименования переменных и функций; - даже банальное несоответствие принятым в сфере гайдлайнам, когда например нормальный разработчик бы давал хуки стандартизированные в соответствующих местах, а у тебя все захардкожено к хуям потому что иди нахуй вот почему; - про отсутствие комментариев уже писали, но лишний раз стоит упомянуть;
>>205458860 Изучай регекспы, сгусток менструации, если ты работаешь с людьми, которые их применяют. Или делай что-то свое (как я), тогда кодобаза будет такой, как хочешь ты. Такими темпами ты будешь обвинять коллег в том, что они изъясняются на С++, питоне, etc. Если ты разработчик софта, то будь добр, знай свое дело. А если не нравится, то всегда есть кассы в пятерочках.
>>205458844 Там обычно уже есть всё что надо для работы искаропки + удобная дока. Самому только бизнес логику писать, причём на вполне высоком уровне, а не функциями пхп.
>>205458796 >Чет я на хабре статью почитал, а там пишут что нихуя не защищает. Хабрадауны видно писали, по дефолту в pdo bind юзаешь, нормально все защищено.
>>205455241 Только чтобы использовать if (bool1){} - bool1 должно быть не bool1, а имя по которому понятно что это логический тип Например isOpHooi (я предпочитаю добавлять is, так еще понятнее, что это не какой-то объект класса, а именно булево значение). Вообще по тырпрайз опыту с огромными проектами могу смело заявить, что код надо писать так, чтобы было понятно что к чему и без редакторов/ide. В каких-то местах это добавляет громоздкости, но для поддержки большой кодовой базы оно того стоит
>>205454948 >Это оператор goto Использование оператора goto может быть вполне оправданно во многих ситуациях. Не использовать его вообще в подходящих ситуациях - признак макаки, которой запретили, но не объяснили, почему. Для меня, например, вынос двойного лупа в отдельную функцию для избежания goto - гораздо больший говнокод, чем сам goto (особенно в языках без поддержки указателей).
>Это использовать один и тот же участок кода каждый раз вместо функции Согласен. Главное не плодить однострочные функции, т.к. это нечитабельно, а в ЯП без указателей ещё чревато лишним копированием данных в обе стороны, что в итоге приводит к потере производительности.
>Это код без комментариев Излишнее комментирование (очевидных вещей в частности) тоже вредно. Лучше всего объединять код в блоки по 1-10 строчек лишним newline, и комментировать то, что в этом блоке происходит (кроме ситуаций, когда комментарий необходим отдельно каждой строчке). Есть вещи, к которым комментарии не нужны - например, функция вида bool reverse_list(list^);, занимающая объем не больше 10 строчек. Любому будет ясно, что функция принимает указатель на список и возвращает успешность операции.
>Это код где не используется библиотеки Здесь не согласен по многим причинам. Даже стандартные, проверенные годами, библиотеки зачастую сильно проигрывают в производительности костыльным решениям, куда уж там написанные когда-то на коленке для конкретного (не твоего) случая чужие решения с гитхаба.
>>205457245 >потом обосраться при обновлении? Никто не заставляет тебя обновлять библиотеки. Если библиотека работает правильно и внедрена в приложения, то нет никакой необходимости в её обновлении.
что вообще скажешь по тырпрайзу. Стоит идти устраиваться? К примеру у меня норм знания c#, но я не хочу сидеть дома и попенсорсить, а хочу на РАБотку. Куда идти, что учить?
>>205459013 >Что такое паттерн? Ну у тебя и вопросы на ночь. >Можешь привести пример простого паттерна в виде кода? Не, я с телефона в кроватке лежу. Так-то это гуглится очень просто.
>>205459153 > Лучше всего объединять код в блоки по 1-10 строчек лишним newline, и комментировать то, что в этом блоке происходит Почему не разбить это на функции? Тогда комментарии можно выкинуть.
>>205458796 > т.к. заебался писать корявую хуету с htmlspecialchars и mysql_real_escape_strings. Бляя, какого года php ты юзаешь,mysql_real_escape_string устарел давным давно. Книги хоть новые покупай, давно такой хуйни там нет.
>>205459033 Человек золотого дождя твоего пьяного отца, ты путаешь белое с мягким. Если проект на питоне никто не будет возмущаться применением питона. Если сишный - аналогично. Но если блять какой-то долбоеб на джава стеке решит захуярить ассмеблерную вставку и не подпишет ее что она делает, а главное нахуя он это сделал - его демоны в аду выебут так же как тебя в детстве. Юзаешь нетипичное говно - напиши, блять, зачем и чо она делает. Нахуя выебываться и требовать от разрабочтика софта то, чего он не обязан знать и тратить лишнее время, только чтобы твое самомнение о себе, как о знающем какую-нибудь необычную хуету, не пострадало.
>>205457838 >codewars Решал там задачи на пистоне, в итоге самые заплюсованные решения - вложенные list comprehensions. Даже там, где это не нужно. Причём заплюсованы как хорошая практика.
>>205459160 К чему ты это написал? Ты про абстракции не слышал? На чистом пыхе сегодня не пишет уже никто кроме вкатывальщиков и дремучих хелловордщиков.
Одно дело долго и уныло дёргать пдо и совсем другое прописать пару строк и получить полноценный контроль над таблицей. Например.
>>205456259 >Производительность имеет мало общего с читаемостью кода. Можешь привести конкретный пример? Да легко, например, использование сложных регэксов вместо прописывания алгоритма просто кодом. Например, когда мутантским одним запросом к БД сразу получают результат, перекладывая потенциальную "сложность" алгоритма (на самом деле скорее объем кода) на сложность самого запроса. Например, всякие пачки изъебистых операций вроде байтовых сдвигов и прочего рака используется для оптимизации вместо читаемого кода. Обычно тебе похуй и ты такое не делаешь, но если параша уперлась в какие-то ограничения и подобная оптимизация нужна, то без комментариев потом возвращаться туда грустно.
>>205459199 Учи .net core (asp.net core) 2 и 3. Микросервисную архитектуру (docker, k8s и подобное), рест, графкл, mssql (обычно есть для этого люди, но немного шарить самому тоже надо). Работа с многопоточностью должна быть отточена на идеально, особенно с учетом облачности. Советую еще полистать что-нибудь по кешированию.
>>205459397 >пачки изъебистых операций вроде байтовых сдвигов и прочего рака Щас тебе местный шизик расскажет, что если не умеешь сходу прочесть это говно, то ты долбоеб
>>205459415 И правильно сделают, тащемта, ибо для компилятора разницы нет, а для человека, который будет, возможно, в этот код что-нибудь добавлять - есть. Вот всралось мне, например, вставить ещё какое-нибудь действие перед ретёрном икса, и чё мне теперь, всё условие с нуля писать?
>>205459776 В том то и дело, что там анонимные функции, а не именнованные. Бывает иной раз такая залупа, что глаза вытекают - когда назначается анонимный коллбэк, который возвращает другой анонимный коллбэк. Бля, там такая каша получается, аж в глазах слезится.
>>205459397 Сорян, не врубился. Регексп вместо портянки - это же медленнее?
> вроде байтовых сдвигов и прочего рака используется для оптимизации Уже крайне редко используется. А если используется, то в таких проектах, где знание этого необходимо. Ну типа, пилите с друзьяшками очередной крузис, натыкаешься на строчку x >> 1 и сразу в голове возникает x * 2.
>>205455242 Не подумай, я сам люблю использовать готовые решения и т.д., но довольно часто даже популярные устоявшиеся библиотеки это такое днище, что пиздец. Про баги я даже лишний раз говорить не буду, качество кода внутри ебанутое, ну а хуле опенсорс, никому не интересно чинить баги (а кому интересно, то их патчи годами валяются в ожидания мерджа азаза). А еще зачастую нихуя не могут нужные штуки сделать. Например, популярная библиотека для интеграции рекламы одной рекламной сети в специальное окружение, "все" юзают её, скачек вагоны, апдейты как бы выходят и т.д., т.е. не заброшенное нихуя. А что толку? Оно очень топорно инициализуется, нихуя не гибкое в плане размещения, поддерживает всего чуть больше половины доступных форматов (при этом их элементарно добавить можно, если ты готов держать у себя форк либы, хуле они это сами не сделали не понятно). А как финиш очень убогая документация. Зато готовое лел. В итоге, либо хуево, но готовое, либо у тебя будет форк этого говна, либо ты забьешь и напилишь сам.
>>205459885 Писать в php с горой колбэков признак говнокода как раз. Это в node.js весь смысл, потому что javascript так работает, а в php нахуя? Там берешь SOLID и делишь весь код на классы и dependency injection, получается расширяемо и легко понятно.
>>205459944 >Регексп вместо портянки - это же медленнее? Зависит от случая к случаю. Просто у некоторых даунов из мира кодинга боязнь большого объема кода и вместо того чтобы написать несколько строчек кода они ебашат однострочный мутантский регэкс, который ты потом даже понимая регэксы заебешься читать, понимать и главное править/чинить.
>>205459238 Когда необходимо совершить переход, но вынос в функцию будет неоправдан по производительности (или попросту невозможен). Классический пример: хэндлинг ошибок в функции, возвращающей некое значение: int foobar(int x) { if(!foo(x)) goto err; if(!bar(x)) goto err; return x; err: //handle error return 0; } Сразу вернуть 0 не получится, т.к. ещё нужно, например, закрыть хэндлеры. Само собой, некоторые более современные ЯП могут предложить для этого сахар, и даже не всегда в ущерб читабельность (но кидание эксепшенов с try-catch в некоторых ЯП может быть достаточно дорогим).
>>205459272 Если этот код используется один раз - сильно уменьшает читабельность, т.к. потом кто-то охуеет от количества одноразовых функций, да и скроллить туда-сюда каждый раз не так удобно, особенно если функции раскиданы по разным файлам, а ещё может быть ударом по производительности - лишнее копирование переменных. Понятно, что когда кусок используется несколько раз - выносить стоит, но ради одного раза это имеет смысл разве что для того, что бы не срать кучей локальных переменных в main().
>>205454730 (OP) >Что такое быдлокод? Приведу пример из собственной практики, когда устроился в одну небольшую программистскую конторку. Конторка как выяснилось изготавливала программулину для немецких гос.учреждений определенной разновидностей. При помощи этой программы граждане могли подавать заявления, а чиновники обрабатывать эти заявления. Написано всё было на php с использованием всех сопутствующих технологий.
Когда я увидел исходный код этой программы, я ужаснулся. Например, главный компонент программы был генератором различных полей для формы. Разновидностей полей было очень много, несколько сотен. Но код всех этих разновидностей находился в одном файле, где при помощи else-if перечислялась логика работы каждого из полей. Причем код для каждого из полей состоял примерно на 50-95% из копипасты. В последствии мне пришлось разбить этот файл на несколько сотен файлов. В каждом файле появился класс, отвечающий за работу одного только поля формы. Все эти классы стали наследником одного главного класса, в котором хранилась вся коппипаста. Заняло эта переработка примерно месяца 2, но зато после того как работа был выполнена, все вздохнули с облегчением.
>>205459072 Я не против if'ов как таковых, то когда у тебя залупа на несколько сотен строчек из вложенных if'ов это не особо окей. Понятно, что иногда (но редко) без этого не как, но лучше найти варианты хотя бы подробить это на отдельные функции и упростить структуру, как раз таки для читаемости.
>>205454730 (OP) имхо. в мк это как минимум поллинг вместо прерываний и dma(прямой доступ к памяти). прерывания позволяют выполнять несколько задач "параллельно". в кавычках потому,что мк выполняя одну задачу,при прерывании,переключается на функцию обработчик ,выполняет необходимое и возвращается обратно. при поллинге все операции выполняются строго последовательно,да еще и с задержками и возможной потерей данных,если в нужный момент мк окажется не на той инструкции.
>>205460123 > кто-то охуеет от количества одноразовых функций Соглашусь, да. Можно применять лямбды внутри фукнции (С++). Тогда они фактически будут поделены на функции, но в пределах одного скоупа. Ну и плюс, рефачить так проще.
Когда ты станешь разгибать пальцы как крI-()т0й рАзРаБ0ТчИк, вот тогда любой чужой код будешь называть быдлокодом, вот это самое оно.
Если без юмора, то любой код который правильно выполняет свою задачу корректен по умолчанию. Стандартов чистоты и правильности кода нет, рекомендации идут нахуй вместе с патернами и тем сладким говном, которое ныне льется ручьями. Более того, иногда такая задача просто не ставится - пиши как хочешь главное чтобы было быстро, правила тут диктует бизнес. А условная "чистота" - явление синтетическое, основанное на чьем-то имхо. Позволяет компилятор goto? Код работает корректно? Ну и пошли все нахуй.
>>205460829 Толсто. Вот именно когда народ начинает писать без гайдлайнов, а как получится - тогда говнокод и выходит. Выполнение задачи это только часть разработки, а есть ещё и поддержка. Как ты эту хуйню с goto будешь поддерживать, когда там логики порядочно насыпет - одному Исусу известно, но поебёшься от души.
>>205460407 Можно, конечно. Но нужно ли? Если это просто тот же код, но упакованный в анонимную лямбду, то особого смысла это иметь не будет. Исключение - кусок кода, не требующий много копирования для входа/выхода из лямбды, но в то же время требующий создание заметного количества локальных переменных (но т.к. такое встречается не слишком часто, то не грех будет и в отдельную функцию вынести). Кстате, читал, что в C# ввели более читаемую альтернативу анонимных лямбд - локальные функции. Лямбдам, конечно, можно найти применение, но, в конце концов, это просто альтернативный сахар для условного перехода, и специально их совать куда попало тоже не стоит.
>>205460997 >Выполнение задачи это только часть разработки, а есть ещё и поддержка. Как ты эту хуйню с goto будешь поддерживать
Бизнес поставит задачу я это говно отполирую как кот яйца весной. Задачи такой нет. Тем более что иногда когда начинается правильный ООП, код становится менее читабельным и более жирным, хотя реально пишется на раз - написал, отладил, забыл.
>>205460892 Так блядь и есть вася, если конкурируешь с индусами за кореу хоеьа на поддержке легаси. Вообще не похуй как код написан? Тебе за часы платят? Если платят, то заебись, а если ты ебаный раб о котого требуют производительность как у станка, то пошел нахуй.
>>205460174 А вот еще один пример из той же самой программулины. Говнокодер, который писал эту программу в течении многих лет, видимо не знал о существовании логических операций, и поэтому если ему нужно было сделать логическую операцию, то он заменял её набором из нескольких вложенных if-ов. Например если ему нужно было написать if (a && b) {},
он писал так:
if (a) { if (b) {
} }
Вместо же оператора ИЛИ в бой вступала коппипаста:
>>205461277 >Бизнес поставит задачу я это говно отполирую как кот яйца весной. А я сразу стараюсь писать нормально. Мне нравится то, чем я занимаюсь, в в отличие от ноющих сучек, случайно попавших в профессию.
>>205461428 >А я сразу стараюсь писать нормально. Мне нравится то, чем я занимаюсь, в в отличие от ноющих сучек, случайно попавших в профессию. Кисо ты обиделось чтолэ? Нормально же общались! Ну ладно, не куксись, иди я тебя потискую, моя усатая программисточка.
>>205461013 >>205461279 Понимаешь в чем прикол, по факту ты не занимаешься улучшением существующего или разработкой нового, а просто доводишь до нормального состояния то, что должны были сделать до тебя. С каждой такой задачей ты останавливаешься (а то и вовсе идешь назад), а не шагаешь вперед в светлое будущее. Это в принципе не плохо, если твой потолок - быть простым писакой, кодерком то бишь. Но если ты хочешь стать ниибаца программистом, то рефакторить чужой говнокод - так себе тренировка для этого. Обычно, кстати, это на студентоту спихивают (даже не джунов).
>>205461376 Декомпилятор может их нормально и не сможет декомпилировать, но вот для специалиста по CIL (или ASM, что менее вероятно) они будут выглядеть просто как набор условных переходов (функции), что, конечно, прибавит времени на отсеивание мишуры, но вряд ли серьезно усложнит задачу (если проект, конечно, достойный; просто для отсеивания возможности пиздинга кода подойдет).
>>205461376 >>205461724 А как оборачивать в лямбды всё? Обфускаторы это делают? Анализируют файлы и там где вызовы методов меняют их на лямбда выражения или как?
>>205461547 Он был самым первом программистом в этой компании, а так как шефы в программировании совсем не разбирались и не разбираются, то поэтому они не заподозрили ничего подозрительного. Впрочем этим самым шефам нужно отдать должное. Им удавалось фтюхивать заказчикам его отборнейший тормозной говнокод за вполне приличные деньги.
>>205461570 >разработкой нового Этим вообще мало кто может заниматься в россии, в основном галимый корпоративный софт, который потсотому разу повторяет всем известные велосипеды.
>>205461868 Я точно не знаю как это происходит именно в шарпе, но думаю что делается это так: вместо лямбды создаётся обычная функция и ей присваивается названия навроде "func14587".
>>205461755 Нет, просто все делфисты, которых я видел за свою жизнь были странного вида дядьками. Один устроился к нам в контору, а на следующий день пришёл бухой, ушёл на обед и не вернулся :с Наши микросервисы на делфи, доставшиеся в наследство с 2009 года - лютый пиздец с вечной кучей проблем.
>>205461868 Ну типа того, правда обфускаторы ещё и методы перименовывают в какой-то набор цифр например. Пнрменные и вообще весь нейминг перехерачивают на случайные цифры. Потом такой код хуй прочтёшь.
>>205462083 >Один устроился к нам в контору, а на следующий день пришёл бухой, ушёл на обед и не вернулся Так откуда ты тогда знаешь его код? Не думаю, что будучи пьяным он много накодил за 2-3 часа, если он вообще этим в тот день занимался.
>>205461868 Лямбда - это, по сути, и есть функция, только с другим сахаром. Скомпилируй обе и глянь в ассемблере. Насчет обычной анонимной лямбды не уверен, т.к. компилятор её может как-то оптимизировать, а вот лямбда в C#, прицепленная к эвенту, точно должна компилироваться в условный переход (т.е. вызываться call в asm).
>>205462152 Я знаю. Просто написали, что их можно использовать для обфускации. Но ты же не будешь в оригинальном коде их использовать, а только при компиляции. То есть пишешь обычными методами, а потом они должны замениться на лямбды в релизном билде, например.
>>205460407 Ты на крестах лямбды применяешь вообще? Т.к. скорее всего, ты либо изучаешь кресты (и применяешь их для лучшего понимания), либо перекатился туда из кое-какого конкретного языка, в котором лямбды используют весьма активно (JS). А может быть даже и то, и другое
>>205462258 Как я писал выше - для специалиста на ASM они вообще не станут серьезной проблемой. Это больше делается как защита "от дурака", т.е. от автоматических декомпиляторов. А польза, кстате, со временем может пропасть, когда компиляторы научатся в "optimize away" эти лишние лямбды (уверен, если даже g++ с O3 не умеет это сейчас, то научится делать в ближайшее время; но само собой, с оптимизациями код, который необходимо защитить, никто компилировать не будет).
>>205454730 (OP) Методы больше 5 строк Наследование вместо композиции Больше одного уровня наследования Неговорящие названия типа temp, ret, x Больше одного уровня вложенности в методе Велосипеды Нарушение solid итд
>>205455119 >Хороший код в комментариях не нуждается Таких далбаебов надо увольнять с волчьим билетом и никогда не брать на работу в программирование. Какой бы пиздатый код не был, ты сэкономишь много часов времени тому, кто будешь разбираться в твоем легаси на 500 тыщ строк, что происходит в твоем ебаном куске кода, и почему это написано именно так, а не по-другому.
>>205454948 >Это код без комментариев Зачем комментарии, если и так очевидно, что происходит? т.е. функция с вменяемым названием вместо func_123456, все переменные разделены на условные f для файла, i,j,k для индексов в итераторах и price/login для соответствующих полей. Вообще лично я считаю, что комментарии нужны только там, где ты делаешь какую-то хрень, которая вот совсем неочевидна, например быстрый обратный квадрат в кваке
>Это код где не используется библеотеки зависит от того, что за библиотека, допустим писать свой коннектор к постгресу или qsort нахуй не надо, но, допустим, какую-то мелочь можно и заимплементить самому.
>>205462657 >Наследование вместо композиции >Больше одного уровня наследования Интересно, когда хейтить ООП выйдет из моды, на что переключатся такие, как ты?
>>205463817 Ну goto-то практически общепризнанно плохая практика. И я вообще не видел, чтобы кто-то этим пользовался (даже из тех, кто не является идейными противниками).
>>205463918 Не тот язык программирования, наверное. В JS или Java ты его вряд ли увидишь, конечно, а вот на языках более низкого уровня по типу C/++ вполне реально встретить даже в крупных проектах
>>205464049 А из "языков более низкого уровня" только C и C++ и остались. И это сегодня очень специфическая ниша. Наверное, для целей оптимизации goto где-то может быть смысл использовать. Кстати, я могу ошибаться, но в Java этой конструкции в принципе нет, да и в JS наверное тоже.
>>205464123 >А из "языков более низкого уровня" только C и C++ и остались. Из используемых - да. Хотя можно ещё вставить шутеечку про легаси на COBOL
>И это сегодня очень специфическая ниша. C да, а вот кресты ещё дофига где используются, начиная от десктоп-приложений и заканчивая играми и 3D графикой
>но в Java этой конструкции в принципе нет, да и в JS тоже Ого, вот это оплошность с моей стороны. Ладно ещё JS, который я только самую малость щупал на ноде, но с Java я облажался конкретно (но там хотя бы лабелы есть для выхода из вложенных циклов, что не дает байтоебам сделать харакири из-за отдельных методов для них). В C#, кстате, goto есть, да и в огромной куче других ЯП тоже, но польза от них падает с ростом возможностей языка
>>205464428 >легаси на COBOL Не знаю, насколько он низкоуровневый, его же вроде модернизируют кое-как, новые версии выпускают? Но легко могу поверить, что низкоуровневый. Тогда можно ещё и Фортран вспомнить. Ну и это легаси на КОБОЛ - на Западе, в СНГ его совсем нет или практически нет. Подозреваю, что asm намного живее КОБОЛа. >В C#, кстате, goto есть Да, и я это знаю. Но не используется. Сам факт того, что многие даже не знаю, где оно есть, а где нет, о многом говорит.
Я всегда знал, что на дваче больше всего школьников и пограмистов, лол. Этот тред наловил последних. а так, вы сидите на поделии быдлокодера и не одного
>>205458405 http://bash.org/?891175 * polykurt gets pissed off when seemingly simple programs have lots of dependencies on other packages. People are taught to worship the concept of software reuse, but they take it too far. I should write a C library called libtruncate. Every time somebody needs to truncate an array, they will feel obligated to use my library instead of writing five lines of their own code to do the job. And I will make libtruncate depend on Gnome _and_ KDE _and_ JAVA
Двач, объясни на простых жизненных примерах, что такое быдлокод. Как это.