Ошибки начинающего программиста | SHIFU.IO
Переводы
Ошибки, которые я совершал, пока становился программистом. Часть 1.
Редакция 27.03.2018
Учитесь находить ошибки, и выработайте привычки, чтобы избежать их.

Источник: Samer Buna, Medium

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

Ошибка №1 Писать код без плана.

Высококачественный письменный контент в целом не может быть легко создан. Он требует тщательной предварительной работы и исследований. Программы не являются исключением. Написание качественных программ проходит в следующем порядке:

  1. Придумать -> исследовать -> составить план -> написать программу -> протеститровать -> изменить то, что требует изменений.

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


  1. Томас Джефферсон сказал: «Если вы рассержены — считайте до 10, прежде чем заговорить. Если вы очень рассержены — считайте до 100».


  1. Моя версия этой цитаты: «При просмотре кода считайте до 10, прежде чем реорганизовать линию. Если код не имеет тестов, то сто» - Самер Буна


Программирование в основном связано с чтением предыдущего кода, изучением того, что необходимо сделать и как оно вписывается в текущую систему, планированием написания функций с небольшими проверяемыми приращениями. Фактическое написание строк кода, вероятно, составляет всего 10% от всего процесса. Не думайте о программировании только как о написании строк кода. Программирование — это основанный на логике творческий подход, требующий самовоспитания.

Ошибка №2 Слишком много планировать, прежде чем начать кодить.

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

Не ищите идеальный план – его попросту не существует в мире программирования. Постарайтесь найти достаточно хороший план, который можно использовать поначалу. Он всё-равно изменится по ходу, но выполнит свою важную функцию – даст вам структуру, которая приведет к ясности в коде. А слишком много планировать – пустая трата времени.

Я говорю только о планировании небольших возможностей. Планирование сразу всех функций в проекте должно быть объявлено незаконным! Мы называем это «Водопадный подход» - это системный линейный план с отдельными шагами, которые должны быть завершены один за другим. Вы можете себе представить, сколько планирования требуется для этого подхода? Даже если вы его сделаете, он всё равно не сработает. Все сложное может быть реализовано только с гибкой адаптацией к реальности.

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

Однако всегда планируйте следующие несколько функций. Делайте это очень осторожно, потому что слишком мало планирования и слишком много планирования может навредить качеству вашего кода, а это совсем не то, чем вы можете рискнуть.

Ошибка №3 Недооценивать важность качества кода.

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

  • Одно из моих любимых выражений о программировании: «Всегда думайте, будто парень, который будет поддерживать ваш код, будет жестоким психопатом, который знает, где вы живёте» - Джон Вудс.

Блестящий совет, Джон!

Даже мелочи имеют значение. Это более важно, чем может показаться сейчас. Ещё одна простая вещь - использование длинных строк. Все, что превышает 80 символов, очень трудно прочитать. Возможно, у вас возникнет соблазн поставить какое-то длительное условие на одну строку, чтобы сохранить блок if-statement более заметным. Не надо. Просто никогда не выходите за пределы 80 символов, никогда. Многие простые проблемы, подобные этим, могут быть легко устранены. В JavaScript у нас есть два превосходных инструмента, которые отлично работают вместе: ESLint и Prettier. Сделайте себе одолжение и всегда используйте их.

Вот ещё несколько ошибок, связанных с качеством кода:

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

2.Любая функция, включающая более 10 строк, слишком длинная

3.Использование двойных отрицаний. Пожалуйста, не делайте этого.

4.Использование коротких, общих или типовых имен переменных. Давайте вашим переменным ёмкие и недвусмысленные имена.

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

6.Использование неаккуратных ярлыков и обходных решений, чтобы не тратить больше времени на простые проблемы. Не танцуйте вокруг проблем. Посмотрите на свои реалии.

7.Думать, что более длинный код лучше. В большинстве случаев более короткий код предпочтительнее. Писать более длинные версии можно, только если они делают код более читабельным. Удаление ненужного кода - лучшее, что вы можете сделать в любой программе.

8.Чрезмерно использовать условную логику. Ну например, не надо оптимизировать производительность, даже если вам кажется это правильным, если вы всё равно не можете её измерить.

Ошибка №4 Выбирать первое решение

Когда я начинал программировать, я помню, что когда мне попадалась проблема, я сразу же бросался искать решение и решать её. Я не думал много о сложностях и потенциальных ошибках моего первого решения. Хотя первое решение может быть заманчивым, но хорошие решения обычно обнаруживаются после того, как вы начнёте обдумывать все найденные вами решения. Если вы не можете придумать несколько решений проблемы, это, вероятно, признак того, что вы не полностью её понимаете. Ваша работа в качестве профессионального программиста заключается не в том, чтобы найти решение проблемы, а в том, чтобы найти простейшее решение проблемы. Я имею в виду, что оно должно правильно работать и быть достаточно простым для дальнейшего понимания и поддержки.

  • Как сказал Чарльз Энтони Ричард Хоар, существует два способа написания ПО - сделать его настолько простым, чтобы было очевидно, что нет недостатков, или наоборот - сделать его настолько сложным, чтобы нельзя было найти недостатков.

Ошибка №5 Не бросать недоделанным

Еще одна ошибка, которую я делал чаще, чем хотелось бы сейчас признавать, касается первого решения даже после того, как выяснялось, что оно не самое простое. Вероятно, это психологически связано с настроем «не бросать недоделанным». Это хороший настрой в большинстве видов деятельности, но он не должен применяться к программированию. На самом деле, когда дело доходит до написания программ, ваши правильные установки могут оказаться совсем не правильными.

В тот момент, когда вы начинаете сомневаться в решении, вы должны подумать о том, чтобы выбросить его и переосмыслить проблему. Это будет верно, независимо от того, сколько вы времени и сил вложили в его реализацию.

Не привязывайтесь к коду только из-за того, сколько усилий вы вложили в него. Плохой код нужно выбрасывать.

Ошибка №6 Не гуглить

Было много случаев, когда я потратил драгоценное время на то, чтобы решить проблему, когда я должен был сначала исследовать её.

Если вы не используете ультрапередовую технологию, есть вероятность, что кто-то другой столкнулся с одной проблемой и нашел для нее решение. Сохраните своё время и просто погуглите первым делом. Иногда это может показать, что то, что вы считаете проблемой на самом деле ею не является, и вам ненадо ничего исправлять. Не надо думать, что вы знаете всё, что необходимо для решения проблемы. Google удивит вас.

Однако будьте осторожны с этим. Ещё один признак новичка - это копирование чужого кода без понимания. Хотя этот код может правильно решить проблему, вы никогда не должны использовать какую-либо строку кода, если вы её не полностью понимаете.

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


Продолжение.

Редакция 27.03.2018