.RU

Как работать с системой отслеживания ошибок - Закон бой-скаутов Роберт Мартин Robert C. Martin «Uncle Bob»


^ Как работать с системой отслеживания ошибок
Мэтт Доар (Matt Doar)

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

В хорошем отчете об ошибке должны быть описаны три вещи:

Объем и качество информации, помещенной в отчет, в такой же мере характеризует составителя, как и саму ошибку. Короткий злой отчет («Эта функция – отстой!») мало что сообщает разработчикам помимо того, что у вас было плохое настроение. Отчет, содержащий широкий контекст происшедшего, облегчает воспроизведение ошибки и вызывает к себе внимание, даже если это грозит задержкой релиза.

Отчет об ошибке похож на беседу, и всю ее, с самого начала, может видеть каждый. Не ругайтесь и не отрицайте самое существование ошибки. Лучше просите дополнительную информацию или ищите, что вы упустили.

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

Не перегружайте поля отчета данными для личного пользования. Добавив «ВАЖНО:» к теме сообщения, вы, возможно, облегчите себе сортировку результатов для какого-то отчета, но это добавление станут копировать другие и обязательно с ошибкой, или его понадобится удалить для другого отчета. Лучше использовать новое значение или новое поле и описать его назначение, чтобы другим не пришлось повторяться.

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

Наконец, не забывайте, что сообщение об ошибке не может служить стандартной единицей измерения труда – точно так же, как строка кода не может быть точной оценкой потраченных усилий.
^ Улучшайте код, сокращая его
Пит Гудлиф (Pete Goodliffe)

Меньше – значит больше. Это избитая короткая максима, но иногда она действительно оправдана.

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

Мы писали программное обеспечение, следуя принципам экстремального программирования, в том числе YAGNI (You Aren’t Gonna Need It – «Вам это не понадобится»). Но человеческая природа несовершенна, и в ряде мест мы оказались недостаточно последовательны.

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

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

Простой и вполне удовлетворительный результат.

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

Так над чем вы сейчас работаете? Это действительно нужно?
^ Установи меня!
Маркус Бейкер (Marcus Baker)

Мне нисколько не интересна ваша программа.

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

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

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

Первое препятствие – инсталляция. Думаете, что эта проблема невелика? Тогда загляните в свою папку загруженных файлов. Куча файлов .tar и .zip, верно? Какую часть из них вы распаковали? Сколько установили? У меня, например, лишь третья часть их не служит простым балластом для жесткого диска.

Даже если я хочу получить обслуживание на дому, я не желаю, чтобы вы входили в мой дом без приглашения. Прежде чем набрать install, я бы хотел точно знать, где вы собираетесь размещать свои данные. Это мой компьютер, и я хочу, по возможности, соблюдать на нем порядок. Я хочу также иметь возможность удалить вашу программу в тот миг, когда разочаруюсь в ней. Если мне покажется, что это невозможно, я просто не буду ее устанавливать. Моя машина работает стабильно, и я хочу, чтобы так было и впредь.

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

Вероятно, я захочу прочесть или записать файл. Я не хочу создавать проект, импортировать каталоги или сообщать вам свой почтовый адрес. Если все работает, переходим к учебнику.

Если ваше программное обеспечение – это библиотека, я продолжаю читать вашу веб-страницу в поисках краткого руководства. Мне нужно что-то подобное «Hello world» в пяти незамысловатых строках кода, и чтобы результат был точно таким, как описывает ваш веб-сайт. Никаких огромных файлов XML или шаблонов, которые нужно заполнить – лишь один маленький скрипт. Не забывайте, что я также загрузил среду, предлагаемую вашим конкурентом. Того самого, который на всех форумах твердит, насколько его продукт лучше вашего. Если все работает, переходим к учебнику.

Насколько я понимаю, учебник существует? И написан понятным для меня языком?

И если в учебнике говорится о моей проблеме, я приободряюсь. Теперь, когда я читаю о том, что я смогу делать, мне становится интересно и даже увлекательно. Я откидываюсь в кресле и прихлебываю чай – я ведь уже говорил, что живу в Великобритании? – и теперь буду опробовать ваши примеры и учиться пользоваться вашим творением. Если оно решит мои проблемы, я пошлю вам благодарственное письмо. Я буду также посылать сообщения об ошибках, если произойдут аварии, и предложения по новым функциям. Я даже расскажу своим друзьям, что ваша программа лучше других, даже если не опробовал эти другие. И все потому, что вы с таким вниманием отнеслись к моим первым робким шагам.

И как только я мог усомниться в вас?

kalendarno-tematicheskoe-planirovanie-po-literature-klass-8.html
kalendarno-tematicheskoe-planirovanie-po-literature-prikaz-ot-20-g-rabochaya-uchebnaya-programma-po-literature-naimenovanie.html
kalendarno-tematicheskoe-planirovanie-po-literature-v-9-klasse-avtor-uchebnika-kurdyumova-t-f.html
kalendarno-tematicheskoe-planirovanie-po-literaturnomu-chteniyu-v-1-klasse.html
kalendarno-tematicheskoe-planirovanie-po-matematike-rabochaya-uchebnaya-programma-na-2011-2012-uchebnij-god-klass.html
kalendarno-tematicheskoe-planirovanie-po-obshestvoznaniyu-vklyuchaya-ekonomiku-10-klass.html
  • knowledge.bystrickaya.ru/metodicheskie-ukazaniya-po-vipolneniyu-kursovoj-raboti-po-discipline-proizvodstvo-produkcii-zhivotnovodstva-dlya-studentov-ochnoj-i-zaochnoj-formi-obucheniya-instituta.html
  • gramota.bystrickaya.ru/zadanie-34-radioaktivnost-seminar-uchebno-metodicheskoe-posobie-minsk-2004-udk-577-3075-8.html
  • writing.bystrickaya.ru/effektivnost-deyatelnosti-firmi-v-rinochnoj-ekonomike.html
  • holiday.bystrickaya.ru/na-rossijskom-rinke-dorozhayut-vse-zernovie-i-dovolno-rovnimi-tempami-eksperti-rossijskaya-gazeta19-07-2010-g-2010-gradus-trevogi.html
  • lesson.bystrickaya.ru/rabochaya-programma-dlya-studentov-ii-i-iii-kursa-specialnostej.html
  • write.bystrickaya.ru/glava-5--apostol-pavel-istoriya-hristianskoj-cerkvi-tom-1.html
  • uchit.bystrickaya.ru/trebovaniya-k-uchastnikam-podtverzhdenie-sootvetstviya-predyavlyaemim-trebovaniyam-tehnicheskoe-zadanie-na-okazanie-uslug-7-proekt-dogovora-9.html
  • upbringing.bystrickaya.ru/lekciya-11-informacionnie-aspekti-sovershenstvovaniya-voenno-tehnicheskogo-sotrudnichestva.html
  • uchenik.bystrickaya.ru/didakticheskaya-igra-kak-sredstvo-aktivizacii-poznavatelnoj-deyatelnosti-mladshih-shkolnikov-na-urokah-matematiki.html
  • report.bystrickaya.ru/kalinauskas-igop-duhovnoe-soobshestvo-stranica-41.html
  • notebook.bystrickaya.ru/i-organizacionno-pravovoe-obespechenie-obrazovatel-noj-deyatelnosti.html
  • uchenik.bystrickaya.ru/analiz-metodov-i-sposobov-obshedisciplinarnoj-dressirovki-sobak.html
  • exchangerate.bystrickaya.ru/arbitrazhnij-process.html
  • lesson.bystrickaya.ru/praktika-ocenki-rinochnoj-stoimosti-transportnih-sredstv-na-primere-traktora-dt-75.html
  • znaniya.bystrickaya.ru/rabochaya-programma-disciplini-modulya-opublikovana-na-sajte-tyumgu-mifi-i-legendi-narodov-mira-elektronnij-resurs-rezhim-dostupa.html
  • bukva.bystrickaya.ru/planirovanie-urokov-vneklassnogo-chteniya-v-srednih-klassah.html
  • urok.bystrickaya.ru/prikaz-ot-24-avgusta-2007-g-n-74n-ob-utverzhdenii-ukazanij-o-poryadke-primeneniya-byudzhetnoj-klassifikacii-rossijskoj-federacii-stranica-46.html
  • studies.bystrickaya.ru/avtorskoe-svidetelstvo-sssr-n-1599477-kl-e-02d-556-1988.html
  • ekzamen.bystrickaya.ru/sekciya-lingvistika-priglasitelnij-bilet-i-programma-chast-2-gumanitarnie-disciplini-samara-2011-sopredsedateli.html
  • knowledge.bystrickaya.ru/nacionalnie-osobennosti-rechevogo-etiketa.html
  • uchebnik.bystrickaya.ru/ustnij-zhurnal-viktorini.html
  • university.bystrickaya.ru/glava-1-maxwell-maltz-psycho-cybernetics.html
  • kolledzh.bystrickaya.ru/5-ocenivanie-urovnya-sformirovannosti-metodika-razrabotki-fondov-ocenochnih-sredstv-osnovnoj-professionalnoj-obrazovatelnoj.html
  • kolledzh.bystrickaya.ru/avtomatizaciya-proektirovaniya-intellektualnih-informacionnih-tehnologij-metodom-geneticheskogo-programmirovaniya1.html
  • kolledzh.bystrickaya.ru/5-primenenie-kauchuka-posobie-dlya-studentov-gorno-altajsk-2007.html
  • pisat.bystrickaya.ru/tema-43-administrativnie-pravonarusheniyav-oblasti-predprinimatelskoj-deyatelnosti.html
  • write.bystrickaya.ru/glava-sedmaya-simfoniya-fa-minor-cvetovoj-tonalnosti-4750-myu-pervaya-zheleznaya-zvezda-glava-vtoraya-epsilon-tukana.html
  • letter.bystrickaya.ru/napravlennaya-fantaziya-puteshestvie-v-neizvestnoe-istochnik-materialov-sajt-voronezhskogo-centra-nlp-tehnologij.html
  • report.bystrickaya.ru/katerina.html
  • pisat.bystrickaya.ru/strahovaya-medicinskaya-kompaniya-medika-vostok-g-krasnoyarsk-v-v-abojmov-upravlenie-sistemoj-medicinskogo.html
  • paragraph.bystrickaya.ru/lingvokognitivnie-i-kulturologicheskie-osobennosti-nauchnogo-diskursa-na-materiale-matematicheskih-i-medicinskih-terminov-eponimov.html
  • universitet.bystrickaya.ru/teoriya-gosudarstva-i-prava-osnovnaya-obrazovatelnaya-programma-visshego-professionalnogo-obrazovaniya-napravlenie-podgotovki.html
  • tetrad.bystrickaya.ru/v-v-menshikov-laboratoriya-problem-kliniko-laboratornoj-diagnostiki.html
  • university.bystrickaya.ru/glava-7-preparirovannaya-vishnya-93-zaveduyushaya-redakciej-vedushij-redaktor-hudozhnik-korrektor-verstka-v-machishkina.html
  • writing.bystrickaya.ru/energosberegayushie-tehnologii-studenti-slushateli-i-kursanti-vuzov-rossijskoj-federacii-i-stran-sng-nagrazhdennie.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.