Энумсрач

The employer

Новичок
Автор оригинала: grigori
а кто-то здесь говорит о документообороте?
А о чем? Тут апеллируют к тому, что серьезные проекты требуют enum'ов в половине таблиц.
Или я как-то не так понимаю серьезность, или давайте уже поговорим в том числе о документообороте.

Например, о такой прикольной задаче как передача прав на подписание документов в случае отсутствия людей на рабочем месте (по причине болезней, командировок. отпусков - и это еще не говоря о ситуации с равными прравами подписи).


Автор оригинала: grigori
> справочник состояний, фиксирующий в том числе возможные переходы и возможные операции

Знаешь анекдот про верблюжонка с мамой в зоопарке?
"А зачем нам все эти навороты?"
Знаю, кто ж этот баян не знает. Но тут же ссылаются на действительно сложные задачи, выходящие далеко за рамки детской пеесочницы или уютной клетки в зоопарке.

В противном случае навороты (как и "оберточки под mysql") не нужны - три с половиной запроса можно без всего этого писать, нет?

Автор оригинала: grigori
>Это резко упрощает программный код.
С 10 строк до 7?
Зависит от размеров switch в твоем коде (или размеров бороды из if...else if...else if...).

Борьба идет за то, чтобы из таких вот switch убрать всю бизнес-специфичную логику, оставить только интерпретатор некоего языка (или, в других терминах, реализацию некоего конечного автомата, с переходами под воздействием входных данных). Вот в чем упрощение.

То ли ты включаешь логику расчета возможных действий в код, в виде if или switch, и потом при всех изменениях логики вносишь изменения в код (рискуя при этом возникновением неочевидных "дыр" в логике - например, случайным предоставлением лишних возможностей тем, кто таких возможностей иметь не дложен). То ли ты описываешь правила взаимодействия объектов и правила расчета полномочий - один раз. И дальше в рамках этого "метаязыка" описываешь реальные взаимоотношения объектов предметной области.

Слушай, ну общее место уже давно. Мировой тренд. И оно не пустом месте же родилось.

Автор оригинала: grigori
>Любое более-менее сложное
Предоставь критерий определения границы сложности и "достаточности развития взаимосвязей", требующей браузер объектов, пожалуйста.
Критерий? Для чего, извини? Это вопрос скорее дисциплины разработки - как использование системы контроля версий или багтрекера. Нет критерия. который можно механистически применить и сказать: "'этому проекту багтрекер не требуется". Скорее, это вопрос личных ощущений и зрелости исполнителя.

-~{}~ 26.07.09 19:36:

Автор оригинала: grigori
Большинство из нас пишет (условно) по 5 похожих магазинов за $1500 каждый, а не ERP АвтоВАЗа.
Что кто пишет - это индивидуальный выбор. К примеру, у нас есть несколько внедренных систем управления деятельностью предприятия. Как подсистема в них присутствует собственная система управления проектами.

Кстати, заказывают эти магазины в основном те, кто не в курсе, что можно просто арендовать хостинг с готовым скриптом долларов за сто в год. К нам регулярно обращаются с просьбой написать какой-нибудь магазинчик, мы всех отправляем к готовым решениям.
 

korchasa

LIMB infected
Автор оригинала: The employer
А о чем? Тут апеллируют к тому, что серьезные проекты требуют enum'ов в половине таблиц.
Или я как-то не так понимаю серьезность, или давайте уже поговорим в том числе о документообороте.
К этому апеллировал один совершенно отдельный человек. С таким же успехом можно апеллировать к разделению таблиц по этому самому полю. Это даже интереснее - хотя бы сильные различия в подходах есть.

Автор оригинала: The employer
Борьба идет за то, чтобы из таких вот switch убрать всю бизнес-специфичную логику, оставить только интерпретатор некоего языка (или, в других терминах, реализацию некоего конечного автомата, с переходами под воздействием входных данных). Вот в чем упрощение.
Если карту переходов писать в файл, то сильных различий в коде не будет. Будет меньшая сложность данных, меньшее количество запросов и невозможность (без костылей) сделать изменение матриц администратором.

Автор оригинала: The employer
Критерий? Для чего, извини? Это вопрос скорее дисциплины разработки - как использование системы контроля версий или багтрекера. Нет критерия. который можно механистически применить и сказать: "'этому проекту багтрекер не требуется". Скорее, это вопрос личных ощущений и зрелости исполнителя.
Это не вопрос дисциплины, это вопрос требований. Так же, как и система контроля версий и багтрекер. Даже если вы не используете специальное ПО для багтрекинга, вы все равно запоминаете, что нужно сделать. Ну или на бумажку записываете. Так и тут: совсем не всегда необходима такая фича, как добавление новых статусов.
 

The employer

Новичок
Автор оригинала: korchasa
Это не вопрос дисциплины, это вопрос требований. Так же, как и система контроля версий и багтрекер. Даже если вы не используете специальное ПО для багтрекинга, вы все равно запоминаете, что нужно сделать. Ну или на бумажку записываете. Так и тут: совсем не всегда необходима такая фича, как добавление новых статусов.
Каких требований? Это служебная вещь, примерно как логирование ошибок или юнит-тесты. Или как использование багтрекера.

Если тебе достаточно писать на бумажку, или ты вручную запросами или смастеренными вьюхами получаешь достаточную для тебя картину объектов в БД - так и не ставь багтрекер/не делай браузер объектов. Но если у компании нормальный процесс разработки, то багтрекер дается просто на старте проекта и ты ОБЯЗАН им пользоваться. А в других конторах могут оставлять этот момент на выбор разработчикам. Бог им судья.
 

korchasa

LIMB infected
Автор оригинала: The employer
Я не очень понял - а чем состоит твой тезис? Что ты подстверждаешь, или что ты опровергаешь из того я писал? (спрашиваю по той причине что ты вроде бы мне отвечаешь, так что наверное этот комментарий имеет отношение к тому о чем я писал, хотя на первый взгляд это и не очевидно).
Это я относительно словосочетаний "нормальном приложении", "всегда", "никогда" и прочим крайностям. Надо же чем-то заниматься, пока подкасты слушаешь.

Автор оригинала: The employer
Каких требований? Это служебная вещь, примерно как логирование ошибок или юнит-тесты. Или как использование багтрекера.
Мне почему-то кажется, что все служебные вещи должны либо приносить бабло, либо уменьшать риски по потере бабла. А не внедряться просто потому что "так надо".

Автор оригинала: The employer
Если тебе достаточно писать на бумажку, или ты вручную запросами или смастеренными вьюхами получаешь достаточную для тебя картину объектов в БД - так и не ставь багтрекер/не делай браузер объектов. Но если у компании нормальный процесс разработки, то багтрекер дается просто на старте проекта и ты ОБЯЗАН им пользоваться. А в других конторах могут оставлять этот момент на выбор разработчикам. Бог им судья.
Ну вот, нет у нас отдельного багтрекера(жиры с головой хватает), и браузера всего подряд (только по требованию заказчика с заточкой под типичные операции), и юнит тесты с целью уменьшения стоимости делаются только для критических и сложных кусков, приемочных тестов вообще нет, как класса, потому, что заказчик не хочет платить, и проверяет все сам - ручками. Все? Процесс разработки плохой?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Процесс разработки плохой?
Да. Потому что заказчик ничего общего с процессом разработки не имеет. Процесс разработки хромает у вас, а не у заказчика.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
слова "серьезный" на 1й странице нет. вообще.
"enum-ы в половине таблиц" удобно ставить в обычных проектах

>арендовать хостинг с готовым скриптом долларов за сто в год.
для магазина бижутерии с шикарным уникальным интерфейсом? :)

"Страшно далеки вы от народа" (С)Ленин

о том, как из модели убрать "бороду из if...else if...else if..." при подготовке запроса insert - думаю давно
 

The employer

Новичок
Автор оригинала: korchasa
Процесс разработки плохой?
Хуже чем мог бы быть, imho. Да, положа руку на сердце, ты ведь и сам это знаешь, верно?

У нас тоже процесс несовершенен, мы об этом знаем и работаем над его совершенствованием. Потому что если занимать позицию "заказчик не просит, так что и не надо" - это перекрывает пути на более высокий уровень, где заказчику уже надо. Иными словами - не нужно ждать пока появится заказчик, готовый платить за приемочные тесты. Потому что тогда есть серьезный шанс, что такой заказчик не появится вовсе.

Автор оригинала: grigori
>арендовать хостинг с готовым скриптом долларов за сто в год.
для магазина бижутерии с шикарным уникальным интерфейсом? :)

"Страшно далеки вы от народа" (С)Ленин
Я допускаю, что есть такие интернет-магазины, для которых какой-нибудь шоп-скрипт или любая поделка на основе ос коммерс не подходит. Но мало таких, если мерять в процентах от общего количества.

Ну правда, большинство интернет-магазинов уже давно не представляют собой ноу-хау.

-~{}~ 26.07.09 21:39:

Автор оригинала: grigori
о том, как из модели убрать "бороду из if...else if...else if..." при подготовке запроса insert - думаю давно
спасибо за подсказки
Вот да, вот это самое интересное в теме. Буду рад чем-то помочь, если смогу.
 

korchasa

LIMB infected
Автор оригинала: флоппик
Да. Потому что заказчик ничего общего с процессом разработки не имеет. Процесс разработки хромает у вас, а не у заказчика.
Конечно не имеет. Он же всего лишь за него платит. С чего бы ему иметь отношение.

Автор оригинала: The employer
Хуже чем мог бы быть, imho. Да, положа руку на сердце, ты ведь и сам это знаешь, верно?

У нас тоже процесс несовершенен, мы об этом знаем и работаем над его совершенствованием. Потому что если занимать позицию "заказчик не просит, так что и не надо" - это перекрывает пути на более высокий уровень, где заказчику уже надо. Иными словами - не нужно ждать пока появится заказчик, готовый платить за приемочные тесты. Потому что тогда есть серьезный шанс, что такой заказчик не появится вовсе.
Я писал про конкретный проект, а не о том, что мы можем в принципе. Тут не случай "заказчик не просит", тут "заказчику предложены варианты, и он выбрал более рисковый для себя, но более дешевый". Т.е. заказчик примерно понимает уровень качества, получаемый на выходе, и согласен с ним (в отношении юнитов и приемочных тестов).
ЗЫ: Приемочные тесты для веба это, ИМХО, вообще отдельная и сильно недешевая песня. Я таких проекта видел 3 или 4 штуки, и везде приемочные тесты (Selenium RC и все такое), ИМХО, не оправдали вложений, из-за высокой стоимости написания и поддержки (не смотря на всякие Selenium IDE и сторонние продукты). Со всякими аяксами и богатым JS постоянно тыкались в детские грабельки.
 

StUV

Rotaredom
а зачем "энумсрач" выбросили в помойку?.. =)
имхо, ему вполне место в БД или оффтопе

-~{}~ 27.07.09 11:00:

The employer
Да только вот посмотрев в базу ты так и не сможешь дать точный ответ на вопрос - а что же этот конкретный пользователь может делать. имея статус, например, 'varified'. Чтобы такой ответ дать, тебе придется "в уме" сложить логику приложения (тот самый 'where status in...', причем везде где такое встречается, с разными комбинациями в in), и то что ты видишь в БД.
в модель, описанную конечным набором кейсов, всегда можно заложить некоторый конечный набор состояний, комбинаций которых достаточно для описания этих кейсов.
добавив к этому интерфейс описания кейсов + динамический скл - можно вполне отделаться "обобщенной логикой" построения запросов вида "... IN ...", с сохранением производительности и без необходимости выноса этой логики в "серверную модель"... - ?

соотсетственно, указанный интерфейс может быть "клиентским редактором состояний/правил переходов" без необходимости "лезть в бд с енум-ами"
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
видимо, кого-то достал словесный понос
вычистить бы...
 

StUV

Rotaredom
вынесу в бд
когда у кого-нить появится время - вычистим...
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
приемочные тесты не оправдали вложений, из-за высокой стоимости написания и поддержки (не смотря на всякие Selenium IDE и сторонние продукты). Со всякими аяксами и богатым JS постоянно тыкались в детские грабельки.
меня тоже мучает эта мысль
хочется, а в бюджет не вписывается

думаю, стажеров заставить писать тесты для дисциплины, чтоб говнокода меньше было
 

korchasa

LIMB infected
Автор оригинала: grigori
думаю, стажеров заставить писать тесты для дисциплины, чтоб говнокода меньше было
А как это говнокод уменьшит? Там же все к окошкам, полям да кнопочкам сводится. До кода, как до луны
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
korchasa
был у меня такой опыт
те части, которые писал человек с тестами, пошли в работу без проблем (только он жаловался, что нудно)
те, что были без тестов - пришлось переписать

-~{}~ 28.07.09 17:39:

>когда у кого-нить появится время - вычистим...
предлагаю отнестись к этой интесной теме теме, как к статье на википедии и подправить/подчистить, оставив дело :)
 

korchasa

LIMB infected
Автор оригинала: grigori
korchasa
был у меня такой опыт
те части, которые писал челвоек с тестами, пошли в работу без проблем (только он жаловался, что нужно)
те, что были без тестов - пришлось переписать
Мне кажется тесты это не причина хорошего кода, следствие качеств человека, умения предусматривать всякие исключительные ситуации.

Автор оригинала: grigori
предлагаю отнестись к этой интесной, но загаженой теме, как к статье на википедии
Как в русском сегменте? Поставить на удаление за малую значимость и пиар? Они вроде со всеми так делают :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>тесты это не причина хорошего кода, следствие качеств
ну конечно :)
по началу может быть полезно установить внешнюю дисциплину, для правильного алгоритма мышления
 
Сверху