Это очень актуально, если вы пишете C # на Windows. Не все функции Win32 были представлены через библиотеки .Net. Конкретным примером этого является метод сообщения WM_SETREDRAW, который я описываю здесь: WM_SETREDRAW . Это также необходимо в другое время для решения проблем управления.
Кроме того, понимание того, как работают Win32 и Windows, даст вам лучшее понимание различных аспектов C # /. Net, таких как:
Тем не менее, WPF меняет все это, и если вы пишете только код .Net 3 / 3.5, мой аргумент теряет свою актуальность.
Когда меня так блокируют, лучший совет, который я нашел, - уходить какое-то время. Собираетесь ли вы на длинный обед или уезжаете на день. Вернитесь свежим и взгляните по-новому. Большую часть времени ответ будет смотреть вам в глаза. Пока мне было недостаточно 10-минутного перерыва на кофе, но ваш опыт может отличаться.
Во-вторых, поговорите со своими сверстниками. Пройдите через все, что вы пробовали. Просто попросите их выслушать, и пока вы будете говорить об этом много раз, ответ придет к вам.
Это как раз те два, которые я использую чаще всего, когда я блокирую отладку.
Крайне важно, чтобы вы не разбили клавиатуру.
или своему двухлетнему сыну. Тот, кто не поймет ни слова *, если вы не объясните его очень четко. Вам не нужно отправлять электронное письмо, вам просто нужно быть уверенным, что вы понимаете его наизнанку. Вы удивитесь, сколько раз простое повторение проблемы внезапно делает очевидным, в чем вы ошиблись. Это хороший способ узнать, каковы были ваши предположения о проблеме, и почему они не обязательно могут быть правильными.
* Эта ссылка ведет к отличному ответу JaredPar на другой вопрос SO.
К этому моменту вы уже «отправили по электронной почте» семье pet, так что вы знаете, что, надеюсь, вы рассмотрели все глупые аспекты, пора поговорить с реальным человеком. Возможно, в прошлом они пережили что-то неясное, что напоминает им об этой ситуации, и у них определенно будет другая точка зрения. Постарайтесь понять, в чем проблема, а не то, что вы думаете . Вы не хотите предвзято относиться к ним. Вы можете и должны говорить о том, что они пробовали, и объяснять, почему вы думаете, что проблема именно в этой области (вы, вероятно, правы), но вы не хотите закрывать свое внимание их предложениям, даже если они этого не делают. кажется правильным.
К этому времени вы должны быть менее жестокими и должны быть вооружены новыми идеями. Начните с повторной проверки ошибки. Это простой шаг, но я часами расстраивался из-за ошибки, которая была в нашем тестовом сценарии, а не в нашем коде. Как только вы снова подтвердите ошибку, начните с самого начала. Проверяйте ВСЕ. Установите точку останова в последней точке, в которой вы уверены на 100%, а затем двигайтесь вперед, пока не обнаружите, что результат снова не работает. Это огромный успех, потому что теперь у вас есть, надеюсь, меньший блок кода для исследования. Затем, если необходимо, обратитесь к коллеге, чтобы посмотреть на действующий код.
мы часами расстраивались из-за ошибки, которая была в нашем тестовом сценарии, а не в нашем коде. Как только вы снова подтвердите ошибку, начните с самого начала. Проверяйте ВСЕ. Установите точку останова в последней точке, в которой вы уверены на 100%, а затем двигайтесь вперед, пока не обнаружите, что результат снова не работает. Это огромный успех, потому что теперь у вас есть, надеюсь, меньший блок кода для исследования. Затем, если необходимо, обратитесь к коллеге, чтобы посмотреть на действующий код. мы часами расстраивались из-за ошибки, которая была в нашем тестовом сценарии, а не в нашем коде. Как только вы снова подтвердите ошибку, начните с самого начала. Проверяйте ВСЕ. Установите точку останова в последней точке, в которой вы уверены на 100%, а затем двигайтесь вперед, пока не обнаружите, что результат снова не работает. Это огромный успех, потому что теперь у вас есть, надеюсь, меньший блок кода для исследования. Затем, если необходимо, обратитесь к коллеге, чтобы посмотреть на действующий код. Огромный успех, потому что теперь у вас есть, надеюсь, меньший блок кода для исследования. Затем, если необходимо, обратитесь к коллеге, чтобы посмотреть на действующий код. Огромный успех, потому что теперь у вас есть, надеюсь, меньший блок кода для исследования. Затем, если необходимо, обратитесь к коллеге, чтобы посмотреть на действующий код.Обычно я делаю перерыв ... если это не помогает, я сплю, решая проблему. (На самом деле, если честно, я должен сказать, что провожу бессонную ночь, обдумывая проблему.)
У меня почти всегда есть список возможных решений, готовый к утру. : -)
Обычно я делаю несколько шагов:
Обычно я пребываю в таком настроении, когда не использовал структурный подход с самого начала. Итеративно сужая область, в которой может существовать проблема, и пытаясь написать наименьшую кодовую базу, которая может воспроизвести ошибку, я еще не потерпел неудачу.
Другие упоминали перерыв или "сон на нем". Этот метод известен как (помимо прочего) инкубация. Как только вы примете эту идею, вы сможете продвинуться и дальше.
Один важный аспект, позволяющий действительно оставить проблему позади, и вы будете уверены, что ответы у вас появятся позже. В противном случае, опасно, особенно если вы спите на нем, то, что вы будете беспокоиться об этом до последней минуты, а затем это станет бесконечным циклом, в который ваш разум попадает в течение ночи. Вы, вероятно, в конечном итоге проснетесь не слишком отдохнувшим, увидев много круговых снов. Если делать это слишком часто, это приведет к депрессии.
Я думаю, что если вы столкнетесь с подобной проблемой, пора провести серьезный рефакторинг ...
Также это может указывать на ложные предположения. Попробуйте программно предположить все, что вы «просто» предполагаете. Следите за тем, чтобы не нарушались инварианты методов для любых методов, находящихся в стеке.
Попробуйте методику принятия душа Дэвида Ангарса ":
" Если вы знаете, что печатать, печатайте. Если вы не знаете, что печатать, примите душ и оставайтесь в душе, пока не научитесь, что печатать "
Этот вид вызывает то, что большинство любит делать. Сделай перерыв! Неважно, что это за разрыв, пока вы не думаете о том, чем занимались до перерыва. Отвлечение в любой форме - это хорошо.
Ура!
Еще один хороший вариант - поделиться идеями с другими разработчиками / членами команды. Иногда они будут задавать вам вопросы, которые вы не задумывались.
Если вы работаете в одиночку, неплохо было бы иметь нескольких товарищей-разработчиков, с которыми вы можете поговорить, чтобы устранить неполадки с помощью различных подходов. Вы будете удивлены, как часто свежий взгляд может быть нужным прорывом.
Я обычно тестирую метод / функцию, вызывающую нарушение, шаг за шагом. И не думайте, что ошибка исходит оттуда, она могла быть откуда-то до нее.
Используйте правильный отладчик, не используйте серию printfs.