don't repeat yourself / copy and paste programming
Alexandr Gomoliako
zzz на zzz.org.ua
Ср Ноя 23 19:01:16 UTC 2011
On Wed, Nov 23, 2011 at 8:29 PM, Gena Makhomed <gmm at csdoc.com> wrote:
> все-таки DRY - это достаточно важный принцип, и он соблюдается
> даже в исходниках nginx - общие части кода выносятся в макросы
> или в отдельные функции, и там нет дублирования через copy/paste.
Не так все просто.
Допустим, есть такая простая программа:
a = 5;
b = 17;
c = a + b;
print c;
a = c;
b = c + 8;
c = a + b;
print c;
Если вынесем "c = a + b; print c" в макрос и назовем его, SUM1,
то получим вот такой код:
a = 5;
b = 17;
SUM1;
a = c;
b = c + 8;
SUM1;
Теперь он стал непонятным и нечитабельным, потому что мы
не видим, что происходит с a, b и c после SUM1.
Чтобы видеть, нам нужно четко знать, куда будет попадать
результат и от каких параметров он зависит, т.е.:
a = 5;
b = 17;
c = SUM1 (a, b);
a = c;
b = c + 8;
c = SUM1 (a, b);
Так что и include в конфиге в общем случае тоже плохо.
Потому что прячет параметры.
Подробная информация о списке рассылки nginx-ru