YAGNI: основной принцип разработки ПО
YAGNI (You Ain't Gonna Need It) - это принцип, который гласит, что не стоит писать код для функционала, который пока не требуется (и, возможно, никогда не потребуется).
Этот принцип помогает избежать ситуаций, когда разработчики тратят время и ресурсы на то, что может оказаться ненужным в конечном итоге. Добавление нового функционала, который может понадобиться в будущем, звучит заманчиво, но может быть реализовано и тогда, когда появится соответствующая потребность.
Например, возможно, вы хотели бы добавить возможность пользователям вашего сайта сохранять свои настройки и предпочтения для последующей перезагрузки сайта. Однако, если это не является обязательной функциональностью, код для этого может быть написан позже, когда он станет необходимым.
Избегание лишней функциональности может сэкономить время и ресурсы. Например, если разработчик пишет код на Python, то он может быть склонен использовать модуль, который позволяет выполнять сложные вычисления. Однако, если этот модуль нигде не используется, то добавление его в код может только усложнить его и затруднить его понимание.
Вот пример кода, который демонстрирует использование YAGNI-принципа:
# Пример 1: Без применения YAGNI-принципа
def calculate_lcm(num1, num2):
"""
Функция для нахождения наименьшего общего кратного двух чисел.
"""
lcm = 0
for i in range(1, (num1 * num2) + 1):
if i % num1 == 0 and i % num2 == 0:
lcm = i
break
return lcm
def main():
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
lcm = calculate_lcm(num1, num2)
print("НОК чисел", num1, "и", num2, "равен", lcm)
if __name__ == '__main__':
main()
На первый взгляд, этот код может показаться правильным. Однако, если мы внимательно рассмотрим код, то заметим, что он гораздо более сложный, чем это необходимо. В этом случае, мы можем использовать функцию `math.gcd` для нахождения наибольшего общего делителя двух чисел, а затем использовать его для нахождения наименьшего общего кратного.
Вот исправленный код, который при использовании YAGNI-принципа является проще и лучше поддерживается:
# Пример 2: C применением YAGNI-принципа
import math
def calculate_lcm(num1, num2):
"""
Функция для нахождения наименьшего общего кратного двух чисел.
"""
gcd = math.gcd(num1, num2)
lcm = (num1 * num2) // gcd
return lcm
def main():
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
lcm = calculate_lcm(num1, num2)
print("НОК чисел", num1, "и", num2, "равен", lcm)
if __name__ == '__main__':
main()
В этом примере использование YAGNI-принципа помогло нам упростить код и работать более эффективно.