Найти тему
ProWeb

Как выглядит плохой код?

Оглавление

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

Умение писать чистый код — тяжелая работа.
Чистый код. Создание, анализ и рефакторинг

Меня зовут Антон. Я занимаюсь front-end разработкой и сейчас я расскажу вам о признаках плохого кода.

Слишком короткие имена переменных

-2

Однобуквенную переменную тяжело найти в коде. Никто не сможет найти её, используя функцию «Поиск» текстового редактора.Ведь будет выделять все совпадения букв в коде. Кроме того, однобуквенные переменные не несут никакого смысла и не дают понимания о значении переменной.

Исключением являются переменные j,i,k, которые принято использовать в циклах.

Использование русских слов в названии переменных

-3

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

Магические числа

for (int i=0; i<50; i++){
//Do something
}

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

В данном случае число 50 является магическим. Непонятно откуда оно взялось, непонятно что это. Одним словом магия.

Здесь, вынести число 50 в переменную, которая будет давать понимая о значении данного числа.

let wordCount=50;
for (int i=0; i<n; i++){
//Do something
}

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

Спагетти-код

Что такое “спагетти-код”? Это слишком конкретные и длинные условия со множеством проверок и категорий.

Пример спагетти-кода:

if (x === 0) {
...
} else if (x === 50) {
...
} else if (x === 100) {
...
} else if (x > 50) {
...
} else {
...
}

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

Пример сложного условия:

if(a || b && c || f && x == y){
...
}

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

if(x == y){
if(a){
...
} else if(b){
...
}
else{
...
}
}

Глобальные переменные

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

Основные плюсы использования локальных переменных:

  1. Меньше ошибок и неожиданных результатов.
  2. Когда вы получаете ошибки, то их легко найти.
  3. Серьезное упрощение рефакторинга кода.
  4. Другим программистам в сотни раз сложнее читать ваш код, когда в нем повсеместно применены глобальные переменные.

Взаимозависимые функции

-4

Код весьма плох, когда функции выполняются исключительно в строгом порядке. Рассмотрим пример:

start()

begin()

preparing()

end()

Откуда другим программистам знать, что перед процедурой begin() надо вызвать процедуру start()? Есть ли гарантии того,что функции start обработает верно и выполнит свою задачу?

Функции должны работать независимо друг от друга

Решением “на каждый раз” послужит специальный метод-шаблон. Рассмотрим пример:

function getUserFromDB(){

function begin(){
...
}

function preparing(){
...
}

function end(){
...
}

begin()
preparing()
end()
}

Когда все же необходимо вызывать функции по порядку, то пишется одна внешняя функция start(), со множеством внутренних, вроде begin(), preparing() и end(). Кроме того, внешней функции start() присваивается идентификатор, явно отражающий ее функционал.

Заключение

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

На моем канале есть статья посвященная книгам, которые могут лучше писать код.

Пишите в комментариях какие темы вы бы хотели увидеть на этом канале

#it #web #proweb #frontend #программирование #код #code #top