Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: don't repeat yourself / copy and paste programming
On Wed, Nov 23, 2011 at 8:29 PM, Gena Makhomed <gmm@xxxxxxxxx> 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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|