TGViewer
Точка входа Точка входа @func_main · 503 subscribers
Post #35 1.74K
Вчера посмотрел презентацию по лучшими практиками написания приложений на Go. Хочу прокомментировать в нескольких постах основные моменты, которые пригодятся не только Go программистам

1. Пишите тестируемый код

На видео автор уделяет отдельное внимание теме автоматичесого тестирования. И понятно почему: как разработчик, могу сказать, что примерно половина рабочего времени уходит на ручное тестирование программ. Это не так плохо, если после завершения проекта к коду никто и никогда не будет прикосаться. Но чаще всего, проект развивается, и со временем в него вносятся изменения. Тут то и начинаются проблемы: сделали небольшое изменение, протестировали руками измененный код и выкатили, не заметив проблем, которые проявляют себя только в динамике

Особенно эта боль остро чувствуется в языках с динамической типизацией. Например: функция всегда ожидала на вход число, а тут она начнет получать (null / nil) и начинает падать. Разработчик в принципе не мог помнить, что от чего зависит в проекте, соответственно ругать его - не самое лечшее решение, чтобы избежать подобных проблем. В таких ситуациях лучше всего писать приложение (автоматические тесты), которое тестирует ваше приложение. Такой подход поможет выиграть время, которое вы бы могли потратить на ручной прогон приложения

Не подмуайте, что все так гладко - придется писать код по-другому - он должен быть готов к тому, что его будут автоматически тестировать. По опыту могу сказать, что в основном, необходимо помнить про 2 взаимосвязные вещи:

1) избегать глобальные состояния (global state);

2) делать "инъекции" зависимостей (dependency injection) в тестируемые функции

Эти советы можно хорошо прочувтсвовать при работе с фреймворком AngularJS - там практически везде необходимо использовать инъекции зависимостей и уходить от глобального состояния. Рекомендую потратить несколько дней на опробывание данной технологии - лично для меня этот опыт был бесценен

В итоге, изменив свой подход к тестированию, вы станете уверенней себя чувствовать во время релиза, ведь теперь, искать проблемы за вас начнет другая программа

По теме тестирования хочу посоветовать отличную книгу "Как тестируют в Google". После прочтения, становится понятно, как массивная компания все еще имеет возможность так быстро двигаться. Секрет в особом подходе к тестированию (неожиданно, да?)

P.S. Я начинаю прорабатывать видео курс (бесплатный) по программированию на Go, и если вам интересно понаблюдать за разработкой реального приложения со многими проблемами и их решениями, стоящих на пути разработчика (в том числе и автоматические тесты), то напишите "+" мне в личку @dkostenko
InfoQ Successful Go Program Design, 6 Years On Peter Bourgon discusses lessons learned from 6 years of professional Go development, highlighting the idioms, design patterns, and practices that have proven themselves at scale — and many that haven't. Bourgon presents recommendations on patterns and best…
More from @func_main
  1. Feb 26, 2022#СвоихНеБросаем подставим информационное плечо нашим бойцам и нашим людям на Донбассе и на…
  2. Feb 28, 2017Если у вас есть опыт разработки приложений, то вы наверняка замечали, что со временем у ва…
  3. Feb 24, 2017Сегодня на канале @techsparks увидел интересную статью, в которой автор рассказывает, как…
  4. Feb 22, 2017Выложили видео с митапа по Go в Авито. Всего было 4 доклада, но, считаю, наиболее полезный…
  5. Feb 22, 2017Очень часто разработчики, считающие себя заскилованными, не могут на интервью ответить на…
  6. Feb 19, 2017Одни борются за анонимность в сети, другие - за идентификацию каждого. По ссылке обзор js-…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →