Вы думаете, Отлаживая (Системный Поиск и устранение неисправностей) одни из самых важных измеримых агностических технологией навыков, которые может иметь программист? [закрытый]

function foo() {

     console.log("HEY")

  }

 foo() //logs "HEY" in the console

//correct way
// foo() is calling the function and asigning its return value
// foo is the function
 var test = foo 
 
 //then we call the stored function
 test()

6
задан Clay Nichols 1 November 2008 в 18:48
поделиться

9 ответов

при определении "поиска и устранения неисправностей" для включения "отладки" затем да, это очень важно!

Править: на основе Ваших редактирований нисходящий метод процесса устранения, который Вы перечислили, систематичен и очень ценен.

Другая техника рассуждает назад:

  • запустите в конце с переменными/вызовами, которые производят признак/ошибку
  • обоснуйте назад оттуда - что, возможно, вызвало это неправильное значение или плохой вызов?
  • продолжите прослеживать назад в логике, пока Вы не найдете преступника

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

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

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

4
ответ дан 10 December 2019 в 00:46
поделиться
1
ответ дан 10 December 2019 в 00:46
поделиться

Поиск и устранение неисправностей в мире компьютеров обычно подразумевает Вашу основную работу типа "My-computer-doesn't-work-can-you-fix-it", которую в лучшем случае Покупают парни позади счетчика, делают. Я думаю, что Вы имеете в виду, Отлаживает, и в то время как оба могут быть ценными (я, конечно, рад, что не должен идти, работая для поддержки для каждого незначительного сбоя, который мой компьютер имеет), Отладка является, конечно, более критическим навыком для разработчика. То независимо от того, что язык, зная, как отследить, определяют и устраняют ошибки, является одним из самого трудного сингла и обычно выполненные задачи, которые программист сделает в течение его карьеры.

Однако я на самом деле сказал бы, что то, что я считаю самым важным навыком в своем арсенале, является настойчивостью. Когда мой менеджер помещает меня на задачу, они знают, что я сделаю ее, несмотря ни на что. Период. Какие контрольно-пропускные пункты помещаются в мой путь, независимо от того, что временная шкала, независимо от того, что конечная цель, я сделаю столько, сколько по-человечески возможно оправдать их надежды, пока не сделано задание, или они удовлетворены результатами. Это, между прочим, является очень важным различием! Исходная цель не всегда выполнима, и когда это не, это - мое задание, чтобы гарантировать, что управление знает точно, почему это не и что их альтернативы как можно скорее. И важно обеспечить те альтернативы. Никто не хочет услышать, "Ну, извините. Вы в значительной степени завинчены". Предоставление другого решения проблемы является частью этого perserverance вещь. Вы никогда не выходите, если Вы не проинструктированы к.

Короче говоря, способность видеть проект до конца, не будучи отвлеченным или сдаваясь является, по-моему, единственной самой эффективной вещью, которую можно сделать, чтобы отделить себя и сделать себя желанными работодателям. И верьте мне, это чертовски трудно! Но это - то, что делает это ценным!:)

2
ответ дан 10 December 2019 в 00:46
поделиться

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

2
ответ дан 10 December 2019 в 00:46
поделиться

Я думаю, что обязательство более важно.

0
ответ дан 10 December 2019 в 00:46
поделиться

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

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

Это работало. Я смог создать поставлющееся программное обеспечение, только беря 2x или 3x как долго как запланировано. Я смог исправить почти все важные ошибки перед поставкой, не представляя слишком много других ошибок по пути. (Я вздрагиваю для записи этого!).

Затем я считал Рефакторинг Fowler. Это полностью изменило мои взгляды. Это учило меня, что, в то время как я не мог записать простому, четкому, чистому, удобному в сопровождении коду первый раз, я мог добраться там. Причина я не мог разобраться в своем дизайне на электронной доске в первый раз, состояла в том, потому что Вы не можете сказать, правильно ли это, пока Вы не видите его в коде. Только затем можете Вы решать что случилось и как зафиксировать его. Ключ, казалось, был для входа для кодирования как можно скорее при создании его максимально дешевым и безопасным зафиксировать дизайн кода, после того как это записано.

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

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

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

1
ответ дан 10 December 2019 в 00:46
поделиться

Это важно, но диагностирует/отлаживает для меня, справедливо:

  1. понимание проблемы. знание, как модули сотрудничают. ИЛИ знание, что Вы не знаете о проблеме/модулях и;
  2. задавание правильных вопросов
  3. и продолжение логических шагов в решении проблемы

Так да это важно, но дело не в этом далекий от других Вы упомянули. Я имел бы размеры (1) сначала. Подарите проблеме с некоторыми частями, намеренно оставленными неопределенными. Он должен смочь понять это. Следующий шаг (2), он задал правильные вопросы. И затем принимается за решение проблемы неслучайным образом (3).

0
ответ дан 10 December 2019 в 00:46
поделиться

Знание, как к:

  • Учиться
  • Исследование
  • Признайте, что Вы не знаете все
  • Примените знание от прошлых опытов до Вашей текущей проблемы
  • И самое главное исследуйте альтернативы проблеме, Вы думаете, что, возможно, решили. Вы могли бы столкнуться с лучшим решением.

Если, именно это поиск и устранение неисправностей, то да это очень важно :D

0
ответ дан 10 December 2019 в 00:46
поделиться

Мне нравится, как один из моих бывших боссов определил эти 2 части к тому, чтобы быть разработчиком, который объясняет, почему простое "Да" не может быть достаточным здесь:

1) Программирование - способность разработать и написать код.

2) Диагностируя - отладка, исследуя проблемы, чтобы определить, является ли это код, данные или сетевая проблема, исправляют ошибки.

0
ответ дан 10 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

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