Welcome! Log In Create A New Profile

Advanced

Re: don't repeat yourself / copy and paste programming

November 24, 2011 03:18AM
On Wed, Nov 23, 2011 at 08:29:00PM +0200, Gena Makhomed wrote:
> On 23.11.2011 18:38, Igor Sysoev wrote:
>
> >> даже при 50-100 сайтов неудобно делать много include на каждый сайт,
> >> гораздо удобнее все-таки подход "1 сайт == 1 конфигурационный файл".
>
> >> но в этом случае получается много copy/paste и нарушение принципа
> >> don't repeat yourself, что приводит к снижению скорости работы
> >> администратора по сопровождению такого дублированного конфига.
>
> > Спасибо, я на эти don't repeat yourself насмотрелся. Больше не хочу.
> > Нужно критически подходить к приницпам.
>
> все-таки DRY - это достаточно важный принцип, и он соблюдается
> даже в исходниках nginx - общие части кода выносятся в макросы
> или в отдельные функции, и там нет дублирования через copy/paste.
>
> в конфигах nginx например, директивы "include fastcgi.conf;"
> или "include fastcgi_params;" встречаются с той же целью,
> насколько я понимаю - избежать лишнего дублирования кода.
>
> мне очень трудно критиковать принцип DRY / SSOT, потому что его
> противоположностью является чрезмерное использование copy/paste,
> что в случае программирования приводит к т.е. "индусскому коду".

DRY - это миф. Есть два подхода к решению задач - выпиливание лобзиком
и квадратно-гнездовой метод. Обычно продукт, выпиленный лобзиком,
со стороны выглядит как образец DRY. Однако, если заглянуть в
репозитарий, то можно увидить, сколько времени ушло на выпиливание DRY.
Там будет сплошной repeat: repeat немного по-другому, возврат к прежнему
repeat и так далее. Мне почему-то кажется, что 99% админов, настраивающих
nginx, не хотят выпиливать лобзиком. Им нужно сделать это по-быстрее,
затратив минимум мозговых усилий. Собственно, это видно уже по началу
настройки - а давайте-ка всё, чего у нас нет, будет обрабатывать /index.php,
а сам /index.php будет обрабатывать ~\.php$. Причём лучше, чтобы
так было для всех сайтов, а то неохота возиться. В дальнейшем желание
выпиливать лобзиком так и не появляется, а вот делать по-быстрому уже
не получается - зависимости множаться и конфигурация превращается
в стройную систему костылей и подпорок.

Поэтому nginx предлагает конфигурировать квадратно-гнездовым методом
со сложностью O(1), а не экспоненциальной. Да в начале писать немного
больше, но это объем редактирования будет постоянен.


--
Игорь Сысоев
http://sysoev.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

PHP и try_files

Serguei I. Ivantsov November 23, 2011 04:24AM

Re: PHP и try_files

Rush November 23, 2011 04:58AM

Re: PHP и try_files

Serguei I. Ivantsov November 23, 2011 05:04AM

Re: PHP и try_files

Rush November 23, 2011 05:24AM

Re: PHP и try_files

Serguei I. Ivantsov November 23, 2011 05:34AM

Re: PHP и try_files

Denis F. Latypoff November 23, 2011 05:42AM

Re: PHP и try_files

Serguei I. Ivantsov November 23, 2011 05:52AM

don't repeat yourself / copy and paste programming

Gena Makhomed November 23, 2011 06:14AM

Re: don't repeat yourself / copy and paste programming

Rush November 23, 2011 06:30AM

Re: don't repeat yourself / copy and paste programming

Olexander Shtepa November 23, 2011 06:52AM

Re: don't repeat yourself / copy and paste programming

Алексей Малов November 25, 2011 02:42AM

Re: don't repeat yourself / copy and paste programming

Olexander Shtepa November 25, 2011 06:48AM

Re: don't repeat yourself / copy and paste programming

Denis F. Latypoff November 23, 2011 06:42AM

Re: don't repeat yourself / copy and paste programming

Gena Makhomed November 23, 2011 07:02AM

Re: don't repeat yourself / copy and paste programming

Denis F. Latypoff November 23, 2011 07:14AM

Re: don't repeat yourself / copy and paste programming

Serguei I. Ivantsov November 23, 2011 07:48AM

Re: don't repeat yourself / copy and paste programming

Igor Sysoev November 23, 2011 11:36AM

Re: don't repeat yourself / copy and paste programming

Daniel Podolsky November 23, 2011 02:22PM

Re: don't repeat yourself / copy and paste programming

Alexandr Gomoliako November 23, 2011 02:26PM

Re: don't repeat yourself / copy and paste programming

Daniel Podolsky November 23, 2011 02:30PM

Re: don't repeat yourself / copy and paste programming

Alexandr Gomoliako November 23, 2011 02:34PM

Re: don't repeat yourself / copy and paste programming

Daniel Podolsky November 23, 2011 02:46PM

Re: don't repeat yourself / copy and paste programming

Alexandr Gomoliako November 23, 2011 03:00PM

nginx + memcache

Дугин Сергей November 23, 2011 08:02PM

Re: nginx + memcache

Sergey Shepelev November 23, 2011 08:38PM

Re: don't repeat yourself / copy and paste programming

Serguei I. Ivantsov November 24, 2011 02:44AM

Re: don't repeat yourself / copy and paste programming

Igor Sysoev November 24, 2011 02:58AM

Re: don't repeat yourself / copy and paste programming

Gena Makhomed November 23, 2011 08:04AM

Re: don't repeat yourself / copy and paste programming

Igor Sysoev November 23, 2011 11:40AM

Re: don't repeat yourself / copy and paste programming

Gena Makhomed November 23, 2011 01:30PM

Re: don't repeat yourself / copy and paste programming

Alexandr Gomoliako November 23, 2011 02:02PM

Re: don't repeat yourself / copy and paste programming

Andrey N. Oktyabrski November 23, 2011 02:08PM

Re: don't repeat yourself / copy and paste programming

Alexandr Gomoliako November 23, 2011 02:10PM

Re: don't repeat yourself / copy and paste programming

Igor Sysoev November 24, 2011 03:18AM

Re: don't repeat yourself / copy and paste programming

Igor Sysoev November 23, 2011 07:36AM

Re: PHP и try_files

Craken November 24, 2011 07:28AM

Re: PHP и try files

Igor Sysoev November 24, 2011 07:32AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 181
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready