.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
  • literature.bystrickaya.ru/bojorots-prikaz-16-02-2011-g-196.html
  • institute.bystrickaya.ru/estestvennie-dvizheniya-cheloveka-lyudmila-martinova.html
  • shpargalka.bystrickaya.ru/vologda-v-vospominaniyah-i-putevih-zapiskah-konec-xviii-nachalo-xx-vv.html
  • prepodavatel.bystrickaya.ru/tarifi-garantirovannie-nomera-i-samaya-svezhaya-informaciya.html
  • ucheba.bystrickaya.ru/poyasnitelnaya-zapiska-cel-kursa-zhivoj-ugolok.html
  • reading.bystrickaya.ru/kondratij-rileev-ivan-susanin-i-p-martos-sozdatel-pamyatnika-mininu-i-pozharskomu-56.html
  • institute.bystrickaya.ru/festival-konkurs-provoditsya-pod-devizom-tvorcheskih-programm-skrtoo-sim-mir-tebe-planeta-zemlya.html
  • diploma.bystrickaya.ru/vnutrifrakcionnaya-rabota-tv-press-sluzhba-frakcii-edinaya-rossiya-gosduma-rf.html
  • esse.bystrickaya.ru/rabochaya-programma-modulya-disciplini-mezhdunarodnoe-pravo.html
  • testyi.bystrickaya.ru/audanini-oblisti-maizi-bar-alani.html
  • ucheba.bystrickaya.ru/prikaz-ministerstva-selskogo-hozyajstva-rossijskoj-federacii-minselhoz-rossii-ot-3-fevralya-2012-g-n-106-g-4-ministr-selskogo-hozyajstva-rf-elena-skrinnik-provela-zasedanie-konsultacionnogo-soveta-5.html
  • uchenik.bystrickaya.ru/95-smertnie-12-let-bernard-verber-mi-bogi.html
  • shpargalka.bystrickaya.ru/vojni-v-konce-zemnoj-istorii-tretya-novosti-s-vostoka.html
  • esse.bystrickaya.ru/razdel-13-2009-uchebno-programmnaya-dokumentaciya-normativnie-dokumenti-v-obrazovanii-uchebno-metodicheskaya-literatura.html
  • textbook.bystrickaya.ru/istoriya-sozdaniya-osobennosti-zhanra-kompozicii-syuzheta-sistema-obrazov-poemi-n-v-gogolya-myortvie-dushi.html
  • control.bystrickaya.ru/departament-po-vzaimodejstviyu-s-o-smi-obzor-sredstv-massovoj-infomacii.html
  • laboratory.bystrickaya.ru/vpk-i-konversiya-raketno-kosmicheskij-kompleks-ukraina-i-tailand-budut-sotrudnichat-v-kosmicheskoj-sfere.html
  • upbringing.bystrickaya.ru/materiali-razrabotani-v-ramkah-programmi-intel-obuchenie-dlya-budushego-pechataetsya-po-resheniyu-redakcionno-izdatelskogo-soveta.html
  • paragraph.bystrickaya.ru/metodicheskie-rekomendacii-prepodavatelyu-uchebno-metodicheskij-kompleks-disciplini-gse-f-01-inostrannij-yazik-anglijskij.html
  • crib.bystrickaya.ru/i-a-goncharov-5-chas-bazovij-uroven.html
  • doklad.bystrickaya.ru/urovni-upravleniya-uroki-amerikanskogo-menedzhmenta.html
  • writing.bystrickaya.ru/ekonomika-indii-3.html
  • lecture.bystrickaya.ru/avtotransportnih-sredstv-metodicheskie-ukazaniya-k-kursovoj-rabote-po-discipline-s-istemi-tehnologiya-i-organizaciya-uslug-avtoservisa-rostov-na-donu-2007-stranica-2.html
  • prepodavatel.bystrickaya.ru/sudebnaya-rech-www-i-u-ru.html
  • bukva.bystrickaya.ru/nahimichili-s-markami-ekonomicheskie-izvestiya-94-07062011-str-4-daniil-nesterov.html
  • kolledzh.bystrickaya.ru/alan-batler-kompyuter-bronzovogo-veka.html
  • otsenki.bystrickaya.ru/reshenie-problem-rukovodstvo-aidspan-po-rolyam-i-obyazannostyam-skk-v-oblasti-nadzora-za-grantami.html
  • doklad.bystrickaya.ru/vliyanie-mesta-zhitelstva-respondentov-na-strukturu-dosuga-pervogo-dnya-konferencii-strategiya-bibliotechnogo-obsluzhivaniya.html
  • kontrolnaya.bystrickaya.ru/rabota-s-kostrom-spravochnik-stalkera-azbuka-vizhivaniya.html
  • zadachi.bystrickaya.ru/modelirovanie-obektov-zashiti-i-ugroz-bezopasnosti.html
  • tasks.bystrickaya.ru/122-modemi-s-usb-interfejsom-vvedenie-v-internet.html
  • shpora.bystrickaya.ru/yakov-blyumkin-provociruet-novuyu-vojnu-dannij-material-vzyat-s-oficialnogo-sajta-gazeti.html
  • exchangerate.bystrickaya.ru/allergiya-i-allergicheskie-zabolevaniya-chast-5.html
  • shkola.bystrickaya.ru/rol-kredita-v-razvitii-ekonomiki-formi-kredita-i-ih-znachenie.html
  • studies.bystrickaya.ru/51-zatratnij-podhod-v-a-voronin-pod-obshej-redakciej-ya-i-markusa.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.