Если код в данный момент не нужен, не стоит тратить время и силы на его написание. Вам может показаться, что он понадобиться в дальнейшем, поэтому желание создать его заранее будет очень сильным. Тем не менее, есть как минимум две проблемы, которые нужно взять во внимание:
Оптимизировать код заранее – заманчивая идея, не так ли? А теперь подумайте о рисках:
Однажды вы поймете, что обычно скорость кода не играет важной роли. Циклы процессора стоят дешевле рабочих часов. Чтобы не усложнять себе жизнь и не делать дополнительных ошибок, просто увеличьте процессорную мощность, либо подождите немного дольше.
Это распространенная ошибка начинающих разработчиков: часто повторять один и тот же или очень похожий фрагмент кода. Например, нужно открыть файл, а потом прочитать содержимое. Делается этого всего лишь несколькими строками.
Однако если вам понадобиться прочитать другой файл, не нужно писать аналогичный код, тем более копировать предыдущий!
Лучше создайте функцию и тогда получите 2 важных преимущества:
Ценный совет: есть IDE, которые находят дублирующий код и акцентируют на нем внимание разработчика, а иногда даже помогают создать из дубликатов методы и функции.
Ясность намного лучше, чем вычурные технические уловки. Ваша задача – не красоваться, а сделать так, чтобы люди впоследствии читали ваш код без проблем. Позерство выставит вас в невыгодном свете, так что лучше демонстрируйте свои знания, например, в блоге.
Вот наглядный пример такого кода:
test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]
print(max(set(test), key = test.count))
# Как быстро вы поняли, что он делает?
А ведь можно написать его гораздо понятнее, всего лишь разбив еще на пару строк и дополнив комментариями, поясняющими функцию max
.
Всегда стремитесь писать максимально понятный код, чтобы другой программист через время мог легко разобраться с ним, когда понадобиться в срочном порядке исправить ваши недочеты.
Часто модульное тестирование упускают. Должен признаться, что я тоже так делаю. Но вообще не применять его – неправильно.
В самой экстремальной форме программист совершает процесс, называемый “разработка через тестирование” (TDD). В основе этого подхода лежит принцип: сначала сделать модульный тест, и только потом реализовать функцию.
В результате тестируя все создаваемые функции, разработчик тщательно обдумывает их действия и предполагаемый вывод.
Теме экстремального программирования посвящена прекрасная
Данное правило полезно повсюду, а не только в разработке. Так что не усложняйте (тем более намеренно, см. правило 4), а ищите самое простое решение из всех возможных.
Это очень важно во время командной работы.
К примеру, одним нравится такое оформление:
while(true)
{
// комментарий
}
А другие пишут более лаконично:
while(true) {
// комментарий
}
Каждый подход имеет свои преимущества и недостатки. Но главное – это четко придерживаться одного из них. Поэтому, работая в команде, кому-то чаще всего приходится использовать не привычный для себя стиль.
Когда будете выбирать лучшее решение для языка, с которым работаете, учитывайте все его инструменты, особенности и стандарты.
Есть 3 способа, как документировать код:
Что касается комментариев, советуем использовать их как можно реже, т.е. не нужно комментировать очевидное – оставляйте пояснения только в тех местах, где они на самом деле нужны.
Документация бывает очень полезной, так что задумайтесь о GitHub-репозиториях. Сейчас включение файла «README.md» в корневую директорию проекта стало почти стандартной практикой.
Но лучше писать самодокументированный код, хотя это сложнее всего и требует от разработчика большого опыта.
Настоящий профессионал не будет обращаться за помощью при возникновении малейшей трудности. Для начала он попытается найти решение самостоятельно.
Поэтому, прежде чем спросить, сделайте это:
Если решение все еще не найдено, подумайте, куда нужно обратиться:
Это процесс перепроектирования кода, в котором его внешнее поведение остается прежним – меняется только внутренняя структура для облегчения понимания работы программы.
Вот несколько фактов, почему улучшать код нужно: