Привет! Меня зовут Макс, я Go-разработчик в IT-компании SimbirSoft. Хочу поделиться своим отзывом на книгу «100 ошибок в Go и как их избежать» Тейва Харшани. Книга заинтересовала меня тем, что автор фокусирует свое внимание на ошибках, как распространенных, так и более редких.
Об авторе
Тейва Харшани — старший инженер-программист в Docker. Он работал в области страхования, транспорта и в отраслях, где критически важна безопасность. В 2019 году в своем блоге сделал пост «10 самых распространенных ошибок, с которыми я сталкивался в проектах на Go». Пост стал популярен, после чего автор написал «100 ошибок в Go и как их избежать». Книга содержит описание распространенных ошибок, которые допускают Go-разработчики. Она в значительной степени сосредоточена на самом языке и его стандартной библиотеке, а не на внешних библиотеках или фреймворках. Обсуждения большинства ошибок сопровождаются конкретными примерами.
Книга состоит из 12 глав
Глава «Go: просто научиться, но сложно освоить» объясняет, почему несмотря на то, что Go считается простым языком, его нелегко освоить досконально.
Глава «Организация кода и проекта» содержит описание распространенных ошибок, которые могут помешать организовать программный код чистым и удобным для поддержки.
В главе «Типы данных» обсуждаются ошибки, связанные с основными типами, срезами и картами, такими как переполнение, утечки памяти, неэффективные инициализации типов.
В главе «Управляющие структуры» исследуются распространенные ошибки, связанные с циклами и другими управляющими структурами.
В главе «Строки» рассматривается принцип представления строк и связанных с ними ошибок, связанные с концепцией рун, функций обрезки, итерацией и преобразованиям строк.
В главе «Функции и методы» обсуждаются распространенные проблемы, связанные с функциями и методами, такие как именованные параметры результата, выбор типа, отложенного выполнения (defer).
В главе «Обработка ошибок» рассматривается точная обработка ошибок в Go. Также автор говорит про оборачивания, проверки типа и значения ошибки.
В главе «Конкурентность: основы» представлены основные концепции конкурентности, параллелизма, планировщика Go, пакета sync, контекста, обращения с горутинами и состояния гонки.
В главе «Конкурентность: практика» рассмотрены примеры ошибок, связанных с конкурентностью при использовании каналов, горутин и других примитивов Go.
Глава «Стандартная библиотека» содержит описание распространенных ошибок, допускаемых при использовании стандартной библиотеки с HTTP, JSON или time API.
В главе «Тестирование» обсуждаются ошибки, которые делают тестирование и бенчмаркинг менее эффективными и точными.
Глава «Оптимизация» завершает книгу. В ней исследуются способы того, как оптимизировать приложение для повышения его производительности, от понимания основ функционирования центрального процессора до конкретных тем, связанных с Go.
Для кого эта книга
«100 ошибок в Go и как их избежать» предназначена для разработчиков, уже знакомых с языком Go, и тем, кто уже освоился в языке и хочет сделать свой код еще лучше. В ней не рассматриваются его основные понятия — синтаксис или ключевые слова. Книга описывает распространенные ошибки и их решения.
Что понравилось
-
Каждая ошибка сопровождается примером
В некоторых рассматриваемых ошибках есть более одного примера и большинство из них приближены к тем, которые можно встретить при разработке приложений (управляющие структуры, типы данных, конкурентность, тестирование и даже организация кода).
-
Углубленное изучение
В некоторых случаях автор углубляется в какую-то тему, чтобы читателю было ясно, о чем идет речь. Например, Тейва может привести частый пример, показать и расписать ошибку и после уже предлагать ее исправление.
-
Информация легко воспринимается
Автор добавил иллюстрации для упрощения понимания общей картины ошибки. Также к коду всегда есть комментарии. Приводится краткое резюме по решению всех ошибок, описанных в главе.
-
Примеры на оптимизацию кода
Мне понравилось, что некоторые рассматриваемые ошибки были связаны с более эффективной работой памяти или процессора. Например, «Ошибка #91: не понимать устройство кэша CPU» описывает архитектуру CPU, кэш-линии, размещение кэша и влияние на код Go. Я почерпнул для себя пару способов по оптимизации приложений на Go, которые теперь применяю на проектах.
Что не понравилось
-
Некоторые ошибки устарели
Как и любой другой язык программирования Go развивается, с каждой новой версией в нем появляется все больше функционала, а старый меняется. Небольшая часть ошибок из этой книги была актуальна, например, до версии Go 1.22. Сейчас же знание о них скорее нужно для поддержки проектов, не переходящих на новую версию.
Почему не советую новичкам
В книге ошибки обхватывают весь язык Golang. Базовые вещи должны пониматься ясно и четко. Даже сам Тейва Харшани в начале книги пишет: «Предполагается, что вы уже занимались реальным проектом на Go». Поэтому если вы этого еще не делали, перед чтением этой книги, советую попробовать написать собственное приложение на Go.
Итог
Некоторые примеры из этой книги я использовал в квизе по Go и статье. Также благодаря книге я изменил свой стиль написания кода и подход к работе со структурами с динамической работой памяти. Книга «100 ошибок в Go и как их избежать» не просто даст вам знания, но и повысит ваш уровень, как разработчика.
«100 ошибок в Go и как их избежать» — книга, которую я рекомендую прочесть каждому, кто уже начал разрабатывать на Go. Книга настолько хороша, что из всего прочитанного по Go я считаю работу Харшани лучшей и ставлю ей 5 из 5.
А что вы думаете по поводу этой книги, если тоже читали ее?
Спасибо за внимание!
Больше авторских материалов для Go-разработчиков читай в соцсетях SimbirSoft – ВКонтакте и Telegram. Там мы также публикуем актуальные вакансии, анонсы IT-мероприятий, практикумов и интенсивов. Кстати, в нашем сообществе в VK можете проверить свои знания по Go: 1 часть, 2 часть, 3 часть.
ph_piter
Замечательная рецензия! Мы рады, что книга нашла своего читателя, помогает в работе и вдохновляет на статьи)
Нам тоже «100 ошибок в Go и как их избежать» очень нравится!))
SSul Автор
Спасибо за то, что переводите и издаете такие полезные книги :)