Всем привет! В этой статье я хочу затронуть тему плохого кода и рассказать о некоторых признаках плохого кода. Тема важности написания хорошего кода уже поднималась на этой канале, поэтому я хочу ее продолжить и дать вам практические примеры плохого кода. После прочтения этой статьи вы сможете находить плохо написанный код, а так же исправлять его.
Умение писать чистый код — тяжелая работа.
Чистый код. Создание, анализ и рефакторинг
Меня зовут Антон. Я занимаюсь front-end разработкой и сейчас я расскажу вам о признаках плохого кода.
Слишком короткие имена переменных
Однобуквенную переменную тяжело найти в коде. Никто не сможет найти её, используя функцию «Поиск» текстового редактора.Ведь будет выделять все совпадения букв в коде. Кроме того, однобуквенные переменные не несут никакого смысла и не дают понимания о значении переменной.
Исключением являются переменные j,i,k, которые принято использовать в циклах.
Использование русских слов в названии переменных
В крупных проектах часто приходится работать с международной командой. И никто не хочется догадываться, что значение переменная "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{
...
}
}
Глобальные переменные
Использование глобальных переменных без необходимости загрязняет область видимости, что очень плохо сказывается на выполняемой программе. Лучше использовать локальную переменную, если есть такая возможность.
Основные плюсы использования локальных переменных:
- Меньше ошибок и неожиданных результатов.
- Когда вы получаете ошибки, то их легко найти.
- Серьезное упрощение рефакторинга кода.
- Другим программистам в сотни раз сложнее читать ваш код, когда в нем повсеместно применены глобальные переменные.
Взаимозависимые функции
Код весьма плох, когда функции выполняются исключительно в строгом порядке. Рассмотрим пример:
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