Пересмотренный принцип DRY: хождение по канату повторного использования кода

Пересмотренный принцип DRY: хождение по канату повторного использования кода

Мы все бывали в такой ситуации — смотрели на два почти одинаковых блока кода, как растерянные близнецы на семейном воссоединении: «Разве ты не Билли?» «Нет, я Боб!» «Но у вас обоих одинаковый нос!» Такое космическое дублирование кода — именно то, что пытается предотвратить принцип DRY (Don’t Repeat Yourself). Давайте разберёмся, как применять этот принцип, не превращая нашу кодовую базу в излишне усложнённую машину Рубе Голдберга. Принцип DRY демистифицирован DRY — это не просто предотвращение копирования и вставки, это управление знаниями....

May 30, 2025 · 4 min · 662 words · Maxim Zhirnov
The Case Against Code Reuse: When Writing from Scratch is Better

The Case Against Code Reuse: When Writing from Scratch is Better

We’ve all been there - staring at a 10-year-old utility class that’s become the Frankenstein’s monster of your codebase. “But it’s reusable!” your teammate insists, as you discover it now contains 47 optional parameters and a hardcoded reference to IE6. Let’s explore when writing fresh code might save your sanity (and your stack). The Hidden Costs of Reuse 1. The Overgeneralization Trap Reusable code often starts with good intentions: // The "Swiss Army Knife" string processor function processText( input: string, options: { trim?...

May 27, 2025 · 3 min · 513 words · Maxim Zhirnov
Аргументы против повторного использования кода: Лучше писать с нуля

Аргументы против повторного использования кода: Лучше писать с нуля

Мы все бывали в такой ситуации — смотрели на утилитный класс десятилетней давности, который стал монстром Франкенштейна в вашей кодовой базе. «Но он же переиспользуемый!» — настаивает ваш коллега, пока вы обнаруживаете, что теперь в нём 47 необязательных параметров и жёсткая привязка к IE6. Давайте разберёмся, когда написание нового кода может спасти ваше душевное равновесие (и стек). Скрытые затраты на переиспользование 1. Ловушка чрезмерной обобщённости Переиспользуемый код часто начинается с благих намерений:...

May 27, 2025 · 3 min · 523 words · Maxim Zhirnov
Why Your Obsession with Code Optimization is Like Tuning a Ferrari to Grocery Shop

Why Your Obsession with Code Optimization is Like Tuning a Ferrari to Grocery Shop

Picture this: You’re in a code review, casually sipping your fourth coffee of the morning, when someone drops this gem: “Why use a list comprehension here? Dictionary lookups are O(1)!” Meanwhile, the method in question handles three items max. Congratulations - you’ve just witnessed premature optimization in its natural habitat. The High Cost of Early Optimization Let’s start with a horror story you might recognize: # The "Optimized" Approach results = [] for i in range(0, len(data), 1): temp = process(data[i]) results....

May 24, 2025 · 3 min · 574 words · Maxim Zhirnov
Почему ваша одержимость оптимизацией кода подобна тюнингу Ferrari для продуктового магазина

Почему ваша одержимость оптимизацией кода подобна тюнингу Ferrari для продуктового магазина

Представьте: вы на code review, с четвёртой чашкой кофе за утро в руках, и тут кто-то бросает такую фразу: «Зачем здесь использовать списковое включение? Поиск по словарю выполняется за O(1)!» Между тем рассматриваемый метод обрабатывает максимум три элемента. Поздравляем — вы только что стали свидетелем преждевременной оптимизации в естественной среде обитания. Высокая цена ранней оптимизации Начнём с истории, которую вы, возможно, узнаете: # «Оптимизированный» подход results = [] for i in range(0, len(data), 1): temp = process(data[i]) results....

May 24, 2025 · 3 min · 567 words · Maxim Zhirnov