diff options
| author | 2026-02-02 18:57:20 +0300 | |
|---|---|---|
| committer | 2026-02-02 18:57:20 +0300 | |
| commit | 6c4cbf8578d8a94964ca7327a7826c7c094f94fc (patch) | |
| tree | 07c5dc52358b5725805a465310bbdfa1f4da82bb /content/pages/gostyleguide/google/main.md | |
| parent | Большая чистка блога (diff) | |
| download | blog-6c4cbf8578d8a94964ca7327a7826c7c094f94fc.tar.gz blog-6c4cbf8578d8a94964ca7327a7826c7c094f94fc.tar.bz2 blog-6c4cbf8578d8a94964ca7327a7826c7c094f94fc.tar.xz blog-6c4cbf8578d8a94964ca7327a7826c7c094f94fc.zip | |
Fix images
Diffstat (limited to '')
| -rw-r--r-- | content/pages/gostyleguide/google/main.md | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/content/pages/gostyleguide/google/main.md b/content/pages/gostyleguide/google/main.md deleted file mode 100644 index b3714ee..0000000 --- a/content/pages/gostyleguide/google/main.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -order: 1 -title: Google Go Style Guide — Руководство ---- - -## О руководстве - -<!--more --> - -Руководство по стилю Go и сопутствующие документы кодифицируют современные -наилучшие подходы к написанию читаемого и идиоматичного кода на Go. Следование -Руководству по стилю не является абсолютным требованием, и эти документы никогда -не будут исчерпывающими. Наша цель — минимизировать неопределённость при -написании читаемого кода на Go, чтобы новички в языке могли избежать -распространённых ошибок. Руководство по стилю также служит для унификации -рекомендаций по стилю, даваемых любым рецензентом кода Go в Google. - -| Документ | Ссылка | Основная аудитория | [Нормативный] | [Канонический] | -| ------------------------ | ----------------------------------------------------- | ------------------------ | ------------- | -------------- | -| **Руководство по стилю** | https://google.github.io/styleguide/go/guide | Все | Да | Да | -| **Решения по стилю** | https://google.github.io/styleguide/go/decisions | Наставники по читаемости | Да | Нет | -| **Лучшие практики** | https://google.github.io/styleguide/go/best-practices | Все заинтересованные | Нет | Нет | - -[Нормативный]: #нормативный -[Канонический]: #канонический - -<a id="docs"></a> - -### Документы - -1. **[Руководство по стилю](https://google.github.io/styleguide/go/guide)** - описывает основы стиля Go в Google. Этот документ является окончательным и - служит основой для рекомендаций в «Решениях по стилю» и «Лучших практиках». - -1. **[Решения по стилю](https://google.github.io/styleguide/go/decisions)** — - это более подробный документ, который суммирует решения по конкретным - вопросам стиля и, где уместно, обсуждает обоснование этих решений. - - Эти решения могут иногда меняться на основе новых данных, новых возможностей - языка, новых библиотек или возникающих паттернов, но не ожидается, что - отдельные программисты Go в Google должны следить за актуальностью этого - документа. - -1. **[Лучшие практики](https://google.github.io/styleguide/go/best-practices)** - документируют некоторые паттерны, которые развивались со временем для - решения общих задач, хорошо читаются и устойчивы к потребностям поддержки - кода. - - Эти лучшие практики не являются каноническими, но программистам Go в Google - рекомендуется использовать их там, где это возможно, для сохранения - единообразия и согласованности кодовой базы. - -Эти документы призваны: - -- Согласовать набор принципов для оценки альтернативных стилей -- Кодифицировать устоявшиеся вопросы стиля Go -- Документировать и предоставить канонические примеры идиом Go -- Документировать плюсы и минусы различных решений по стилю -- Помочь минимизировать неожиданности при рецензировании читаемости кода Go -- Помочь наставникам по читаемости использовать согласованную терминологию и - рекомендации - -Эти документы **не** призваны: - -- Быть исчерпывающим списком замечаний, которые можно дать при рецензировании - читаемости -- Перечислять все правила, которые каждый должен помнить и всегда соблюдать -- Заменять здравый смысл при использовании возможностей языка и стиля -- Оправдывать масштабные изменения для устранения различий в стиле - -Всегда будут существовать различия между разными программистами Go и между -кодовыми базами разных команд. Однако в интересах Google и Alphabet, чтобы наша -кодовая база была как можно более согласованной. (Подробнее о согласованности -см. [руководство](https://neonxp.ru/pages/gostyleguide/google/guide/#consistency)). В связи с этим не стесняйтесь вносить -улучшения стиля по мере необходимости, но вам не нужно придираться к каждому -нарушению Руководства по стилю, которое вы обнаружите. В частности, эти -документы могут меняться со временем, и это не повод вызывать лишнюю суету в -существующих кодовых базах; достаточно писать новый код, используя новейшие -лучшие практики, и со временем устранять проблемы поблизости. - -Важно понимать, что вопросы стиля по своей природе субъективны и всегда -сопряжены с компромиссами. Большая часть рекомендаций в этих документах -субъективна, но, как и в случае с `gofmt`, в обеспечиваемом ими единообразии -есть значительная ценность. Поэтому рекомендации по стилю не будут меняться без -должного обсуждения, и программистам Go в Google рекомендуется следовать -руководству по стилю, даже если они с чем-то не согласны. - -<a id="definitions"></a> - -## Определения - -Ниже приведены определения следующих слов, которые используются во всех -документах по стилю: - -- **Канонический**: Устанавливает предписывающие и долговечные правила <a - id="canonical"></a> - - В этих документах «канонический» используется для описания чего-либо, что - считается стандартом, которому должен следовать весь код (старый и новый) и - который не должен существенно меняться с течением времени. Принципы в - канонических документах должны быть понятны как авторам, так и рецензентам, - поэтому всё, что включается в канонический документ, должно соответствовать - высоким стандартам. Как таковые, канонические документы обычно короче и - предписывают меньше элементов стиля, чем неканонические документы. - - https://google.github.io/styleguide/go#canonical - -- **Нормативный**: Призван установить согласованность <a id="normative"></a> - - В этих документах «нормативный» используется для описания чего-либо, что - является согласованным элементом стиля для использования рецензентами кода - Go, чтобы предложения, терминология и обоснования были последовательными. - Эти элементы могут меняться со временем, и эти документы будут отражать - такие изменения, чтобы рецензенты могли оставаться последовательными и в - курсе событий. От авторов кода на Go не ожидается знакомства с нормативными - документами, но рецензенты будут часто использовать их в качестве - справочного материала при проверке читаемости. - - https://google.github.io/styleguide/go#normative - -- **Идиоматичный**: Распространённый и знакомый <a id="idiomatic"></a> - - В этих документах «идиоматичный» используется для обозначения чего-либо, что - широко распространено в коде на Go и стало знакомым паттерном, который легко - узнать. В целом, идиоматичный паттерн следует предпочитать неидиоматичному, - если оба служат одной цели в контексте, поскольку именно это будет наиболее - знакомо читателям. - - https://google.github.io/styleguide/go#idiomatic - -<a id="references"></a> - -## Дополнительные ссылки - -Данное руководство предполагает, что читатель знаком с [Effective Go], поскольку -оно обеспечивает общую основу для кода на Go во всём сообществе Go. - -Ниже приведены некоторые дополнительные ресурсы для тех, кто хочет -самостоятельно изучить стиль Go, и для рецензентов, желающих предоставить в -своих отзывах дополнительный контекст с ссылками. От участников процесса -проверки читаемости Go не ожидается знакомства с этими ресурсами, но они могут -упоминаться в качестве контекста при таких проверках. - -[Effective Go]: https://go.dev/doc/effective_go - -**Внешние ссылки** - -- [Спецификация языка Go](https://go.dev/ref/spec) -- [Часто задаваемые вопросы по Go](https://go.dev/doc/faq) -- [Модель памяти Go](https://go.dev/ref/mem) -- [Структуры данных в Go](https://research.swtch.com/godata) -- [Интерфейсы в Go](https://research.swtch.com/interfaces) -- [Поговорки Go](https://go-proverbs.github.io/) - -- <a id="gotip"></a> Выпуски Go Tip — следите за обновлениями. - -- <a id="unit-testing-practices"></a> Практики модульного тестирования — - следите за обновлениями. - -**Соответствующие статьи Testing-on-the-Toilet** - -- [TotT: Именование идентификаторов][tott-431] -- [TotT: Тестирование состояния vs. Тестирование взаимодействий][tott-281] -- [TotT: Эффективное тестирование][tott-324] -- [TotT: Тестирование, основанное на рисках][tott-329] -- [TotT: Детекторные тесты считаются вредными][tott-350] - -[tott-431]: https://testing.googleblog.com/2017/10/code-health-identifiernamingpostforworl.html -[tott-281]: https://testing.googleblog.com/2013/03/testing-on-toilet-testing-state-vs.html -[tott-324]: https://testing.googleblog.com/2014/05/testing-on-toilet-effective-testing.html -[tott-329]: https://testing.googleblog.com/2014/05/testing-on-toilet-risk-driven-testing.html -[tott-350]: https://testing.googleblog.com/2015/01/testing-on-toilet-change-detector-tests.html - -**Дополнительные внешние материалы** - -- [Go и догма](https://research.swtch.com/dogma) -- [Меньше — значит экспоненциально - больше](https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html) -- [Воображение - Эсмеральды](https://commandcenter.blogspot.com/2011/12/esmereldas-imagination.html) -- [Регулярные выражения для синтаксического - анализа](https://commandcenter.blogspot.com/2011/08/regular-expressions-in-lexing-and.html) -- [Стиль Gofmt никому не нравится, но Gofmt нравится - всем](https://www.youtube.com/watch?v=PAAkCSZUG1c&t=8m43s) (YouTube) |
