Don't repeat yourself, он же DRY, он же «не повторяйся» (а так же есть игра слов, ведь dry в переводе на русский «сухой») — важный принцип программирования. очень важный. Суть простая: зачем писать один и тот же код несколько раз? Напиши один раз. Дословно формулируется следующим образом: «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы». Принцип очень важный и многие вещи, которые есть в программировании, как раз помогают ему следовать. Немного про эти вещи и поговорим.
Циклы
Циклы явно создавались для того, чтобы не писать одно и то же несколько раз. Зачем писать такой код,
print("Привет!")
print("Привет!")
print("Привет!")
print("Привет!")
print("Привет!")
print("Привет!")
когда можно написать просто
for i in range(6):
print("Привет")
?
Вместо того, чтобы 6 раз написать «печатай слово „привет“», мы написали интерпретатору Python «повтори 6 раз: печатай слово „привет“»Или вот ещё пример:
print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
А зачем такое? Вот то ли дело
for i in range(1,6+1):
print(i)
Оба кода выводят числа 1, 2, 3, 4, 5, 6. И во вторых вариантах можно поменять число 6 на любое другое — и количество напечатанного поменяется:
Списки, массивы
Массивы (вместо них используют списки в Python) тоже помогают не повторяться. Вот есть у вас 50 фамилий. Если они записаны в отдельные переменные, то вывести их займёт 50 строчек, если писать отдельными print
fam1 = "Иванов"
fam2 = "Петров"
fam3 = "Сидоров"
fam4 = "Колыванов"
print(fam1)
print(fam2)
print(fam3)
print(fam4)
Можно написать, конечно, по другому, но всё равно придётся расписывать 50 переменных. Все эти fam1, fam2, fam3 и так 50 раз. А если 1000 раз нужно?
К счастью, можно вместо разрозненных переменных собрать это всё в список (массив в других языках) и тогда эту повторяющуюся операцию можно просто расписать с помощью циклов.
fams = ["Иванов", "Петров", "Сидоров", "Колыванов"]
for fam in fams:
print(fam)
Подпрограммы (функции, процедуры)
Циклы позволяют повторять код, который повторяется в одном месте. Но представьте, что у вас большая программа и где-то повторяются одни и те же 10-100-1000 строчек кода. Но каждое повторение в другом месте. Так вот, для того, чтобы не повторять так, а написать всё в одном месте и вставлять потом одной строчкой, и придумали возможность создавать свои подпрограммы — функции/процедуры.
Вот, к примеру, повторяется такой код:
key = input("Введите секретный ключ: ")
if key == RIGHT_KEY:
print("Доступ разрешён")
acsess = True
else:
print("Попытка несанкционированного проникновения!")
print("Группа Альфа уже вылетела на устранение")
access = False
Некая система в ответ на некоторые действия просит подтвердить свой доступ вводом ключа. Только если будете запускать, добавьте в начало строчку
RIGHT_KEY = "123456"
ну или другую какую. Переменная (а точнее, константа) RIGHT_KEY должна быть создана перед началом кода.
Итак, можно эти действия преобразовать в функцию/подпрограмму/процедуру
RIGHT_KEY = "123456"
def proverka():
key = input("Введите секретный ключ: ")
if key == RIGHT_KEY:
print("Доступ разрешён")
acsess = True
else:
print("Попытка несанкционированного проникновения!")
print("Группа Альфа уже вылетела на устранение!")
access = False
''' Здесь описание того, что делает подпрограмма «Проверка» закончилась и начинается основной код'''
print("Тут происходит какой-то код")
proverka()
print("А тут ещё мильон строк кода произошёл")
proverka()
print("А тут ещё пара тысяч операций произошла")
proverka()
Вот. Здесь это самый код загнан в подпрограмму, которая работает в итоге как просто команда proverka(). И вместо 8 строк пишем просто одну команду, одну строчку где удобно.
Объекты и классы
Объект собирает в себе подпрограммы, переменные, массивы и ещё больше упрощает следование принципу DRY.
А классы — это способ не расписывать про кучу объектов одно и то же, если у них набор свойств и действий одинаковый, а тоже это сократить. Подробно раскрывать не буду, так как тема это большая и страшная, достаточно только сказать, что объекты и классы тоже в том числе помогают следовать принципу DRY.
Итого
Вместо того, чтобы писать одно и то же несколько раз, лучше написать её один раз и «упаковать». Для такой упаковки в современных языках программирования есть циклы, подпрограммы, массивы(списки), объекты и классы и другие средства. Такой код короче, понятнее и в нём меньше шансов ошибиться, переписывая одно и то же снова и снова. Принцип такой неповторяемости кода называется DRY.
Замечу также, что в реальной разработке бывают случаи, когда DRY не следуют по тем или иным причинам. Но в иных случаях соблюдайте его.
Понравилась статья? Подписывайтесь, пишите комментарии, ставьте лайки.