Найти тему
Я, Golang-инженер

#9. Читаем "Чистый код"

Оглавление

Это статья об основах программирования на Golang. На канале я рассказываю об опыте перехода в IT с нуля, структурирую информацию и делюсь мнением

Хой, джедаи и амазонки! С другом начали читать книгу "Чистый код" Роберта Мартина, её полезно изучить программистам.

Для понимания сути книги, нужен контекст ситуации. Поэтому поделюсь как впечатлениями о книге, так и проанализирую технические детали. Постараюсь адаптировать и проиллюстрировать код в примерах для Go (в самой книге примеры на java). Делюсь информацией о книге поэтапно. Поехали>>>

Обложка книги "Чистый код"
Обложка книги "Чистый код"

"Чистый код". Глава 1

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

Для меня, новичка в IT, открывается какой-то новый мир, ранее недоступный. Это ощущение появилось после чтения изречений десятка магов боевых искусств программирования.

Много непонятного: хеш-таблицы, API, эвристика. Всё это найду в интернете, а пока читаю - не останавливаюсь, когда что-то не понимаю. Делаю заметку, читаю спокойно дальше - на общий смысл незнание некоторых терминов не влияет.

Автор говорит о бережливом производстве, 5S, TPM - хорошо известные принципы в машиностроении. Автор говорит о методологиях Agile, Scrum, а ещё о боевых искусствах, применительно к программированию. Когда-то я занимался айкидо, лет семь, наверное. Потом считал, что применяю принципы айкидо в жизни в обычных ситуациях - скажем так, филосовфию айкидо. А здесь автор делится мыслью, что следует учиться у мастера одного, другого, третьего - а потом можно "открывать свою школу". Т.е. на основе накопленного опыта привносить в программирование и написание кода что-то новое.

Запомнилась такая фраза из книги:

У меня для вас отличная новость: хороших программистов не хватает.

Некоторые мысли автора наивные. Например, автор считает, что программист может спорить с руководством по поводу чистки кода как обоснование срыва графиков работ. На мой взгляд руководитель скажет: "В чём проблема? Успевай чистить код и делать график". И всё же спорить нужно, если руководитель не понимает важность чистого кода.

Как можно чистить код? Автор рекомендует начать с простого, по аналогии с системой 5S. Сделаю небольшое отступление и познакомлю с принципами 5С:

1) Сортировка - освободи рабочее пространства от ненужного;

2) Соблюдай порядок - рационально расположи нужное;

3) Содержи в чистоте - наводи порядок, регулярно пересматривай рабочее место и устраняй неисправности;

4) Стандартизируй - все процедуры нужно закрепить в виде нормативных документов/памяток/распоряжений;

5) Совершенствуй - пересматривай первые 4 пункта, актуализируй их, улучшай под текущие потребности.

Инженер-программист может применить 5S:

  • На рабочем месте: компьютерный стол, расположение ноутбука и т.д.;
  • Цифровом рабочем пространстве: ярлыки рабочего стола ПК, струтура файлов и папок в облаке и т.д.;
  • В коде: об этом вся книга Роберта Мартина.

Роберт Мартин в первой главе говорит о важности чистки кода небольшими шагами, например:

  • Упростить сложную конструкцию условий;
  • Устранить повторения;
  • Дать переменной правильное наименование.

По поводу переменных - пока я работаю в "песочнице" replit, там приходится переименовывать каждую переменную вручную. Редакторы исходного кода, например, Visual Studio Code, позволяют легко и просто переименовать все переменные кода.

Пример кода

По данному числу n закончите фразу "На лугу пасется..." одним из возможных продолжений: "n коров", "n корова", "n коровы", правильно склоняя слово "корова".

Входные данные

Дано целое число менее 100.

Выходные данные

Программа должна вывести введенное число n и одно из слов (на латинице): korov, korova или korovy, например, 1 korova, 2 korovy, 5 korov. Между числом и словом должен стоять ровно один пробел.

Пример ввода: 10

Пример вывода: 10 korov

Далее пример фрагмента кода со сложной конструкцей if на Go.

Фрагмент кода решения задачи с платформы Stepic
Фрагмент кода решения задачи с платформы Stepic

И так далее, до 100. Легко представить, каких размеров вышел код. Придёт время, и к этому фрагменту кода может потребоваться вернуться. И, например, посчитать не до 100, а до 100 000, или ещё что-нибудь.

Код, например, можно оптимизировать так:

Оптимизация кода
Оптимизация кода

В этом примере кода учтены гипотетические "отрицательные" коровы, а также нет предела "до 100".

Пока прочитал главу 1, буду изучать далее. Одновременно получаю знания по Go: изучу функции, структуры, указатели и др. Последующие главы книги будут сложнее, поэтому нужна хорошая база.

Если хочешь, добавляйся в наш телеграм-чат. Главная задача чата - поддержка и мотивация заниматься дальше без концентрации на конкретном языке программирования.

Фото автора Andrea Piacquadio: Pexels
Фото автора Andrea Piacquadio: Pexels

Бро, ты уже здесь? 👉 Подпишись на канал «Я, Golang-инженер», будем изучать IT вместе 👨‍💻👩‍💻👨‍💻