golosptic: (Default)
golosptic ([personal profile] golosptic) wrote2011-12-25 07:02 pm

(no subject)

Ковыряю документацию по некоему XML API.
Наткнулся на техничное инженерное решение - два элемента с одинаковым именем в одной ветке. Означают разные вещи. Различаются по порядку следования. Так бы и убил бы, блин.

[identity profile] aljon.livejournal.com 2011-12-25 03:16 pm (UTC)(link)
"два элемента с одинаковым именем в одной ветке"
Мдя...
Впрочем, всякое можно в xml увидеть :)

[identity profile] golosptic.livejournal.com 2011-12-25 03:27 pm (UTC)(link)
Ну вообщем дизайн API у этой системы прямо-таки эпически корявый.

[identity profile] aljon.livejournal.com 2011-12-25 03:46 pm (UTC)(link)
Ну API для меня вообще тёмный лес. Обычно пишу в таких случаях слёзное письмо программистам с простой всё наладить :)
менеджер, фигли :)

[identity profile] golosptic.livejournal.com 2011-12-25 03:50 pm (UTC)(link)
Ну неспециалисту сложно оценить инженерные решения типа 3-значной интерпретации булева поля (в зависимости от его значения или от того, что его вообще нет).

[identity profile] aljon.livejournal.com 2011-12-25 04:14 pm (UTC)(link)
Наш спец меня научил некоторым азам.
По крайней мере, научил как ошибка выглядит :)

А из того, что ты написал - ну ничего не понял :)

[identity profile] aljon.livejournal.com 2011-12-25 04:21 pm (UTC)(link)
А так-то я самым грамотным у нас на работе считаюсь, ну после админов, конечно :)

[identity profile] kincajou.livejournal.com 2011-12-25 04:26 pm (UTC)(link)
трёхзначная логика, ничего страшного

[identity profile] golosptic.livejournal.com 2011-12-25 04:35 pm (UTC)(link)
ничего страшного, только так делать - коряво

[identity profile] grey-olli.livejournal.com 2011-12-25 04:57 pm (UTC)(link)
А собственно как вы собираетесь реализовать поведение по следующему ТЗ: при установленных значениях надо делать как установлено, а если не установлено - спросить пользователя о корректном значении дефолта?

[identity profile] gornal.livejournal.com 2011-12-25 04:59 pm (UTC)(link)
Обязательное к заполнению поле должно иметь три возможных значения со смыслом "yes", "no", "ask".

[identity profile] golosptic.livejournal.com 2011-12-25 05:01 pm (UTC)(link)
Я не буду использовать логическое поле в качестве переключателя, это факт.
Честнее уже сделать либо два логических, либо одно с большим количеством значений.

В обсуждаемой ситуации там переключалось направление передачи (неважно чего) "туда/сюда/в обе стороны".
Так вот, я бы использовал символьный элемент T/S/O.
Хотя бы по той причине, что эту информацию всё равно в БД заносить.
Edited 2011-12-25 17:05 (UTC)

[identity profile] ping-ving.livejournal.com 2011-12-28 03:45 am (UTC)(link)
А вот это жопа.
Вышеописанное (Да/Нет/Узнать) - достаточно прямо реализуется булевым полем с тгдд.
Null для этого и придуман.
Здесь же - три осмысленных значения.

[identity profile] golosptic.livejournal.com 2011-12-28 04:42 am (UTC)(link)
Для чего для "этого"? Null придуман, чтобы БД не вываливалась с ошибкой при попытке прочесть незаполненное значением поле.
Если у программы три осмысленных режима работы - туда/сюда/туда-сюда, то им должны соответствовать три осмысленных значения переключателя режима работы.
(deleted comment)

[identity profile] golosptic.livejournal.com 2011-12-25 04:35 pm (UTC)(link)
всё ок

[identity profile] moonwalker72.livejournal.com 2011-12-25 05:07 pm (UTC)(link)
Ну например в RDL - обычное дело. Просто надо контекст понимать. А если входящий XML - черный ящик, тогда да, возможны проблемы.
Вы-таки не любите массивы :) По происхождению они одноименные переменные, различаемые по индексу.

[identity profile] ping-ving.livejournal.com 2011-12-28 03:46 am (UTC)(link)
В массивах хранятся одинаковые вещи.