>>205454730 (OP)Это оператор gotoЭто спагетти кодЭто использовать один и тот же участок кода каждый раз вместо функции Это индуский кодЭто код без комментариевЭто код где не используется библеотеки
>>205455031блять...> Это код без комментариевХороший код в комментариях не нуждается.> Это код где не используется библеотекиБиблиотеки менее эффективны, чем код, написанный под конкретные нужды. Т.е. код без библиотек обходится дороже, но это в некотором роде ручная работа. А это не является признаком говнокода.
>>205454878блять а как правильно в этом случае? Это же даже не костыль, а просто проверка по булевой переменной. В чем бля тут быдлокод?
>>205455119>Библиотеки менее эффективны, чем код, написанный под конкретные нужды. Т.е. код без библиотек обходится дороже, но это в некотором роде ручная работа. А это не является признаком говнокода.
>>205455136Петух подразумевает, что все без исключения языки умеют сворачивать это к виду типа if bool1, без сравнения.
>>205455119>Библиотеки менее эффективны, чем код, написанный под конкретные нуждыАга, конечно, ты всегда напишешь код лучше, чем разрабы библиотеки.
Блядь, можно просто жизненными ситуациями описать? Просто пиздец какой-то. Спросил про одно, а отвечают хуй знает что. Может это и есть быдлокод? Просят одно, захуяривают другое и нихуя нечитаемое.
>>205455076/threadсрсли, очень доступный и наглядный ответ на вопрос ОПа даже для тех, кто вообще не в курсе, что такое погромирование
>>205455241шо то, шо то. Какая разница, это просто личные предпочтения. А если я хочу писать как студент в 1995 году - значит я быдлокодер?
>>205455119>Хороший код в комментариях не нуждаетсяНу да, ты щас такой возьмёшь, посмотришь какие-нибудь радиометрические расчёты и поймёшь, что там делается.
>>205455244Да что ты за хуйню вообще спрашиваешь? Новички всегда поначалу пишут говно. Главное учиться и не стоять на месте.
>>205454730 (OP)//удалить первый элемент в пользовательском спискеmyList <int> mylist{1,2,3,4,5};mylist.reverse();mylist.pop_back();mylist.reverse();Реальная история, я не троль - видел такую хуйню у одногруппника в лабе.Так же можно добавить хэдеры без инклуд гардов, using namespace std и т.д.В общем любое очевидно неэффективное или потенциальное ногопрострельное решение.
>>205455182Называй функции так, чтобы было понятно что они делают и комментарии не понадобятся. Ну и лаконичность приветствуется - хуйня типа kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange не нужна.Если же функцию не получается назвать коротко и ясно, значит проблема в том, что функция слишком много всего делает, что является признаком плохого дизайна и требует рефакторинга.Так что я бы даже сказал, что наличие комментов в коде свидетельствует о не самом его высоком уровне качества.
>>205455242Бывают конкретные случаи, где это оправдано. Не нужно полностью избавляться от либ и тратить годы на hello world. Но в некоторых случаях можно добиться большей производительности, избавившись от библиотеки и переписать код руками под конкретную задачу. Библиотеки всегда обобщены и у их авторов нет максимума свободы.
>>205455610А ты хоть понимаешь, что каждая лишняя тока с запятой снижает твой заработок на 1К/наносек?
>>205455244Долбаеб, тебе все правильно отвечают. Это относится к программированию, какие нахуй примеры из жизни?
>>205455571Да блядь.А просил описать жизненную ситуацию.Допустим- Принудительно заставить ОПа показать хуй. (пишешь программу).- ОП хуй решительно не показывает- Проверяешь молнию, выясняешь цвет трусов.- После года тестов, выясняется, что ОП тян.
>>205455312>значит я быдлокодер?Если ты конкретно про эти сравнения, то нет - каждый дрочит как он хочет.А вот неиспользование библиотек и прочее велосипедостроение, как и игнорирование прогресса в сфере, где ты пишешь, обычно ведёт к хуёвому качеству кода. Вполне можно и быдлокодом назвать такое.
>>205455119>Хороший код в комментариях не нуждается.Манямирок/10, я конечно сам предпочитаю писать очевидный код, зачастую для этого делая его избыточным по объему, но далеко не всегда это получается рациональным решением по вопросу производительности. В таких случаях без нормальных комментариев ты сам потом будешь сосать дальше чем видеть, когда вернешься в свой же код хотя бы через месяц.
>>205455779>>205455779У тебя какая-то ошибка команды к приложению что-ли? Ты понимаешь что ты программируешь? Фантазия на жизнь не распространяется.
>>205454730 (OP)Вообще похуй какой код, главное чтобы работало.мимо владелец галеры с рабами синьер погромистами за 300к/сек
>>205455913>свой велосипед поволяет разобраться как работает чужойТак это нормально если надо разобраться. Я иногда сам осознанно хуиту всякую пишу ради эксперимента.
>>205455994а если увидишь что сотрудник в каждом методе создает одну и ту же переменную, вместо назначения общей, что скажешь?
>>205454730 (OP)Раз уж такой тред, спрошу.Хочу перекатиться из кодинга в системное администрирование. Заебали постоянные дедлайны, + я одиночка, а мне, как кодеру, приходится работать в команде, что я не люблю.А так, устроился в небольшую ламповую фирму, и сычуешь себе перед пекой. Если спросят, говоришь, что конфигурируешь что-нибудь. И всё.Правда, у меня знаний маловато из этой области. Ну, т.е. поднять на линупсе нджинкс с пхп и оракловской базой могу, но чему-то больше уже придётся учиться. Какие подводные? 22 лвл
>>205455975> не всегда это получается рациональным решением по вопросу производительностиПроизводительность имеет мало общего с читаемостью кода. Можешь привести конкретный пример?Сторонники комментариев часто забывают о том, что языки программирования являются таки языками и являются средством выражения мысли. Согласись, лучше знать английский, чем смотреть фильм с субтитрами? Соответственно, уметь внятно облекать мысль в код и уметь читать его - лучше, чем писать комменты, нет?
>>205456047пилю щас игрушку на юнити да, геймдевогосподин 400к/сек и после лютейшего говнокода по перемещению персонажа понял, что существует охуенно плавное физическое движение, создаваемое библиотекой юнити, и мое говно, которое лагает пердит и свистит при беге. Но зато САМ СДЕЛОЛ
>>205454730 (OP)Ну ок, представь себе бытовую ситуацию, проблему, которую ты можешь решить быстро и как попало, но зато прилагая минимум усилий, а можешь все-таки потратить сколько-то времени/нервов/денег, но сделать хорошо.В первом случае тебе, скорее всего, позже придется повторно решать эту проблему, т.к. она снова всплывет. Это и есть быдлокод/говнокод.Т.е. весь вопрос в том, когда ты получишь профит - немедленно и мало или позже, но много.
>>205456322У меня примерно то же самое было когда я первые парсеры писал - пердолил их на регулярках. Потом нормальные библиотеки стал использовать и охуел как это просто делать через селекторы, а позже уже разобрался нормально с DOM и стал выдёргивать нужные вещи тупо копипастой xPath из браузера и стало ясно что это мартыханское занятие.
>>205456188как минимум "Компьютерные сети" за авторством Олифера. Потом советую скачать Cisco Packet Tracer и курить по нему курсы. Как только освоишь Switching and Routing копишь ~20к и пиздуешь сдавать на сертификат Cisco CCNA (смотря где живешь, но в ДСах сто проц есть центры) Это как минимум, а дальше уже сам разберешься
>>205456556Дружок, я писал код еще под 8-битные процы, я далеко не теоретик, поверь. И я проходил через много стадий "нужна/ненужна/гавно/нигавно". В какой-то момент ты понимаешь, что можешь выражать свои мысли не только по-русски или по-английски, но и, например, на С++. В этот момент, бессмысленные комментарии в коде не только не помогают, а начинают мешать.Особенно бесит хуита для доксигена и прочей шняги. Код получается просто нафарширован говном, хтмлем, слэшами и снова говном. Сука, когда такое вижу, мне хочется убивать людей.
>>205456727Не совсем удачный пример. Удалять гланды через выпиленную дырку в черепе (потому что так удобнее) - более наглядно.
>>205456188мимо джун админпереходишь в воркач. /wrkкачаешь там CCNA курс, далее если админишь винду то по винде курс если линукс то там по редхату есть.что надо знать? поднять телефонию на астере, shell, Tcpdump, iptables,nginx,zfs.Литература?Танненбаум, Олифер, Мендель Купер.
> но и, например, на С++Охуеть. Как это. Можно как-то раскрыть.Ну я понимаю художник выражает свое видение мира на холсте. Кал верблюда разбросал и так он видит пустыню.Но как это с кодом?
>>205455517Ну это, конечно, из пальца высосанное утверждение. >>205456872>Дружок, я писал код еще под 8-битные процыЭто тебе сколько, 60 лет? И общаешься ты при этом почему-то как подросток с двачей. Хм....
>>205456872>Особенно бесит хуита для доксигена и прочей шняги.А мне наоборот нравится когда комментариев по 10 строк на метод, а сам метод в 1-2 строки. Прямо видишь как мастер одной строкой кода большое дело делает.
>>205454948>Это код где не используется библеотекиА что, лучше нахуевертить кучу либ в проект и потом обосраться при обновлении?
>>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;}А вот та же самая функция, написанная другими разработчиками. Как научиться писать так коротко и охуенно как они? Ведь мой длинный код полюбому работает медленнее и хуже.№1String.prototype.sort = function() { return this.split("").sort().join("");};function anagrams(word, words) { return words.filter(function(x) { return x.sort() === word.sort(); });}№2function anagrams(word, words) { word = word.split('').sort().join(''); return words.filter(function(v) {return word == v.split('').sort().join('');});}№3let anagrams = (word, words) => words.filter(w => w.split('').sort().join('') === word.split('').sort().join(''));
>>205457007на самом деле когда долго над чем то разбираешься в языке, постоянно думаешь как что реализовать, почему так а не так - ирл реально многое воспринимаешь как код. Например иду вечером домой и типа "может быть shop.BuyBeer(); бля money <= 0 " Так что это нихуя не рофл - программирование та еще залупа. Я уже молчу про gamedev и 3D добичей которые при виде лужи на земле говорят "о, заебись шейдер". Есть у меня друг такойдругой анон
Пользуясь случаем хочу сказать как у меня печёт от СОЛИД принципов и от ПАТТЕРНОВ. Ну ладно там я понимаю когда закладывается реально огромный проект с тысячами классов. Но блять когда пишется сраный каталог товаров, или какая-нибудь гостевуха, то тут конечно пиздец как важно захуярить абстрактную фабрику или соблюсти принцип Барбары Лисков. В итоге получается что бизнес-логики на 10 строк, а всякого архитектурного говна на 1000.
>>205457421Более того, бывают случаи, когда библитечная реализация вполне себе мирно сосуществует с велосипедом на стероидах в пределах одного проекта. Например строки.
>>205457446>Как научиться писать так коротко и охуенно как они?Посмотрел на чужой код - разобрал как он работает - в следующий раз уже сможешь сам применять.
>>205454948>Это использовать один и тот же участок кода каждый раз вместо функции Так разве кто-то пишет?
>>205457448При виде лужи начинаешь анализировать, как же это природа сделала - через повторный рендер сцены или через скринспейс реймарчинг.
>>205457501У тебя печёт от их незнания, поэтому у тебя типичное НИНУЖНО. Никто тебя не заставляет писать правильно - пиши как хочешь.Написанное с применением различных абстракций обычно более гибко, расширяемо и универсально чем твой подход.
>>205457584Насколько это дрочево с codewars поможет мне повысить какие-то скиллы именно для коммерческой разработки? Там задания по сравнению строк, перебору массивов, геометрические задания и т.д. Насколько это всё приносит реальной пользвы?
>>205457501Вот! Хороший пример пример быдлокода. А точнее, неграмотного его примененения. Ведь быдлокод вполне решает свои задачи в кратосрочной перспективе. Так если проект нужен здесь и сейчас и развиваться дальше не будет, почему бы и не наговнякать хуйни по-быстрому и не тратить время и деньги там, где это не нужно?
>>205457633Это само собой получается. Потом видишь, что где-то что-то похоже и надо объединить.Ну и ещё так для оптимизации делают. Если inline компилятор не поддерживает. Демосценер какой-нибудь может заебашить макрос, который сгенерирует многа-многа кода. Зато быстрее, чем в функцию ходить.
>>205457845Продолжу мысль. Парадоксально, но в случае с гостевухой, неприменение быдлокода как раз является быдлокодом.
>>205455660>Но в некоторых случаях можно добиться большей производительностиПреждевременная оптимизация - общеизвестный антипаттерн. Вообще изобретать велосипеды для улучшения производительности...Ну я могу, например представить такой кейс при написании кастомного запроса в БД вместо использования стандартных средств ORM.Скажем так, это все - узкие и редкие кейсы. В современном мире проще десяток нод докупить в кластер чем платить 300кк/сек за рефакторинг быдлокода.ОП, кстати, молодец. Такой себе трололо опрос. Быдлокод это понятие который каждый определяет сам для себя а потом можно до хрипоты спорить над этим понятием.
>>205454730 (OP)>Что такое быдлокод?Код написанный индусами, хохлами, ребятами из юго-восточной азии и южной америки.мимо прогер из германии
>>205457972Фух, ты меня успокоил. Сколько раз писал каталоги товаров - никогда не задумывался о паттернах, архитектуре и прочем, хотя подозревал, что пишу как-то неправильно, не по-трушному. А просто хуякал что-то в стиле:$id = intval($_GET['id']);$query = mysql_query("SELECT * FROM `products` WHERE `category`=$id");while($product = mysql_fetch_array($query)) {echo '<span class="title">'.$product['title'].'</span>';...Но стыдно до сих пор. Слышал что-то о фреймворках, но думаю их освоение хотя бы на начальном уровне займет год-два, ибо нихуя не секу.
>>205458218Язык регэкспов - тот же язык. Если ты на нем с трудом изъясняешься, то это только твои проблемы.
>>205455783>неиспользование библиотек и прочее велосипедостроениеБольшое вам спасибо, пидорасы. Теперь для того, чтобы загрузить банальную страничку со статьёй, мне нужно подгрузить целый контейнеровоз всяких свистелок и перделок, которые почему-то считаются прогрессом. Что это за мир, где даже для банального увеличения ссылки при наведении, используется библиотека, которая больше всего контента на странице?
>>205458282Поспешу расстроить. Даже мелкие проекты следует стремиться делать правильно, чтобы накопить экспы.Другое дело, если у тебя уже 80-й лвл, а проект можно сделать за один вечер, если применить говнокод.
>>205454948>Это код где не используется библеотекиЭтого сразу нахуй, вспоминаю с ужасом проекты, где какой-нибудь просто функционал, который можно за пару дней написать, зато тянутся 100500 библиотек, библиотеки тянут еще свои зависимости, в итоге в проекте уже их гора целая, они глючат, не на всех платформах и конфигурациях работают, добавляют своих багов, и в итоге вместо простоты и элегантности одна сплошная жопа.
>>205458126никто, просто ремарка к тому, что реально необходимость изобретать встречается гораздо реже чем они изобретаются в реальности
>>205458296Если бы всё писали руками, токсик, то никакой бы банальной странички со статёй ты бы не увидел - смотрел бы телейвизер. Разработка была бы дико дорогим занятием, что тормозило бы весь интернет.Кого вообще волнует трафик в 2к19 году, тем более кодовый? У тебя картинка с двача в 2 раза больше весит чем пяток этих библиотек на странице.
>>205458282Вот это как раз говнокод. У тебя смешаны модели, контроль и представления, в итоге будет много повтору, код будет сопротивляться расширению и изменениям, очень быстро нарастет сложность и разветвленность. Такого качества код годится только на сайты однодневки ставить, где особо не нужно возиться, ну или фриланс, где сделал да забыл.
>>205458397Окей, подскажи как бы ты сделал отображение товаров в каталоге.Алсо, на этой неделе впервые попробовал RedBean. Оказалось так охуенно. Не надо ебаться с запросами и защитой от SQL-инъекций. Даже таблицы создавать не надо, они генерируются на лету. Вот я пиздец столько просрал лишнего времени раньше, когда не пользовался этой охуенной штукой.
>>205458291Я тебя щас на суахили нахуй пошлю, а если ты не поймешь, насру твоей матери на лицо.Доступно объяснил?Если на языке регэкспа изъясняется 1 человек из 100к, это не их проблема, а того, кто осознавая масштабы пользования этим языком, не комментирует то что он накалякал.
>>205458417Возможно, спорить не буду. Однако, в моей практике такие задачи встречаются с завидным постоянством.Вот пример. В проекте используется STL и, соответственно, std::string. Внезапно возникает необходимость хранить в памяти миллионы строк.std::vector<std::string>? Да, работать будет, все ок. Но если, учесть то, что строки не меняются, то можно это дело очень неплохо оптимизировать - все строки null-terminated и хранятся в одном непрерывном куске памяти. Опаньки, получаем просто адский буст по перфомансу, памяти, аллокациям и аллаху. Какая из библиотек предоставляет подобное решение? И зачем мне вообще библиотеки, если подобная фигня пишется за полчаса?
>>205458547ORMки хуета, если нагруженный проект, они много тормозов добавляют и память жрут. А защита от инъекций есть в pdo уже.
>>205458537>У тебя смешаны модели, контроль и представленияА как бы ты это сделал? Не доебуюсь, а хочу искренне разобраться в теме.
>>205458547>Алсо, на этой неделе впервые попробовал RedBean. Оказалось так охуенно.Ты ещё фреймворки не пробовал. Я тоже как-то охуел, когда круд на 5 сущностей с эндпоинтами за 3 часа написал, вместо недели.
>>205455119Потом после таких пидорасов как ты, которые считают, что они пишут "хороший код", приходится тратить лишние часы чтобы отдебажить написанное ими дерьмо. Любая адекватная IDE уже автодоки хуярит, настроить только нужно. Но нет же, слишком сложно для таких гениев, которые пишут идеальный код
>>205458710>защита от инъекций есть в pdo ужеЧет я на хабре статью почитал, а там пишут что нихуя не защищает. Поэтому решил попробовать ORMки, т.к. заебался писать корявую хуету с htmlspecialchars и mysql_real_escape_strings.
>>205458793Ебучий сын спидозной собаки, а если такой кадр как ты окажется на проекте, а мне потом за ним сопровождать его дерьмо, что прикажешь делать, блять?
>>205458793Добавлю еще, что сам их не люблю и не использую. Но мне хватает духу признать, что это моя проблема, а не регекспов.
>>205457838Помогает в языке разобраться и алгоритмах. Со всякими паттернами и проектированием конечно не поможет.
>>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>потом обосраться при обновлении?Никто не заставляет тебя обновлять библиотеки. Если библиотека работает правильно и внедрена в приложения, то нет никакой необходимости в её обновлении.
>>205459087что вообще скажешь по тырпрайзу. Стоит идти устраиваться? К примеру у меня норм знания c#, но я не хочу сидеть дома и попенсорсить, а хочу на РАБотку. Куда идти, что учить?
>>205459013>Что такое паттерн?Ну у тебя и вопросы на ночь.>Можешь привести пример простого паттерна в виде кода?Не, я с телефона в кроватке лежу. Так-то это гуглится очень просто.
>>205459153Мне в голову приходит единственное применение goto - когда нужно выйти из 2+ вложенного цикла. Зачем он еще нужен?
>>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 (обычно есть для этого люди, но немного шарить самому тоже надо). Работа с многопоточностью должна быть отточена на идеально, особенно с учетом облачности. Советую еще полистать что-нибудь по кешированию.
>>205454844сокеты гавно без задач причем гораздо более сложно мимо пробовал написать сервер к этой параше
>>205459397>пачки изъебистых операций вроде байтовых сдвигов и прочего рака Щас тебе местный шизик расскажет, что если не умеешь сходу прочесть это говно, то ты долбоеб
Долго ещё в пых завозить стрелочные функции будут? Достало уже писать ретурн функтион ()Когда там у них новая версия с этим говном?
>>205459725В чем понт стрелочных функций? На днях дошел до этого пункта, но не понял. Чем плох стандартный вариант function name()?
>>205459483Если ты пишешь на языке, в котором такое есть, но не понимаешь этого, то проблема, очевидно, не в языке, а в тебе.
>>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 errorreturn 0;}Сразу вернуть 0 не получится, т.к. ещё нужно, например, закрыть хэндлеры. Само собой, некоторые более современные ЯП могут предложить для этого сахар, и даже не всегда в ущерб читабельность (но кидание эксепшенов с try-catch в некоторых ЯП может быть достаточно дорогим).>>205459272Если этот код используется один раз - сильно уменьшает читабельность, т.к. потом кто-то охуеет от количества одноразовых функций, да и скроллить туда-сюда каждый раз не так удобно, особенно если функции раскиданы по разным файлам, а ещё может быть ударом по производительности - лишнее копирование переменных. Понятно, что когда кусок используется несколько раз - выносить стоит, но ради одного раза это имеет смысл разве что для того, что бы не срать кучей локальных переменных в main().
>>205460001>потому что javascript так работаетКак работает? С этого места поподробнее.>Там берешь SOLID и делишь весь код на классы и dependency injectionЧего ты несёшь? Почему в js я не могу солид делать?
>>205454730 (OP)>Что такое быдлокод?Приведу пример из собственной практики, когда устроился в одну небольшую программистскую конторку. Конторка как выяснилось изготавливала программулину для немецких гос.учреждений определенной разновидностей. При помощи этой программы граждане могли подавать заявления, а чиновники обрабатывать эти заявления. Написано всё было на php с использованием всех сопутствующих технологий. Когда я увидел исходный код этой программы, я ужаснулся. Например, главный компонент программы был генератором различных полей для формы. Разновидностей полей было очень много, несколько сотен. Но код всех этих разновидностей находился в одном файле, где при помощи else-if перечислялась логика работы каждого из полей. Причем код для каждого из полей состоял примерно на 50-95% из копипасты. В последствии мне пришлось разбить этот файл на несколько сотен файлов. В каждом файле появился класс, отвечающий за работу одного только поля формы. Все эти классы стали наследником одного главного класса, в котором хранилась вся коппипаста. Заняло эта переработка примерно месяца 2, но зато после того как работа был выполнена, все вздохнули с облегчением.
>>20545701136 лвл. Z80 и аналоги. Ну и дальше.А общаюсь так, чтобы местные меня понимали. Начитаешься ваших двачей а потом кекаешь.
>>205459072Я не против if'ов как таковых, то когда у тебя залупа на несколько сотен строчек из вложенных if'ов это не особо окей. Понятно, что иногда (но редко) без этого не как, но лучше найти варианты хотя бы подробить это на отдельные функции и упростить структуру, как раз таки для читаемости.
>>205454730 (OP)имхо. в мк это как минимум поллинг вместо прерываний и dma(прямой доступ к памяти).прерывания позволяют выполнять несколько задач "параллельно". в кавычках потому,что мк выполняя одну задачу,при прерывании,переключается на функцию обработчик ,выполняет необходимое и возвращается обратно.при поллинге все операции выполняются строго последовательно,да еще и с задержками и возможной потерей данных,если в нужный момент мк окажется не на той инструкции.
>>205460123> кто-то охуеет от количества одноразовых функцийСоглашусь, да. Можно применять лямбды внутри фукнции (С++). Тогда они фактически будут поделены на функции, но в пределах одного скоупа. Ну и плюс, рефачить так проще.
>>205460119>Когда один list comp вложен в другой.Не беда, просто вложенного цикла.>Или когда условие сложнее простого сравнения.А тут в чём проблема?
Когда ты станешь разгибать пальцы как крI-()т0й рАзРаБ0ТчИк, вот тогда любой чужой код будешь называть быдлокодом, вот это самое оно. Если без юмора, то любой код который правильно выполняет свою задачу корректен по умолчанию. Стандартов чистоты и правильности кода нет, рекомендации идут нахуй вместе с патернами и тем сладким говном, которое ныне льется ручьями. Более того, иногда такая задача просто не ставится - пиши как хочешь главное чтобы было быстро, правила тут диктует бизнес. А условная "чистота" - явление синтетическое, основанное на чьем-то имхо. Позволяет компилятор goto? Код работает корректно? Ну и пошли все нахуй.
>>205460829^ петухпосмотрел бы я на твое лицо когда тебе вывали бы "корректное" легаси дерьмо и сказали - поддерживай, Вася
>>205460829Толсто.Вот именно когда народ начинает писать без гайдлайнов, а как получится - тогда говнокод и выходит.Выполнение задачи это только часть разработки, а есть ещё и поддержка. Как ты эту хуйню с goto будешь поддерживать, когда там логики порядочно насыпет - одному Исусу известно, но поебёшься от души.
>>205460407Можно, конечно. Но нужно ли? Если это просто тот же код, но упакованный в анонимную лямбду, то особого смысла это иметь не будет. Исключение - кусок кода, не требующий много копирования для входа/выхода из лямбды, но в то же время требующий создание заметного количества локальных переменных (но т.к. такое встречается не слишком часто, то не грех будет и в отдельную функцию вынести). Кстате, читал, что в C# ввели более читаемую альтернативу анонимных лямбд - локальные функции. Лямбдам, конечно, можно найти применение, но, в конце концов, это просто альтернативный сахар для условного перехода, и специально их совать куда попало тоже не стоит.
>>205460892>посмотрел бы я на твое лицо когда тебе вывали бы "корректное" легаси дерьмо и сказали - поддерживай, ВасяИ не раз, и не два, и на разных языках. Поэтому умею делать из говна конфетку, в отличие от ноющих сучек, случайно попавших в профессию.
>>205460997>Выполнение задачи это только часть разработки, а есть ещё и поддержка. Как ты эту хуйню с goto будешь поддерживатьБизнес поставит задачу я это говно отполирую как кот яйца весной. Задачи такой нет. Тем более что иногда когда начинается правильный ООП, код становится менее читабельным и более жирным, хотя реально пишется на раз - написал, отладил, забыл.
>>205460892Так блядь и есть вася, если конкурируешь с индусами за кореу хоеьа на поддержке легаси. Вообще не похуй как код написан? Тебе за часы платят? Если платят, то заебись, а если ты ебаный раб о котого требуют производительность как у станка, то пошел нахуй.
>>205461009Лямблы в шарпах хороши для обфускации кода, если одни лямбды, то разобраться в декомпилированном коде очень тяжело.
>>205460174А вот еще один пример из той же самой программулины. Говнокодер, который писал эту программу в течении многих лет, видимо не знал о существовании логических операций, и поэтому если ему нужно было сделать логическую операцию, то он заменял её набором из нескольких вложенных if-ов. Например если ему нужно было написатьif (a && b) {}, он писал так:if (a) {if (b) {}}Вместо же оператора ИЛИ в бой вступала коппипаста:if (a) {коппипаста}if (b) {коппипаста}
>>205461277>Бизнес поставит задачу я это говно отполирую как кот яйца весной.А я сразу стараюсь писать нормально. Мне нравится то, чем я занимаюсь, в в отличие от ноющих сучек, случайно попавших в профессию.
>>205461428>А я сразу стараюсь писать нормально. Мне нравится то, чем я занимаюсь, в в отличие от ноющих сучек, случайно попавших в профессию.Кисо ты обиделось чтолэ? Нормально же общались! Ну ладно, не куксись, иди я тебя потискую, моя усатая программисточка.
>>205461013>>205461279Понимаешь в чем прикол, по факту ты не занимаешься улучшением существующего или разработкой нового, а просто доводишь до нормального состояния то, что должны были сделать до тебя. С каждой такой задачей ты останавливаешься (а то и вовсе идешь назад), а не шагаешь вперед в светлое будущее. Это в принципе не плохо, если твой потолок - быть простым писакой, кодерком то бишь. Но если ты хочешь стать ниибаца программистом, то рефакторить чужой говнокод - так себе тренировка для этого. Обычно, кстати, это на студентоту спихивают (даже не джунов).
>>205461412Дай угадаю, речь о каком нибудь старом пропитом делфисте? Такую дичь видал только у таких.
>>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 тыщ строк, что происходит в твоем ебаном куске кода, и почему это написано именно так, а не по-другому.
>>205454730 (OP)Тот код который не может понять любое быдло, тот который может понять только гений который его написал
>>205454948>Это код без комментариевЗачем комментарии, если и так очевидно, что происходит? т.е. функция с вменяемым названием вместо func_123456, все переменные разделены на условные f для файла, i,j,k для индексов в итераторах и price/login для соответствующих полей. Вообще лично я считаю, что комментарии нужны только там, где ты делаешь какую-то хрень, которая вот совсем неочевидна, например быстрый обратный квадрат в кваке>Это код где не используется библеотеки зависит от того, что за библиотека, допустим писать свой коннектор к постгресу или qsort нахуй не надо, но, допустим, какую-то мелочь можно и заимплементить самому.
>>205462657>Наследование вместо композиции>Больше одного уровня наследованияИнтересно, когда хейтить ООП выйдет из моды, на что переключатся такие, как ты?
>>205463746У него ещё останется хейт в сторону goto. Он из моды вряд ли выйдет в ближайшее десятилетие
>>205463817Ну goto-то практически общепризнанно плохая практика.И я вообще не видел, чтобы кто-то этим пользовался (даже из тех, кто не является идейными противниками).
>>205463918Не тот язык программирования, наверное. В JS или Java ты его вряд ли увидишь, конечно, а вот на языках более низкого уровня по типу C/++ вполне реально встретить даже в крупных проектах
>>205464049А из "языков более низкого уровня" только C и C++ и остались.И это сегодня очень специфическая ниша. Наверное, для целей оптимизации goto где-то может быть смысл использовать.Кстати, я могу ошибаться, но в Java этой конструкции в принципе нет, да и в JS наверное тоже.
>>205463918Там вон выше по треду объяснили, в каких ситуациях применение goto оправданно>>205460123>>205459153Но это опять таки на C
>>205464123>А из "языков более низкого уровня" только C и C++ и остались.Из используемых - да. Хотя можно ещё вставить шутеечку про легаси на COBOL>И это сегодня очень специфическая ниша.C да, а вот кресты ещё дофига где используются, начиная от десктоп-приложений и заканчивая играми и 3D графикой>но в Java этой конструкции в принципе нет, да и в JS тожеОго, вот это оплошность с моей стороны. Ладно ещё JS, который я только самую малость щупал на ноде, но с Java я облажался конкретно (но там хотя бы лабелы есть для выхода из вложенных циклов, что не дает байтоебам сделать харакири из-за отдельных методов для них). В C#, кстате, goto есть, да и в огромной куче других ЯП тоже, но польза от них падает с ростом возможностей языка
>>205464428>легаси на COBOLНе знаю, насколько он низкоуровневый, его же вроде модернизируют кое-как, новые версии выпускают? Но легко могу поверить, что низкоуровневый.Тогда можно ещё и Фортран вспомнить.Ну и это легаси на КОБОЛ - на Западе, в СНГ его совсем нет или практически нет.Подозреваю, что asm намного живее КОБОЛа.>В C#, кстате, goto естьДа, и я это знаю.Но не используется.Сам факт того, что многие даже не знаю, где оно есть, а где нет, о многом говорит.
Я всегда знал, что на дваче больше всего школьников и пограмистов, лол. Этот тред наловил последних.а так, вы сидите на поделии быдлокодера и не одного
>>205458405http://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