Реализование опций по сравнению с [закрытым] устранением ошибки

Попытка проверить ваш образец XML с помощью XSD вызвала некоторые ошибки, поэтому я не смог воспроизвести вашу проблему, а только исправить ошибки вашего XSD. Я использовал команду

xmlstarlet val --err --xsd source.xsd input.xml

для проверки вашего XSD. XSD-1.0, по-видимому, было достаточно для его проверки, поэтому процессор XSD-1.1 не был необходим.


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

Применение вашего XSD к XML приводило к ошибкам, пока я не исправил определение ResidenceStatus. Пока я не могу сказать, происходит ли это из-за вашего процессора XSD.

Но вы можете попытаться исправить определение на

<xs:element name="ResidenceStatus">
  <xs:simpleType>
    <xs:restriction base="normalized">
        <xs:enumeration value="In-state"/>
        <xs:enumeration value="Out-of-state"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

и добавить определение типа normalized в конце корневого уровня вашего xs:schema:

<xs:simpleType name="normalized">
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>
[ 1119] Этот simpleType с именем normalized удалит начальные и конечные пробелы значения элемента, так что перечисление будет совпадать.

П.С.: ваш XSD имел опечатку:
<xs:simpletype> из ResidenceStatus должно было быть <xs:simpleType>.

9
задан Robert Harvey 17 February 2011 в 05:44
поделиться

8 ответов

Я не пишу никаких новых функций, если в моем программном обеспечении есть некоторые нефиксированные ошибки.

Единственная причина, по которой я могу допустить, чтобы ошибка была исправлена ​​в моем программном обеспечении, это что это определенно дорого исправить. В этом случае мы можем изменить это «ошибка» на «известное ограничение» или «известная ошибка», и мы исправляем обратную связь, которую мы даем пользователю, чтобы пользователь точно знал, что происходит и почему ». она не исправлена ​​(см. мое редактирование ниже)

Поэтому, как правило, я трачу все свое время на исправление ошибок, пока QA жалуется на что-то , и все свое время на кодирование, когда это не так! :)

Я делаю это потому, что:

  • Когда программное обеспечение делает много вещей, но случайно падает, у пользователя возникает ощущение, что он не может положиться на программное обеспечение, и вы НИЧЕГО не можете сделать, чтобы это исправить. когда-либо.

  • Когда в программном обеспечении отсутствуют некоторые функции, но он хорошо справляется со своими задачами, пользователь скорее думает: «Это может быть отличное программное обеспечение, слишком плохо, что оно не поддерживает X и Y ... Я проверю» следующий релиз через 6 месяцев ».


Джоэл Спольски написал интересный пост по этому вопросу в своем )

Я делаю это потому, что:

  • Когда программное обеспечение делает много вещей, но случайно падает, у пользователя возникает ощущение, что он не может положиться на программное обеспечение, и вы НИЧЕГО не можете сделать, чтобы это исправить. когда-либо.

  • Когда в программном обеспечении отсутствуют некоторые функции, но он хорошо справляется со своими задачами, пользователь скорее думает: «Это может быть отличное программное обеспечение, слишком плохо, что оно не поддерживает X и Y ... Я проверю» следующий релиз через 6 месяцев ».


Джоэл Спольски написал интересный пост по этому вопросу в своем )

Я делаю это потому, что:

  • Когда программное обеспечение делает много вещей, но случайно падает, у пользователя возникает ощущение, что он не может положиться на программное обеспечение, и вы НИЧЕГО не можете сделать, чтобы это исправить. когда-либо.

  • Когда в программном обеспечении отсутствуют некоторые функции, но он хорошо справляется со своими задачами, пользователь скорее думает: «Это может быть отличное программное обеспечение, слишком плохо, что оно не поддерживает X и Y ... Я проверю» следующий релиз через 6 месяцев ».


Джоэл Спольски написал интересный пост по этому вопросу в своем 12 шагов к лучшему коду .


Отредактируйте, чтобы ответить на комментарии: Если у меня возникают случайные сбои, это определенно ошибка, а не «известное ограничение». Как только я точно знаю, что происходит, и только тогда я могу решить, могу ли я это исправить или нет.

Я скорее думал о следующих ситуациях:

  • ошибка вызвана кодом, который мне не принадлежит (обычно это сторонняя библиотека). Если реализация обходного пути очень сложна, возможно, стоит подождать, пока сторонний поставщик исправит это. Пример из реальной жизни: Clickonce не работает в некоторых ситуациях прокси ... Я ожидаю, что Microsoft, в конце концов, исправит это.

  • Если ошибка в том, что определенная функция работает не во всех ситуациях, и эта функция слишком трудно реализовать в этих конкретных ситуациях, я думаю, что это Можно предупредить пользователя до того, как он использует функцию, которая пытается выполнить не реализованное, а просто аварийное завершение.

11
ответ дан 4 December 2019 в 13:05
поделиться

Я работаю в группе внутри своей компании, которая предполагает создавать «функции» и отвечать на вопросы клиентов. Я склонен тратить больше времени на приоритетные вопросы клиентов (читай: ошибки). Так что я бы сказал, что мое время почти на 100% уходит на исправление ошибок.

Тем не менее, давайте немного прочитаем между строк. Кажется, что этот вопрос является способом сказать: "Ух, я трачу столько времени на исправление ошибок ... хотелось бы больше заниматься разработкой функций". Если это так, я думаю, что вам нужно немного заглянуть в себя.

Как я уже сказал, я трачу почти все свое время на исправление ошибок, связанных с проблемами клиентов, но я также написал множество инструментов, чтобы помочь с этим процессом. , У меня есть все - от специализированных анализаторов журналов до универсальных средств проверки ошибок файла решения Visualstudio. Не говоря уже о некоторых из тех приятных сценариев wndbg, которые я написал для эзотерических точек останова!

Именно таким способом я исполняю это желание работать над «чем-то новым». И в некотором смысле,

2
ответ дан 4 December 2019 в 13:05
поделиться

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

Однако каждый Функция должна быть тщательно протестирована и отлажена, так что вы можете сказать, что 30-40% времени, потраченного на реализацию функции, уйдет на ее отладку.

1
ответ дан 4 December 2019 в 13:05
поделиться

Многие проекты имеют фазу разработки («размораживание кода»), когда активное добавление новых функций происходит одновременно с исправлениями ошибок, и этап «замораживания кода», на котором набор функций заморожен, и 100% работы направлено на доведение числа критических ошибок до 0 (или исправление максимально возможного количества ошибок до установленного срока), поэтому ответ будет зависеть от этапа Проект находится в стадии разработки.

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

1
ответ дан 4 December 2019 в 13:05
поделиться

Это зависит от ошибки.

Это небольшая косметическая проблема, такая как неправильная маркировка или огромный нокаут ошибка, которая портит данные?

Даже если она незначительная или косметическая, вызывает ли она головные боли пользователей, например всплывающее окно, открывающееся не в том месте? Является ли ошибка искажения данных только в Firefox 2 с полной луной (а ваша корпоративная интрасеть - IE 6)?

Хотя хороший вопрос ...

0
ответ дан 4 December 2019 в 13:05
поделиться

Все зависит от типа проекта, над которым я сейчас работаю. Если проект новый, то у нас есть этап, называемый исправлением ошибок, после этапа тестирования. Большинство ошибок там исправляются. (!)

Если это проект сопровождения, то исправление ошибок - это повседневная рутина.

0
ответ дан 4 December 2019 в 13:05
поделиться

Это зависит от проекта: если есть ошибка с ограничением показа, я сосредотачиваюсь на ней, но иногда, когда у меня нет достаточной мотивации, я просто добавляю одну новую классную функцию, чтобы я мог хотя бы поработать над ней вместо того, чтобы ничего не делать.

Это для личных проектов или перед выпуском / исследованием продуктов

0
ответ дан 4 December 2019 в 13:05
поделиться

У меня в голове широкий спектр приоритетов, когда я сортирую свою работу:

  1. Ошибки, влияющие на способность клиента вести бизнес или получать доступ к его данным. Никакая работа не выполняется до тех пор, пока не будут устранены подобные ошибки.
  2. Другие высокоприоритетные ошибки или функции. Обычно это ошибки или улучшения типа «известных проблем», с которыми стало больно сталкиваться и которые требуют изменения кода. Кроме того, функции, запрашиваемые крупными клиентами или потенциальными клиентами, обычно попадают в эту категорию.
  3. Все остальное. Это включает в себя обслуживание, полезные функции и просто общее обслуживание типа царапин на нашей базе кода.

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

1
ответ дан 4 December 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: