РЕЦЕПТ ПРАВИЛЬНОГО ЮНИТ-ТЕСТИРОВАНИЯ
📯 Кто такой этот ваш модульный тест?
Вот написали мы, допустим:
А как мы узнаем, что функция работает правильно?🤔
Напишем следующее:
Но это, конечно, только два частных случая, а нам бы надо положительное тестирование, негативное, пограничные случаи, и вообще ПОЛНОЕ ПОКРЫТИЕ!!😱 😱 😱
📯 Да, если мы хотим никогда не выпустить продукт🥰
Просто по-человечески завидую таким заказчикам, которые требуют полного покрытия, ведь они могут заплатить своим программистам в два раза больше без видимого результата.
📯 Так что теперь, совсем без юнит-тестов?
1-2 позитивных сценария, 1-2 негативных, граничные случаи. И только если через этот модуль проходят изменения. В противном случае, тестим руками и не тратим время.
🤣 – пусть QA тестируют, я свой код даже не запускаю
🤔 – ниче не понял, модуль же это |-3| = 3
Модульные (Unit-) тесты – те, которые проверяют функциональность отедльно взятого компонента программы в изолированной среде.
Вот написали мы, допустим:
int sum(int a, int b) => a + b;
А как мы узнаем, что функция работает правильно?
Напишем следующее:
bool test()
{
return sum(1, 2) == 1 + 2
&& sum(2, 3) == 2 + 3;
}
Но это, конечно, только два частных случая, а нам бы надо положительное тестирование, негативное, пограничные случаи, и вообще ПОЛНОЕ ПОКРЫТИЕ!!
Пример, конечно, утрированный, но на самом деле, если мы хотим добиться 100% coverage, так и получится - код тестов в пять раз больше кода программы.
В зависимости от бюджета и времени, средняя рекомендация – покрыть от 0% до 20% в самых значимых и/или неочевидных участках кода.
1-2 позитивных сценария, 1-2 негативных, граничные случаи. И только если через этот модуль проходят изменения. В противном случае, тестим руками и не тратим время.
🤣 – пусть QA тестируют, я свой код даже не запускаю
🤔 – ниче не понял, модуль же это |-3| = 3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4🤣2👌1
Wild Russian GameDev Mentor
Как и обещал, загружаю результат прогона >100 часов симуляции со вчерашнего стрима. Разумеется, эта дура ничему не научилась. Можно, конечно, подождать еще недельку, но вряд ли это было бы сильно полезно. Максимум, чего можно добиться в такой конфигурации…
Media is too big
VIEW IN TELEGRAM
Результат 12-часового прогона новой сеточки, сделанной на втором стриме. На время в углу не смотрите, я его перезапускал. Какие-то потуги наблюдаются в правом нижнем углу, но...
Но, в остальном, она ничему не научилась👁🗨
До третьего стрима попробую в течение недели позапускать в фоне, может, что и выйдет. Все-таки, время должно было увеличиться из-за полностью случайных мутаций🧬. В крайнем случае, попробуем объединить все 900 котов в одну комнату, чтобы обучение шло в 9 раз быстрее. По крайней мере, в теории.
В любом случае, пока я верю, что нужно просто немного потерпеть, и здравое зерно начнет проступать.
Но, в остальном, она ничему не научилась
До третьего стрима попробую в течение недели позапускать в фоне, может, что и выйдет. Все-таки, время должно было увеличиться из-за полностью случайных мутаций🧬. В крайнем случае, попробуем объединить все 900 котов в одну комнату, чтобы обучение шло в 9 раз быстрее. По крайней мере, в теории.
В любом случае, пока я верю, что нужно просто немного потерпеть, и здравое зерно начнет проступать.
Please open Telegram to view this post
VIEW IN TELEGRAM
НУЖЕН ЛИ ИНГЛИШ ЛАНГУАГЕ ДЛЯ ПРОГРАММИСТА?
📯 Да 👍
Сожалею. Все так. Учи английский.👋
Так что, если хочешь найти решение своей проблемы, поделиться написанным в интернете, прочитать описание библиотеки или вообще ЧТО УГОДНО, то будь добр. Да, на русском есть много материалов, но сильно меньше, чем на английском.
📯 Но не все так плохо
Так что прекращай придумывать отговорки, что тебе не дано и не нравится.
Ну и делитесь своими страйками в комментариях👑 👇
🔥 – если уже успел продлить свой ударный режим в Duolingo
🪕 – Я РУССКИИИЙ, ВСЕМУ МИРУ НАЗЛОООО~
Сожалею. Все так. Учи английский.
Вот здесь написано, что ~половина интернета написано на английском. Русский, кстати, долгое время был вторым и занимал 6% (ставлю, что это кто-то оцифровал Войну и Мир📕 ).
Так что, если хочешь найти решение своей проблемы, поделиться написанным в интернете, прочитать описание библиотеки или вообще ЧТО УГОДНО, то будь добр. Да, на русском есть много материалов, но сильно меньше, чем на английском.
Если ты не планируешь читать Шекспира в оригинале, а только документацию, достаточно будет B1 - того уровня, до которого дотянет и Mr. Зеленая Сова. При должном усердии, разумеется.
Так что прекращай придумывать отговорки, что тебе не дано и не нравится.
Ну и делитесь своими страйками в комментариях
🔥 – если уже успел продлить свой ударный режим в Duolingo
Please open Telegram to view this post
VIEW IN TELEGRAM
ДЖУН, НЕ СМЕЙ ПИСАТЬ ПЕТ-ПРОЕКТЫ
📯 Пет-проекты – это что за зверь?
Ну если из любви, то что в этом плохого и..
📯 Чем же он отличается от коммерческого?
Вот ты в каком случае чище прибираешься, когда придут гости или для себя? Правильный ответ:для себя ты вообще почти не прибираешься . По крайней мере, это справедливо для большинства людей.
📯 Я безработный июнь (ну джун, поняли?) , где же мне взять коммерческий проект??!?
А с чего ты взял, что за коммерческий проект тебе должен кто-то платить?))0) 🤪 И вообще, что он должен быть как-то связан с деньгами. Это все 🔥 капиталистическая пропаганда🔥 заблуждения.
Ведь, как я писал выше, основное отличие заключается в доделанных 80% работы, которые скучные, душные, сложные, и вообще лень, потом, завтра. А для выпуска проекта эти 80% хочешь-не хочешь, а придется сделать. Так что вместо замусоривания своего гита очередным (ДА СКОЛЬКО, СУКА, МОЖНО) клоном Flappy Bird,пойди на завод придумай нормальный проект. А если призовешь друзей на арт/звук/сюжет, то это будет уже работа в компании🤗
📯 И как бы он мог выглядеть?
Выписывай все идеи, которые соответствуют трем критериям:
Потом выбери любимый и.. (наберите воздуха в грудь)
🫵 ЗАКОНЧИ И ВЫЛОЖИ 🫵 .
С таким портфолио тебя с руками оторвут на вкусненькую начальную должность. А, может, ты уже и не захочешь, а пойдешь в инди или продашь своего ребенка(программу имею ввиду!!!) за баснословные 3₽.
🤓 – Понял тебя, пойду писать Flappy Bird (я хочу, чтобы админ плюнул мне в лицо)
🪕 – Понял тебя, пойду писать (столько воды, аж в туалет захотелось)
"Домашний" проект – такой, на котором программист отдыхает от основной работы. Соответственно, он делается не за деньги и не ради хайпа, а из🥵 чистой бескорыстной любви🥵 .
Ну если из любви, то что в этом плохого и..
Вот ты в каком случае чище прибираешься, когда придут гости или для себя? Правильный ответ:
В том и главная разница: "Это никто не проконтролирует, значит, можно не стараться". Поэтому почти все петы – неюзабельный информационный мусор. Попадаются жемчужины, но это исключения.
На самом деле, коммерческим проект считается, если он просто выложен в Steam/Google Play/App Store/ваш вариант. Да, даже если бесплатно. Хитро, правда?
Ведь, как я писал выше, основное отличие заключается в доделанных 80% работы, которые скучные, душные, сложные, и вообще лень, потом, завтра. А для выпуска проекта эти 80% хочешь-не хочешь, а придется сделать. Так что вместо замусоривания своего гита очередным (ДА СКОЛЬКО, СУКА, МОЖНО) клоном Flappy Bird,
Выписывай все идеи, которые соответствуют трем критериям:
1. Ты или твои знакомые сами бы стали пользоваться твоим приложением – иначе ты просто не сможешь определить требования.
2. Это нельзя назвать клоном чего-то – наш уровень, как минимум, "клон чего-то, НО ЕСТЬ ЕЩЕ ...". Тогда будет легче с АП, да и вообще не стыдно показывать.
3. Ты можешь это сделать в течение трех месяцев – тогда через год-полтора как раз закончишь проект. Всегда так получается.
Потом выбери любимый и.. (наберите воздуха в грудь)
С таким портфолио тебя с руками оторвут на вкусненькую начальную должность. А, может, ты уже и не захочешь, а пойдешь в инди или продашь своего ребенка
🤓 – Понял тебя, пойду писать Flappy Bird (я хочу, чтобы админ плюнул мне в лицо)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓3❤2 2💋1
Wild Russian GameDev Mentor
Результат 12-часового прогона новой сеточки, сделанной на втором стриме. На время в углу не смотрите, я его перезапускал. Какие-то потуги наблюдаются в правом нижнем углу, но... Но, в остальном, она ничему не научилась👁🗨 До третьего стрима попробую в течение…
Спустя 72 часа обучения, сетка наконец-то научилась.. Да ничему она не научилась ☹️
Так что сегодня напишем Гугл-динозаврика😊 🦕 и проверим, вдруг она вообще необучаемая. А также раскрасим немного котиков + сольем их в один пул.
Начинаем прямо сейчас!!!
Так что сегодня напишем Гугл-динозаврика
Начинаем прямо сейчас!!!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3 1
UML или ЗАЧЕМ ПРОГРАММИСТУ РИСОВАНИЕ
Вчера закончил большую курсовую, где пришлось сначала написать код, а потом КАЖДУЮ СТРОЧКУ отобразить на схеме...
Это могло бы заставить меня ненавидеть графические нотации, но ваш админ невероятно объективен и проницателен, поэтому ненавидеть я стал только российскую систему образования. И еще решил написать этот пост, чтобы студенты понимали, почему UML полезно изучать, а преподаватели.. ну тоже.. а то пихают куда не попадя свои эти.. из трех букв......
📯 Вначале, как всегда, по определениям🤓
Выглядит примерно как на картинке. Тут диаграмма классов. Из важных есть еще диаграммы последовательности и прецедентов (на любителя).
Причина популярности именно UML заключается в том, что основной посыл этой нотации: "Вот тебе шесть стрелочек и пять правил, остальное сам придумаешь". Благодаря широкой свободе действий, получается легко и непринужденно выделить самое важное и отобразить на схеме без лишнего мусора🗑 . При этом любые извращения особенности, критические для понимания системы, можно снабдить дополнительными подписями.
📯 Ну и на кой хрен мне рисовать, я программистом нанимался?👨🎨
Во-первых, я уже говорил в первом пункте, что можно выделить самое важное. Теперь я говорю, что НУЖНО научиться выделять в коде важные части. И рисование схемы своего кода – отличный способ развить абстрактное мышление, начать потихонечку думать о том, что ты пишешь, о том, как выглядит твоя система и о том, не получается ли у тебягов-спагеттина.
Во-вторых, фраза "Я ему все объяснил, и даже картинку нарисовал!" свидетельствует о максимальной степени разжевывания. Наш мозг не создан понимать тексты, он создан видеть абстракции и искать закономерности. Так что та же самая система будет понята быстрее и глубже, если изобразить ее графически.
В-третьих (в дополнение к во-вторых), графические нотации – лингва франка среди разработчиков + бизнес аналитиков + менеджеров + всяких маркетологов и прочих. Да и, в большинстве, они интуитивно понятны, так что особое обучение почти не требуется. Таким образом, вы сможете наглядно показать начальнику, почему вам требуется еще две недели накофе + покурить тотальный рефакторинг.
📯 Так что теперь, все документировать?
Ну конечно нет, но, как минимум, пару небольших проектов попытаться таким образом отобразить, потренироваться с этим работать. А если у вас на проекте есть документация, то там обязательно должны быть UML-диаграммы.
🤡 – уже умею рисовать, но пока только грим :(
🪕 – я, конечно, не художник, но ебальник админу бы разукрасил😁
Вчера закончил большую курсовую, где пришлось сначала написать код, а потом КАЖДУЮ СТРОЧКУ отобразить на схеме...
Это могло бы заставить меня ненавидеть графические нотации, но ваш админ невероятно объективен и проницателен, поэтому ненавидеть я стал только российскую систему образования. И еще решил написать этот пост, чтобы студенты понимали, почему UML полезно изучать, а преподаватели.. ну тоже.. а то пихают куда не попадя свои эти.. из трех букв......
UML – язык графического описания структур и процессов, в основном, программных. На самом деле, он не единственный подобный, но самый популярный. Почти все пользуются единственно им, так что на остальные просто забейте.
Выглядит примерно как на картинке. Тут диаграмма классов. Из важных есть еще диаграммы последовательности и прецедентов (на любителя).
Причина популярности именно UML заключается в том, что основной посыл этой нотации: "Вот тебе шесть стрелочек и пять правил, остальное сам придумаешь". Благодаря широкой свободе действий, получается легко и непринужденно выделить самое важное и отобразить на схеме без лишнего мусора
Во-первых, я уже говорил в первом пункте, что можно выделить самое важное. Теперь я говорю, что НУЖНО научиться выделять в коде важные части. И рисование схемы своего кода – отличный способ развить абстрактное мышление, начать потихонечку думать о том, что ты пишешь, о том, как выглядит твоя система и о том, не получается ли у тебя
Во-вторых, фраза "Я ему все объяснил, и даже картинку нарисовал!" свидетельствует о максимальной степени разжевывания. Наш мозг не создан понимать тексты, он создан видеть абстракции и искать закономерности. Так что та же самая система будет понята быстрее и глубже, если изобразить ее графически.
В-третьих (в дополнение к во-вторых), графические нотации – лингва франка среди разработчиков + бизнес аналитиков + менеджеров + всяких маркетологов и прочих. Да и, в большинстве, они интуитивно понятны, так что особое обучение почти не требуется. Таким образом, вы сможете наглядно показать начальнику, почему вам требуется еще две недели на
Ну конечно нет, но, как минимум, пару небольших проектов попытаться таким образом отобразить, потренироваться с этим работать. А если у вас на проекте есть документация, то там обязательно должны быть UML-диаграммы.
🤡 – уже умею рисовать, но пока только грим :(
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤡2 2🔥1
Последний стрим по Minecraft перед поездкой в Царьград! [ + @BO3bMAK ]
Поэтому заходите - пообщаемся, ответим на вопросы, расскажем, как будет выглядеть этот канал пока мы в отъезде и поиграем!
❤1😱1
This media is not supported in your browser
VIEW IN TELEGRAM
СТРУКТУРЫ ДАННЫХ И ИХ УРОДЛИВЫЕ ДВОЙНИКИ
Так и есть, все остальные – это либо коробка, натянутая на классические структуры📦, либо более сложный элемент, положенный в обычную структуру. Итак, вот они слева направо (могут в разных языках называться по-разному, я пишу по C#):
📯 Массив (Array)
Так как место случайное, до и после может находиться любая информация, в т.ч. данные ОСи, например. Соответственно, увеличить или уменьшить это место никак не получится😞 .
Однако, беда – нельзя менять размер. Если у вас в языке можно менять размер массива - это бесстыдная неправда🤥 . Все эти операции суть – создание нового массива другого размера и копирование туда элементов🔀.
По-настоящему с этим нам поможет
📯 Список (List)
Таким образом, если понадобилось впихнуть🗜 еще циферку, в последнем элементе меняем ссылку на новый только что созданный – и пожалуйста🔗 ! Да, звучит не супер продуктивно, но уж лучше, чем пересоздавать массив😈 .
Есть подобные ему: очередь и стек(не системный стек, это другое) , двусвязный список↔️ – фактически они работают на том же принципе, только с некоторыми инвалидностями🩼.
📯 Бинарное дерево (Binary tree)
Выглядит примерно так:
5
/ \
3 8
/ / \
1 6 12
На основе дерева строятся всякие словари, часто – хэш-таблицы. Тут к основному элементу-индексатору в нагрузку привешиваются еще и данные – вот и ваш словарь.
🤷, если хотите пост про нотацию Big O
🤣 – А как же небинарное дерево?😂
Из каждого умника вы слышали про то, что любому программисту нужно выучить 5, 7, 15 способов организации циферок в коллекции. А знаете ли вы, что настоящих труЪ структур данных человечество придумало всего три?😋
Так и есть, все остальные – это либо коробка, натянутая на классические структуры📦, либо более сложный элемент, положенный в обычную структуру. Итак, вот они слева направо (могут в разных языках называться по-разному, я пишу по C#):
Это база. Когда мы создаем массив, мы берем в памяти случайное место на [вес элемента * размер массива].
Так как место случайное, до и после может находиться любая информация, в т.ч. данные ОСи, например. Соответственно, увеличить или уменьшить это место никак не получится
Исходя из определения, понимаем, что массив занимает минимально возможный размер, куда можно поместить n элементов типа X. Да и индексация (достать элемент) из него не требует больших усилий (O(1)).
Однако, беда – нельзя менять размер. Если у вас в языке можно менять размер массива - это бесстыдная неправда
По-настоящему с этим нам поможет
Здесь каждый элемент представляет собой данные и ссылку на следующий элемент. Похоже на игру, где прячут бумажки и на каждой пишут, где следующая🗺 .
Таким образом, если понадобилось впихнуть
Однако, разумеется, места он занимает больше, чем массив – ссылки не бесплатные – да и индексация медленнее (O(n)): для того, чтобы дойти до n-ного элемента, нужно до него пройти n элементов.
Есть подобные ему: очередь и стек
Существует для ускорения поиска🔍 😱 . Суть в том, что у каждого элемента есть уже две ссылки: слева от него все, что меньше, а справа - все, что больше.
Выглядит примерно так:
/ \
3 8
/ / \
1 6 12
В зависимости от сбалансированности параметры отличаются, но во всех случаях поиск элемента быстрее, чем у всех остальных (в лучшем – O(log n)). Места, разумеется, требуется больше всех. Ну и еще элемент должен быть сравниваемым.
На основе дерева строятся всякие словари, часто – хэш-таблицы. Тут к основному элементу-индексатору в нагрузку привешиваются еще и данные – вот и ваш словарь.
🤷, если хотите пост про нотацию Big O
🤣 – А как же небинарное дерево?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣6🤷3 2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
👏3
Wild Russian GameDev Mentor
Video message
Забейте, 900₽ за маленькое комбо, мы пошли есть оверпрайсный колорит.
🔥1😱1
Как вы понимаете неделю здесь будет тревел-блог. Посты тоже будут, пожалуйста, не отписывайтесь🥺
❤3🔥2👌1