CowmitStrip.com / commitstrip :: Смешные комиксы (веб-комиксы с юмором и их переводы)

commitstrip Комиксы 
CowmitStrip.com,commitstrip,Смешные комиксы,веб-комиксы с юмором и их переводы
Подробнее
CowmitStrip.com
commitstrip,Смешные комиксы,веб-комиксы с юмором и их переводы
Еще на тему
Развернуть
No, it's...
FatyFat FatyFat 24.02.201704:40 ответить ссылка -4.0
Долбоёбский комикс.

Многие старые программы и игры до сих пор работают как часы - без ошибок и зависаний.

Сейчас обмазываются юнит-тестами - а на выходе забагованная хуйня.

Не нужно "повышать качество приложения" как пишет автор комикса, потому что говно-код уже не исправить, хоть сколько не подпирай его костылями.
refefe refefe 24.02.201706:14 ответить ссылка 5.3
твоя правда, но с магией все становится смешнее:)
goover goover 24.02.201707:02 ответить ссылка 4.6
У нас была тема, что до создания метода класса, создать юнит-тесты под него. Мол, так шустрее и быстрее получается.
И всё таки не уверен, сильно ты не любишь юнит-тесты или нет, но в крупных проектах - они маст-хэв - мелкие модули можно тестировать без запуска всей программы. Да что там, даже если ещё половина проекта в стадии "В голове того кодера".
и в итоге все тестили совсем не то, что будет работать в продакшене
не в том окружении, не в том порядке инитится, в котором думали, и т.п
villy villy 24.02.201712:55 ответить ссылка 0.1
Это уже относится к криворукости, а не к тестированию. Тесты надо делать в соответствии с тем, что требуется от метода и здравым смыслом, на окружение там немного класть, порядок - тоже не важен, ты проверяешь как метод будет реагировать на разные входные данные, которые сам же и задаёшь в тесте (В том числе и получаешь от другого метода, но чаще рекомендуют делать тесты атомарными).
А в чем проблема сделать программу-болванку и тестить методы в ней? Делов даже на С на пару минут.
я сколько ни пытался освоить эту чудесную методологию, чот никак не могу. либо код достаточно примитивен, что нафиг его тестировать - трата времени; либо настолько сложен, что хз как его тестировать. атомарно не получится. Алсо поддержка тестов начинает влиять на саму архитектуру в сторону ее усложнения. когда вместо простого и понятного синглтона, появляются кучи фабрик, кучи хабов, которые эти инстансы позволяют находить, связность растет.
статьи тоже обычно не помогают, сколько их читал, все рассматривают тестирование хелловорлда, а потом всё, конец. как тестировать ебический распределенный кластер - думай сам.
у коллег, которые пишут тесты, тоже чота ничего почерпнуть не получается. как увижу, что на тестирование класса с 3мя полями внутри (rgb цвет) тратится 2 страницы кода - так впадаю в уныние :(
villy villy 24.02.201713:47 ответить ссылка 1.1
Тут да, если код слишком примитивен, и юнит-тесты ни к чему. Но когда громадный проект, пилят его не один человек, проект рассчитан на последующее расширение, управляет командой ещё третий человек, да и куча всего прочего... Юнит-тесты - это гарантия того, что объекты будут работать так, как это требуется.
А вот уже при багах, можно смотреть требования, и выяснять, чего да как произошло.
Вообще, рекомендую кинуть взор на компанию СКБ Контур и их обучающие материалы. Очень хорошо излагают суть и основные принципы разработки ПО и его тестирования. Есть стажировки и обучающие материалы.
Korsar_U Korsar_U 24.02.201717:25 ответить ссылка -0.1
>Юнит-тесты - это гарантия того, что объекты будут работать так, как это требуется

Увы, только если юнит-тест правильно написан. Да, это ещё один уровень контроля, в какой-то мере это тебя дисциплинирует, и в целом имхо хорошо, но это не гарантирует качества кода, точно так же как код без тестов не обязательно забагован.
Грамотные юнит-тесты - гарантия. Корявые юнит-тесты. И вот мы вернулись к тому, с чего начали )
Вот в том-то и дело, что юнит-тесты ловят только механические ошибки в коде, но не логические. Грубо говоря, когда ты пишешь и метод(объект) и тест, ты ДУМАЕШЬ, что он должен работать именно так, и напишешь и то, и другое именно так. И оно прекрасно отработает.
Приведу гипертрофированный пример. Пишешь метод, принимающий инт, отдающий булеан. По всей логике выходит, что если твой инт менее 101, то возвращаем тру, если более - то фэлз. А в проде все падает один раз на 10000, но зато очень громко, и вообще в другом модуле и с совершенно непонятной ошибкой. Потому что ты забыл учесть фазу луны, варианты валентности хлора и долбоеизм Трампа, потому при значении -14762 метод должен возвращать фэлз.
При этом твой простейший класс создается ебанной фабрикой из конфига размером с войну и мир, весь код покрыт тестами и все типа збс, кроме размера проекта, из-за которого этот ебанный баг искали два месяца, а не два дня.
Понимаешь, механические ошибки кода обычно не сильно страшны, и их ловят QA на раз два. А вот логические пиздец как важны. Но из-за относительно небольшого проекта, какаим бы он был без тестов и других тараканов, проект становится неебическим монстром со 100500 уровней абстракций, и в нем реальную работу выполняет отсилы 20% кода, остальное занимается обслуживанием всей этой хуеты.
Я как-то переписывал такой пиздец с жабы со всей этой поебенью на простецкий код на скалке. Бляяяяяя. 150 классов в один? Да легко! Никаких блядских фабрик, никаких ограничений типа "мы так не делаем потому что Архитектура/написано в умной книжке". Был Очень Большой Проект, стал аккуратненький маленький. Без изменения функционала.
Понимаешь, ловить ошибки в проде - охуеть как важно. И тут тесты не просто допизды, они своим существованием конкретно усложняют дело.
А если ещё кто-то будет вести твой код после тебя, то надейся, что это психопат-маньяк не знает где ты живёшь.
Теперь, если что-то надо будет поменять в проекте - они будут искать тебя, а ты искать что-то в одном огромном куске кода или другой кодер будет материться и плеваться.
В то же время, 100500 классов разбиты по модулям, и сидят там, где они нужны, не перегружая всю картину. Не надо листать 1000 строк кода, чтобы узнать, что этот класс делает, не надо смотреть, что там да куда уходит, откуда возвращается.
Паттерны, методы проектирования и прочее придумали не от скуки. Они нужны, чтобы "творческие личности" с криками - "А вот здесь можно ебануть вот такой финт ушами" горели в аду. Строгий код, всё читаемо и понятно, легко проследить что куда уходит, где что чем занимается. Простые методы - меньше удивлений, когда в далёком месте вылетает баг.
Опять же. Если говно-тесты - смысла от них не будет, и даже только вред. Так же и паттерны - пихать их куда попало - не признак большого ума.
Вооот. Я как раз нервничаю оттого, что мне приходилось фиксить баги в таких проектах. Разрабы давно убежали высирать свои мелкие катышки классы в другие места. А баги-то есть. Модулей тоже 100500, и я в душе́ не ебу, что из них каждый делает, доков нет, по названиям они все безликие. Спросить не у кого. И вот начинаешь отслеживать путь данных от какой-то точки, пытаясь понять, где же они таки портятся в этом всем месиве. Причем каждый раз нужно рыскать по всем злоебучим реализациям и инициализациям, потому что баринам-с-тестами писать new MyClass конкретно западло. Это все густо перемешано с постоянными уходами исполнения в развесистый фреймворк, и не факт, что ошибка не там(спринг внутрях весьма кривой, и я там баги находил нередко - один парсинг некоторый вещей через регекспы крови мне попортил литров несколько), и хуй ведь понятно, где оно выныривает и почему так.
Как раз это говно и писали творческие личности, у которых вместо мозгов паттерны. Разбираться в коде, который не реализует паттерны, а выполняет задачу, на тех же условиях(есть только исходники) в РАЗЫ легче.
>"искать что-то в одном огромном куске кода или другой кодер будет материться и плеваться. "
Это твоя отсебятина, про огромные куски кода.
>Не надо листать 1000 строк кода, чтобы узнать, что этот класс делает,
Как раз в таких злоебучих проектах приходится рыскать по 1000 строк кода в 100 классах, потому что логики в них на 50 строк. потому остальные 950 можно выкинуть нахуй, а эти 50 сделать одним актором с несложным паттерн-матчингом(это не хуже методов), и с учетом скалки, ужать до 30.
Кстати, вот тебе конкретный баг спринга. Есть у них такая штука, как парсер URI. Сейчас это пофикшено, но в старых версиях парсер URI ненавязчиво понимал только http(s), tcp, и udp в качестве протокола. Если протокол кастомный, то этот класс выдавал в getHost, getPort, getProtocol и getAddress полную хуету. А вот это уже проблема. Парсились входящие данные, и когда нарывались на вполне верный с точки зрения RFC, протокол, спринговый парсер, вместо того, чтобы матюкнуться, что он такого не знает, давал выше хуету. Что вылезало в другом месте.
Можешь глянуть, вроде в версиях 2.х это есть еще. Мне лень снова в этом говне копаться. Ребятки там про RFC вообще не слыхали, у них тоже только паттерны в мозгах.
Хз, вот как раз маразм вида "тест на каждый метод" - это и есть пиздец. 5 строк метода и 10 теста на него. Рефакторинга все боятся даже не как огня, а как лесного пожара. Если кто-то заикнется про "нужно сразу писать идеальную архитектуру", даже на таком микроуровне - прошу закрыть за собой дверь шкафа со стороны Нарнии и не высовываться, потому что заказчики всегда очень даже из реального мира.
Тесты отдельных модулей как черных ящиков по вполне определенным спекам взаимодействия между модулями - ок. Эти спеки меняются не часто, и можно переписать. Не проходит модуль - баг летит тем, кто за него в ответе, а там у себя разберутся.
Можно и отдельные функционально-важные части тестами покрывать. Но не до маразма.
Как по мне, это и было демонстрацией презрительного сарказма над юзерамии юнитов.
1 старые программы тоже глючили и пиздец как, 2 Ты просто не представляешь насколько хуже программы будут работать без тестирования (спойлер они не будут). А за говнокод надо пиздить плёткой, тогда его хотя бы меньше станет.
okreda okreda 24.02.201712:59 ответить ссылка 1.5
тут разговор за юнит тесты, а не за тестирование как таковое. программы для космических кораблей писали без юнит тестов, и ниче, на луну 6 раз летали.
undersun undersun 24.02.201713:46 ответить ссылка -0.4
А что мешает тестить методы в программе пустышке, копирующей только нужные интерфейсы от основной? А там больше изоляции, меньше идиотизма. В свое время была кретиническая мода на уменьшение числа методов и классов в приложении, ну так это нифига не улучшало ситуацию, а код становился запутанным. Белые люди просто вызывают нужные методы из специально созданной библиотеки, а потом уничтожают их для очистки памяти. И никаких проблем. Что, приложение занимает больше места на диске? аж на 3%? Какой ужас.
>была кретиническая мода на уменьшение числа методов и классов в приложении, ну так это нифига не улучшало ситуацию, а код становился запутанным.

Блядь, совсем недавно была(уже чуть пошла на спад) мода на УВЕЛИЧЕНИЕ числа классов и методов. Код от этого становился действительно простым, даже слишком, ибо большинство методов и куча классов, по сути, нихуя не делали. А вот проект становился неебически сложным, ибо понять, где в этом ебанном месиве из 100500 классов делается то, что тебе нужно, а не проксируется очередной бессмысленной хуете, поднятой в виде интерфейса через фабрику - это полный пездец. Это в джаве, и мода эта пошла со Спрингом и засильем тестов. Сейчас народ массово валит от этого бреда на скалку или другие технологии, потому что за эти годы наваяли монстров с огромным количеством кода, конфигов, которые нихуя не конфигурируют, тестов, которые нихуя не тестируют, библиотек, которые используются три раза и на 0.0001% от их возможности и все в этом духе. Исходник проекта после подтягивания зависимостей весит гиг, а это всего-лишь очередная блядская система отчетов и ведения записей очередной затрапезной буржуйской больнички.
Долбоёб это ты. Какие старые программы? По пять строчек кода? Да если бы разработки не "обмазывались юнит-тестами", твоя винда бсодилась от простого движения мышкой.
Ну, как-то так оно в своё время и было.
Legol Legol 24.02.201713:07 ответить ссылка 0.1
Чуваак. Я тебя сильно опечалю, если скажу, что в 95% кода винды юнит-тестами и не пахло? А там, где есть - это в основном новые тулзы на дотнете.
> Многие старые программы и игры до сих пор работают как часы

Ага, после тонны патчей, включая неофициальные.
Hellsy Hellsy 24.02.201714:04 ответить ссылка -0.4
Раньше было лучше!
pils pils 24.02.201718:41 ответить ссылка 0.3
В универе препод сказал, сделайте юнит-тесты на методах. Я спросил как, он сказал, посмотри в интернете. Я пришел домой, посмотрел, не понял. Теперь каждый раз когда речь о них, я думаю о них как о чем то нерабочем. =(
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
ТАК, ЧТО ТАМ У НАС ТВОРИТСЯ В ЗАХВАТЫВАЮЩЕМ МИРЕ ВЕБ-КОМИКСОВ?..
£91	
^ С. У Д	
и у \	/1 /
ОЛИН ЧЕЛОВЕК
РОПСЕНШТИЛЬС/
Я, КАЖЕТСЯ, ПОЗНАЛ ТЩЕТУ БЫТИЯ.
ПИСТОЛЕТ В СЛИВНОМ _БАЧКЕ.
подробнее»

Смешные комиксы,веб-комиксы с юмором и их переводы ропсенштильс и шизнагсингерзуппе вебкомиксы

ТАК, ЧТО ТАМ У НАС ТВОРИТСЯ В ЗАХВАТЫВАЮЩЕМ МИРЕ ВЕБ-КОМИКСОВ?.. £91 ^ С. У Д и у \ /1 / ОЛИН ЧЕЛОВЕК РОПСЕНШТИЛЬС/ Я, КАЖЕТСЯ, ПОЗНАЛ ТЩЕТУ БЫТИЯ. ПИСТОЛЕТ В СЛИВНОМ _БАЧКЕ.
vk.com/commitstrip
GomwitStrip.cow vk.com/mixpixin
Яви нам свой дух. пролей на нас свет, помоги нам найти логи сессии Докера, так как мы их проебали...
CommitStrip.com
подробнее»

commitstrip Смешные комиксы,веб-комиксы с юмором и их переводы

vk.com/mixpixin Яви нам свой дух. пролей на нас свет, помоги нам найти логи сессии Докера, так как мы их проебали... CommitStrip.com
В общем, я переустановил вам \Vindows. Установил 26 драйверов пакет программ «Премиум» и антивирус на 3 года. _____ V
Что??? Пятьдесят тысяч??? По пятьсот за драйвер? Так дорого? И какое еще сохранение данных за тридцать тысяч? В сё же и так было на месте!
Спасибо! Не думал что у меня такая была
подробнее»

commitstrip Смешные комиксы,веб-комиксы с юмором и их переводы it-юмор

В общем, я переустановил вам \Vindows. Установил 26 драйверов пакет программ «Премиум» и антивирус на 3 года. _____ V Что??? Пятьдесят тысяч??? По пятьсот за драйвер? Так дорого? И какое еще сохранение данных за тридцать тысяч? В сё же и так было на месте! Спасибо! Не думал что у меня такая была