ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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


 




Copyright © Lexa Software, 1996-2009.