Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Переход на Go глазами PHP-разработчика: подводн...

Zhanna
July 03, 2024
5.8k

Переход на Go глазами PHP-разработчика: подводные камни и сложности

Zhanna

July 03, 2024
Tweet

More Decks by Zhanna

Transcript

  1. • 17 лет в коммерческой разработке • писал на js,

    php и теперь уже golang • делал всякое - от системы синтаксического анализа русского языка до BPM для рынка недвижимости и автоматизации работы КЦ • несмотря на тему доклада, по своему люблю golang Обо мне
  2. Доклад основан не лично на моем, а общественном мнении, которое

    я часто слышал и собирал. Доклад про то, с чем вы обязательно столкнетесь при переходе, но про что обычно не говорят. О чем доклад? 1 2 Я бы сам хотел посмотреть такой доклад 5 лет назад, когда только начал погружаться в golang
  3. 1. На самом деле, “так принято” зачастую означает - “рекомендуется

    в определенных случаях” и имеет дополнительный контекст. 2. Постарайтесь разобраться - почему. Чаще всего каждому “так принято” есть логичное объяснение. 3. С отдельной осторожностью лучше относиться к тому, что “так принято” потому что “такое есть в ядре” В Go “так принято”
  4. Например, короткие переменные Понятно func Square (w, h int) (s

    int) { s = w * h return } Уже не очень func (r Repo) Save(item Item) (Item, error) { /* подготавливается запрос */ if i, err := /* выполняется запрос, возвращается ошибка */; err != nil { if c, ok := toUniqueViolationErr(err); ok { f := m[c] // <- ?? return Item{}, newErrConflict(f) } return Item{}, err } return i, nil }
  5. Язык гораздо более специфичен, чем это кажется на первый взгляд.

    Он не простой, но имеет простой синтаксис, например: • Один тип цикла вместо 4-х саму логику не упрощает • Простое распараллеливание никак не упрощает соответствующие проблемы и с ними нужно работать отдельно • При простом синтаксисе выстраивание системы классификации и обработки ошибок - это отдельный квест Специфичность языка и маркетинг
  6. Он не выразительный, но наглядный Специфичность языка и маркетинг php

    go while ($number < 5) { /** обработка */ } for number < 5 { /** обработка */ } php go if ($string) { /** обработка */ } if len(string) > 0 { /** обработка */ }
  7. Нет, вам не одному кажется, что go плохо подходит для

    описания бизнес-логики Специфичность языка и маркетинг To be discussed…
  8. По сравнению с php, автоматизация и удобство “не в моде”,

    многое принято делать руками: • DI-контейнеры и autowiring не популярны • Большие высокоуровневые библиотеки для работы с БД тоже • Вообще любые библиотеки уровня бизнес-логики Специфичность языка и маркетинг
  9. • По большей части исчезнут баги из-за не строгой типизации

    • Все остальные баги останутся • На первое время добавятся баги из-за незнания подводных камней самого golang Golang не снизит количество багов
  10. В начале может тошнить от собственного кода и это нормально

    Многие вещи, которые кажутся странными, сделаны так не просто так и лучше погуглить причину - в отличие от php она чаще всего есть и описана
  11. В начале может тошнить от собственного кода и это нормально

    Многие вещи, которые кажутся странными, сделаны так не просто так и лучше погуглить причину - в отличие от php она чаще всего есть и описана Go-сообщество крайне лояльное к языку, это надо учитывать. Мне в Golang это нравится! Это PHP, дружище!
  12. Низкое качество кода после перехода 1. Из-за того, что язык

    более низкоуровневый, чем php, поначалу он кажется страшным всегда и рефлексы на запах кода перестают работать. 2. Попытки превратить go в свой любимый php обычно не кончаются ничем хорошим. 3. Сообщество с его “тут так принято” иногда легализует плохие практики. 4. Надо за собой внимательно следить и понимать, что первое время чуйке и рефлексам верить нельзя, а надо себя перепроверять.
  13. Язык действительно специфичен, то, что сначала он не заходит -

    это нормально Не верьте про “так принято”, попытайтесь разобраться 1 2 Резюме
  14. Язык не особо безопасен, в некоторых местах он скорее подлый

    враг, который только и ждет, чтобы вы расслабились Язык действительно специфичен, то, что сначала он не заходит - это нормально Не верьте про “так принято”, попытайтесь разобраться 1 2 3 Резюме
  15. Постарайтесь понять концептуально, почему какие-то вещи сделаны так или иначе

    Язык не особо безопасен, в некоторых местах он скорее подлый враг, который только и ждет, чтобы вы расслабились Язык действительно специфичен, то, что сначала он не заходит - это нормально Не верьте про “так принято”, попытайтесь разобраться 1 2 3 4 Резюме
  16. Постарайтесь понять концептуально, почему какие-то вещи сделаны так или иначе

    Язык не особо безопасен, в некоторых местах он скорее подлый враг, который только и ждет, чтобы вы расслабились Язык действительно специфичен, то, что сначала он не заходит - это нормально Не верьте про “так принято”, попытайтесь разобраться Качество кода после перехода у большинства сильно проседает - первое время придется за собой сильно следить, так как опыт и рефлексы перестают работать 1 2 3 4 5 Резюме