раскрыть ветку (14)
раскрыть ветку (13)
Да я не подъебываю, мне правда интересно. Мой основной язык Swift, он строго типизирован, есть опциональные значения и guard let. Сам язык предполагает проверки на всех этапах, иными словами, правильно спроектированный код (а xCode выдрачивает тебя на написание правильного кода) либо работает либо ожидаемо выкидывает т.к. выкидывания сам и программируешь, все эти выкидоны ожидаемы и контролируемые… и куда там тесты пихать и чего?
раскрыть ветку (12)
Одно дело, когда код синтаксисчески правильный, другое дело его функциональность и выполнение написанного функционала. Тесты помогают пройти все возможные варианты исполнения вашей программы и ее функций.
раскрыть ветку (5)
раскрыть ветку (4)
Есть проекты котоые Хуй кладут на тесты, экспериментируя на юзерах, а есть те, кто проводит тесты и минимизирует колличество возможнных проблем.
раскрыть ветку (3)
Мне на практике ни разу не приходилось сталкиваться с по-настоящему качественными проектами. Первые недели две всё делается старательно и аккуратно, а потом проект как "с цепи срывается". Тесты, конечно, вручают, но проблема - их пишут те же самые люди, что и код.
раскрыть ветку (2)
Попробуй поработать в продуктовой компании, для меня было очень непривычно что так можно работать :)
раскрыть ветку (1)
Вроде относительно не так давно работал в можно сказать продуктовой компании, но там свои проблемы были. И опыта было недостаточно, чтобы ценить. Потом ещё работал в другой, но был в команде с индусами - на нас всю черновую работу с пускали - так себе было удовольствие. А сейчас всё вроде неплохо, и фирма почти облизывает, зато в проектах катастрофа.
Привет коллега, представим что у тебя есть interactor с какой либо сложной логикой, и твой сосед по парте ее чутка поменял, и теперь она работает не так как предполагается и выдает при некоторых условиях другие данные, дак вот чтобы такое избежать закрываем протоколами этот класс, пишем моки на зависимые классы и пишем тест на проверку всех данных которые должны быть получены из этого класса, и да, это Swift, и иногда без тестов никуда, но частично с тобой согласен писать тесты на все это перебор
раскрыть ветку (2)
Хотя в целом специалисты переходят на более высокоуровневое программирование. Начал недавно таки юзать SwiftUI. Решил картинку с сети загрузить, а Image то оказывается в запросы не умеет. Открыл документацию, есть некий AsyncImage который появился с выходом iOS 15.. но он без кеширования, да и отказываться от прошлых iOS тоже как то не хочется. Ну ок. Написал на urlsession с downloadTask обработчик с кешированием в NSCache и сохранением в .cache на обратном вызове с постановкой в очередь и внедрением значений в главном потоке на изменение. Итого берём ссылку, проверяем кеш, потом проверяем диск и уже потом качаем если нигде нет. Обычная нетривиальная задачка. Соответственно с контролем статуса загрузки и обработкой всех возможных ошибок и состояний. Потратил на это целый час. Потом делюсь кодом с одним товарищем, а он на серьезных щах втирает мне про Combine, мол новые технологии и т.д. Я попробовал объяснить, что комбайн для urlSession работает не на downloadTask, а на dataTask, про проблемы с памятью при загрузке через дату файла более 5мб… безрезультатно. Вникать никто не хочет. Собственно это же и провоцирует написание тестов, сейчас я это понял…просто легкий способ избежать проблем не вникая в архитектуру. Возможно это и правильно.
Привет. Примерно это и имел ввиду, спасибо за дополнение. Я обычно в довесок к протоколам запрещаю переопределять важные методы, потому как видел неоднократно непонятные попытки обойти их, иногда просто люди не догоняют их важность и тупо приводят к соответствию. Ага.. должен быть вот такой метод и вернуть Data.. хм.. ну ладно, вот тебе return Data(), а что под капотом происходит не вникают. Соответственно код падает. В итоге на каждый класс кучу протоколов, final private на 99% методов, несколько проверок данных… но я не могу назвать это тестами, это структура языка и его безопасность.
Ну типизация это хорошо, гарантирует что не прийдет дичь, всегда видишь какие типы у аргументов функций и переменных, но если ошибка в алгоритме или когда очень сложный большой проект где много связей внутри. Тесты гарантируют что случайно не уронишь где то код в другом месте, и помогает сделать селфревью.
У тебя есть некоторая функция, которая изменяет стейт. Тебе надо убедиться, что стейт изменяется так как надо например. тут не столько в краш фри дело
раскрыть ветку (1)
Сижу, ручками тестирую, проверяю возможные варианты. Так тыкаю и эдак тыкаю. Я понял о чем речь, не уверен, что тесты справятся так же хорошо как я. Обычно я стараюсь свести все к изменениям в одном потоке, чтобы не было неожиданностей. Запускаю доп.проверки из разряда «если состояние не изменилось, то что делать» и в целом использовать комбинированные данные. Благо Apple выпустило combine и в целом можно практически полностью отказаться от обратных вызовов… при всем этом я реально не понял пользы тестов. То есть я отдалённо понимаю, что это позволит съэкономить мое же время т.к. написать тест быстрее чем проверить… но либо я тесты неправильно использую либо они работают не так идеально как ожидается.


IT-юмор
7.6K поста53.3K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору