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
 
 |