Search
Write a publication
Pull to refresh
7
4

Программист-разработчик

Send message

Чистый код — это тот, который удобно читать вашей команде, и который не противоречит логике и здравому смыслу, не нужно изучать книжки «Чистый код», «Совершенный код», «Чистая архитектура» и т. д.

А, не нужно, да? Хорошо, Айти Вавилон, не будем. Действительно, что это мы.

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

Решил бизнес-задачу (код ужасен или близок к этому) → Рефакторинг под правила проекта (код читаемый, но с проблемами) → Ревью кода (если есть время, правим, если нет, в бэклог)

Все пишут ужасный код, и это нормально, не старайтесь научиться сразу писать хорошо, это долго и сложно, и не всегда эффективно.

Какая у вас замечательная команда. Сразу видно - профессионалы!

Рекомендую ознакомиться с историей погибели браузера Netscape и её причинами, мой юный начинающий фронтендер.

Спасибо за статью)
Только в начале каждого сниппета кода ненужное "go" протекло откуда-то.

Ну что, удаётся избегать по итогу?

Читал сначала Донована, потом Цукалоса. Сейчас читаю Боднера и с каждой прочитанной главой убеждаюсь, что только с него и стоило начинать, минуя первые две книги.

Боднер - это прям топ, он даёт абсолютно всю информацию, которая есть у Донована и Цукалоса, но при этом не забывает там, где нужно углубляться в тему и давать комментарии про идиоматичность.

Помимо этого локализация книги Боднера на голову выше первых двух. Возможно, это связано с тем, что для нее был привлечен действующий ведущий разработчик из Яндекса.

Короче, если ваша цель - вкатиться в 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 разработчики обычно не занимаются разработкой всего приложения с нуля, почти никогда.

Какая-то мешанина с терминологией пошла уже

Стоит ли становится Fullstack разработчиком

Становиться

если вы в домашней сетке через роутер пилите свой первый телегобот

то вас вообще скорее всего не интересует, что такое webhook и вы еще не скоро об этом узнаете

Спасибо! Можно написать на почту для багрепортов, либо в наш ТГ-канал в комментариях. Ссылки на оба ресурса есть в футере сайта.

Проработал этот момент. Теперь справки (как и шпаргалки) поддерживают оформление (выделение жирным отдельных частей текста) и интерактивные ссылки на полезные материалы по теме вопроса. Все имеющиеся шпаргалки и викторины оформил, а вопросы (точнее ответы) снабдил ссылками на статьи для изучения темы. Спасибо за фидбек - кажется, что сайт стал удобнее и полезнее с этими изменениями.

Тут опечатка, лишние аргументы у функции на самом деле. Спасибо, поправил. Но лучше, мне кажется, репортить подобные неточности в telegram-канал, чтобы не засорять тут комментарии.

Спасибо, занесу это в пул задач на продумывание.

Если хотя бы один операнд не является числом, операция интерпретируется как конкатенация и оба значения приводятся к строке

Тут ни один операнд не является числом, но операция не интерпретируется как конкатенация, значения не приводятся к строке

console.log(true + false) // 1

Спасибо за интересные замечания, дополняющие оригинальную статью!

Information

Rating
889-th
Location
Россия
Date of birth
Registered
Activity