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

10 ошибок начинающих программистов

02.07.2019 | habr.com

Какие ошибки совершает каждый начинающий программист?
 


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

Ошибка 1 — Незначимые имена


Чистый код — код, который не нуждается в комментариях, но как этого добиться?

Рассмотрим основные стадии, которые прошел мой код:
 

  1. Переменные в 1 символ.
    В начале пути мои переменные назывались «a»,«b»,«c». На тот момент (3 года назад) программы состояли из 20-30 строк кода, поэтому я не видел в этом проблемы.
  2. Переменные в транслите.
    Если Вы не открывали проект больше месяца, вспомнить назначение переменной «a» будет затруднительно. После такой ситуации я принял решение называть переменные «skorost_korablya», «massiv_chisel». Да, тогда знания моего английского оставляли желать лучшего.
  3. Значимые переменные.
    Значимая переменная — это переменная, отражающая суть данных и действий.
    Пока я писал переменные в транслите, скорость разработки оставляла желать лучшего, поэтому я решил использовать онлайн-переводчик для получения корректного перевода. Переменные стали носить следующие названия «ship_speed», «array_numbers».
    Кроме переменных значимыми должны быть и названия функций, и имена классов. Название функции должно начинаться с глагола, например «get_ship_speed», «updateFrame».

Ошибка 2 — Отсутствие комментариев


На начальном этапе Ваш код должен содержать комментарии, он поможет избежать следующих восклицаний: «Аааа… да что… делает эта… функция!!!»

Когда Вы захотите внести изменения в свой старый проект, который был закончен пару месяцев назад, комментарии позволят быстрее вспомнить что делает класс, функция или переменная.
Чем больше Вы будете писать проектов, тем лучше будет их структура, а значит необходимость в комментариях будет уменьшаться. (Работает в том случае, если с каждым проектом Вы применяете новые знания.)
 

Ошибка 3 — Использование «велосипедов»


Что в моем понимании «велосипед»? Это новая технология со скрытыми ошибками, которая не знает о существовании старой и отлаженной.

Вы хотите написать игру? Не стоит изобретать свой движок, возьмите готовый (Unity, UE4).
Может быть, Вы хотите написать новую ОС? Звучит хорошо, но на начальном этапе лучше сосредоточиться на получении базы знаний.
 

Ошибка 4 — Отсутствие теории


В первый год изучения программирования я не мог придумать задачу, которую мог бы решить. Почему? Мои знания не позволяли описать точный алгоритм решения.

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

Ошибка 5 — Отсутствие стиля


Для лучшей читабельности каждый блок кода должен содержать внутренние отступы (4 пробела или 2 Tab).

Объявление переменных должно быть максимально близко к блоку, где оно используется.
На протяжение всего проекта Вы должны придерживаться одного стиля — змеиного (snake_case) или верблюжьего (CamelCase).
 

Ошибка 6 — Повторяющиеся блоки кода


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

Ошибка 7 — Один класс и десятки методов


Моей первой программой, написанной с нуля, была игра «Крестики-Нолики» в консоли с поддержкой игры на поле 78*78. Она занимала больше тысячи строк в одном классе. Так делать не надо) Продумывайте структуру перед написанием проекта. Например, для моей игры сейчас бы выделил следующие классы:
 

  1. MainMenu — отвечает за взаимодействие других модулей.
  2. Player — отвечает за взаимодействие игрока с системой.
  3. BotLogic — отвечает за логику ИИ.
  4. LevelGraphics — отвечает за отрисовку графики.
  5. Autosave — отвечает за чтение/запись файла сохранения.

Игра Крестики-Нолики

Ошибка 8 — Одна функция — много задач


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

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

Правильная, по моему мнению, реализация

Ошибка 9 — Излишняя оптимизация


В свое время я пытался максимально оптимизировать свои программы, но все сводилось к изменению типа переменных или алгоритма.

Как избавиться от этого чувства? Представьте, что у Вас в массиве не десять элементов, а сто тысяч. Тип int занимает 2 байта 4 байта, а значит в оперативной памяти массив займет меньше 1 Мбайта. Если вы измените тип на short, массив также будет занимать меньше 1 Мбайта, а вот ошибки с переполнением уже могут возникнуть.
 

Ошибка 10 — Отсутствие защиты от некорректных данных пользователя


Каждый проект работает в «тепличных» условиях, когда с ним работает только создатель. А попробуйте дать поиграться с ним другому человеку).
 

  • Пишете калькулятор? Проверьте, что пользователь не захочет разделить число на 0.
  • Хотите получить правильный номер телефона или email? Проверьте регулярным выражением входную строку.
  • Может быть, Вы работаете с базой данных. А защиту от SQL-инъекций добавили?

Рекомендуемая литература

  1. Стив Макконнелл «Совершенный код»
  2. Роберт Мартин «Чистый код»
  3. Мартин Фаулер «Рефакторинг. Улучшение существующего кода»
сохранить ссылку