Чистый код — это тот, который удобно читать вашей команде, и который не противоречит логике и здравому смыслу, не нужно изучать книжки «Чистый код», «Совершенный код», «Чистая архитектура» и т. д.
А, не нужно, да? Хорошо, Айти Вавилон, не будем. Действительно, что это мы.
И еще момент, я знаю всего пару человек, которые пишут чистый код сразу, обычно это выглядит так:
Решил бизнес-задачу (код ужасен или близок к этому) → Рефакторинг под правила проекта (код читаемый, но с проблемами) → Ревью кода (если есть время, правим, если нет, в бэклог)
Все пишут ужасный код, и это нормально, не старайтесь научиться сразу писать хорошо, это долго и сложно, и не всегда эффективно.
Какая у вас замечательная команда. Сразу видно - профессионалы!
Рекомендую ознакомиться с историей погибели браузера Netscape и её причинами, мой юный начинающий фронтендер.
Читал сначала Донована, потом Цукалоса. Сейчас читаю Боднера и с каждой прочитанной главой убеждаюсь, что только с него и стоило начинать, минуя первые две книги.
Боднер - это прям топ, он даёт абсолютно всю информацию, которая есть у Донована и Цукалоса, но при этом не забывает там, где нужно углубляться в тему и давать комментарии про идиоматичность.
Помимо этого локализация книги Боднера на голову выше первых двух. Возможно, это связано с тем, что для нее был привлечен действующий ведущий разработчик из Яндекса.
Короче, если ваша цель - вкатиться в Go как можно быстрее, берите сразу Боднера. А потом уже к литературе про конкурентность можно переходить.
"В каком порядке range перебирает элементы мэпы?" и подобные вопросы.
Это не специфицировано. Другими словами "об этом не нужно думать или спрашивать". Спецификация языка упоминает в параграфе про мэпы:
A map is an unordered group of elements... (Мэпа - неупорядоченный набор элементов...)
и про range
The iteration order over maps is not specified and is not guaranteed to be the same (порядок итерирования по мэпам не определен и нет гарантии что он будет всегда одинаков...)
Немного дополню информацией из второго издания книги "Go идиомы и паттерны проектирования" Джона Боднера:
При обходе мапы с помощью цикла for-range, порядок элементов будет меняться, иногда повторяясь. То есть три запуска for-range для одной и той же мапы обойдут элементы в разном порядке.
Такое поведение обусловлено соображениями безопасности. В более ранних версиях Go порядок обхода ключей у отображений с одинаковыми элементами обычно (но не всегда) был одинаковым. Это порождало две проблемы:
1. Разработчики писали код с расчетом на фиксированный порядок обхода, но он иногда приводил к сбоям в самых неподходящий момент.
2. Если отображение всегда хеширует элементы в одни и те же значения и злоумышленнику известно, что сервер сохраняет пользовательские данные в виде отображения, то можно добиться реального замедления работы сервера с помощью DdoS-атаки на основе хеш-коллизий (Hash DoS), отправив серверу специально подготовленные данные, все ключи которых хешируются в одно и то же ведро (что за ведро?)
Чтобы устранить обе эти проблемы, разработчики языка Go внесли два изменения в реализацию отображения. Во-первых, они модифицировали хеш-алгоритм для отображений таким образом, чтобы при каждом создании переменной отображения генерировалось случайное число. Во-вторых, они сделали так, чтобы при каждом обходе отображения с помощью for-range порядок обхода элементов немного варьировался. Эти два изменения существенно усложнили проведение DoS-атаки на основе хеш-коллизий.
Из этого правила есть одно исключение: чтобы упростить процесс отладки, функции форматирования, такие как fmt.Println, всегда выводят отображения в порядке возрастания ключей.
...развитие всех навыков занимает много человекочасов, которые можно потратить на более глубокое изучение одного направления. В итоге при поиске работы по узкому профилю можно сильно проигрывать узконаправленным специалистам.
А зачем осуществлять поиск работы по узкому профилю, если изначально прикладывались усилия к развитию "всех навыков"? Вы сами, судя по вашей статье, в курсе, что на рынке есть спрос на фулстеков. Так к чему же тогда этот пример с поиском работы по узкому профилю?
В итоге при поиске работы по узкому профилю можно сильно проигрывать узконаправленным специалистам.
А еще если фулстек будет откликаться на вакансии маляра, то он будет и того сильнее проигрывать узконаправленным специалистам
Ранее fullstack’ов не было, точнее, они были, но носили немного презрительное название “веб-мастер“.
Как раз таки наоборот, с фулстеков все и начиналось. Ничего презрительного в этом не припомню. ВК, например, изначально делался исключительно руками фулстеков. Чистых фронтов начали плавно нанимать лишь в 2022 с учетом того, что эти фронты все еще периодически продолжали залезать в php-код, чтобы внести необходимые правки или даже накидать новую логику.
Однако сейчас есть тенденция добавлять к Fullstack разработке еще и мобильную разработку.
Да ладно? Вот это поворот
Но в отличие от веб мастеров, fullstack разработчики обычно не занимаются разработкой всего приложения с нуля, почти никогда.
Проработал этот момент. Теперь справки (как и шпаргалки) поддерживают оформление (выделение жирным отдельных частей текста) и интерактивные ссылки на полезные материалы по теме вопроса. Все имеющиеся шпаргалки и викторины оформил, а вопросы (точнее ответы) снабдил ссылками на статьи для изучения темы. Спасибо за фидбек - кажется, что сайт стал удобнее и полезнее с этими изменениями.
Тут опечатка, лишние аргументы у функции на самом деле. Спасибо, поправил. Но лучше, мне кажется, репортить подобные неточности в telegram-канал, чтобы не засорять тут комментарии.
А, не нужно, да? Хорошо, Айти Вавилон, не будем. Действительно, что это мы.
Какая у вас замечательная команда. Сразу видно - профессионалы!
Рекомендую ознакомиться с историей погибели браузера Netscape и её причинами, мой юный начинающий фронтендер.
Спасибо за статью)
Только в начале каждого сниппета кода ненужное "go" протекло откуда-то.
Ну что, удаётся избегать по итогу?
Читал сначала Донована, потом Цукалоса. Сейчас читаю Боднера и с каждой прочитанной главой убеждаюсь, что только с него и стоило начинать, минуя первые две книги.
Боднер - это прям топ, он даёт абсолютно всю информацию, которая есть у Донована и Цукалоса, но при этом не забывает там, где нужно углубляться в тему и давать комментарии про идиоматичность.
Помимо этого локализация книги Боднера на голову выше первых двух. Возможно, это связано с тем, что для нее был привлечен действующий ведущий разработчик из Яндекса.
Короче, если ваша цель - вкатиться в Go как можно быстрее, берите сразу Боднера. А потом уже к литературе про конкурентность можно переходить.
Вы совершенно правы. Исправил это недоразумение.
Немного дополню информацией из второго издания книги "Go идиомы и паттерны проектирования" Джона Боднера:
Спасибо!
Спасибо!
Попробуйте dev-station.ru
А зачем осуществлять поиск работы по узкому профилю, если изначально прикладывались усилия к развитию "всех навыков"? Вы сами, судя по вашей статье, в курсе, что на рынке есть спрос на фулстеков. Так к чему же тогда этот пример с поиском работы по узкому профилю?
А еще если фулстек будет откликаться на вакансии маляра, то он будет и того сильнее проигрывать узконаправленным специалистам
Как раз таки наоборот, с фулстеков все и начиналось. Ничего презрительного в этом не припомню. ВК, например, изначально делался исключительно руками фулстеков. Чистых фронтов начали плавно нанимать лишь в 2022 с учетом того, что эти фронты все еще периодически продолжали залезать в php-код, чтобы внести необходимые правки или даже накидать новую логику.
Да ладно? Вот это поворот
Какая-то мешанина с терминологией пошла уже
Становиться
Сайт переехал на https://dev-station.ru
то вас вообще скорее всего не интересует, что такое webhook и вы еще не скоро об этом узнаете
Спасибо! Можно написать на почту для багрепортов, либо в наш ТГ-канал в комментариях. Ссылки на оба ресурса есть в футере сайта.
Проработал этот момент. Теперь справки (как и шпаргалки) поддерживают оформление (выделение жирным отдельных частей текста) и интерактивные ссылки на полезные материалы по теме вопроса. Все имеющиеся шпаргалки и викторины оформил, а вопросы (точнее ответы) снабдил ссылками на статьи для изучения темы. Спасибо за фидбек - кажется, что сайт стал удобнее и полезнее с этими изменениями.
Тут опечатка, лишние аргументы у функции на самом деле. Спасибо, поправил. Но лучше, мне кажется, репортить подобные неточности в telegram-канал, чтобы не засорять тут комментарии.
Спасибо, поправил.
Спасибо, занесу это в пул задач на продумывание.
Тут ни один операнд не является числом, но операция не интерпретируется как конкатенация, значения не приводятся к строке
Спасибо за интересные замечания, дополняющие оригинальную статью!