Здесь есть три вещи:
принципы
Это одна сторона медали. В какой - то степени, я чувствую , что это хорошо , чтобы настаивать на исправлении ошибок (или плохих реализаций, даже если они «работают»), даже если никто не замечая этого.
Посмотрите на это так: настоящая проблема - это не обязательно ошибка, в вашем примере, а тот факт, что программист решил, что это хорошая идея - реализовать цикл таким образом, во-первых. С первого момента было очевидно, что это не очень хорошее решение. Теперь есть две возможности:
Программист просто не заметил. Ну ... программист должен разработать интуицию того, как работает его код. Это не похоже на рекурсию, это очень сложная концепция. Исправив ошибку (и потея на протяжении всей дополнительной работы), он, возможно, что-то узнает и запоминает, хотя бы для того, чтобы избежать дополнительной работы в будущем. Если причиной было то , что он просто не было достаточно времени, управление может узнать , что программисты действительно нужно больше времени , чтобы создать более качественный код.
Программист заметил, но посчитал это «не проблемой». Если оставить это в силе, то развивается культура laissez-faire, которая, в конечном итоге, приведет к ошибкам, которые действительно причиняют боль. В данном конкретном случае, кого это волнует. Но что, если этот программист в следующий раз разрабатывает банковское приложение и решит, что определенное созвездие никогда не произойдет. Тогда это так. Плохие времена.
Прагматизм
Это другая сторона. Из Конечно , вы, скорее всего, в данном конкретном случае, не исправить ошибку. Но будьте осторожны - прагматизм, а затем прагматизм. Хороший прагматизм - это если вы найдете быстрое, но надежное и обоснованное решение проблемы. То есть вы избегаете чрезмерного проектирования, но то, что вы на самом деле реализуете, все еще хорошо продумано. Плохой прагматизм - это когда вы просто взламываете что-то вместе, что работает «просто так» и сломается при первой же возможности.
Терпеть неудачу быстро, терпеть неудачу сильно
Если вы сомневаетесь, терпите неудачу быстро и терпите неудачу.
Это означает, среди прочего, что ваш код замечает состояние ошибки, а не среду.
В этом примере, по крайней мере, вы можете сделать так, чтобы не возникала жесткая ошибка времени выполнения («превышена глубина стека» или что-то в этом роде), заменив ее жестким исключением из ваших собственных. Вы можете, например, иметь глобальный счетчик и произвольно решить, что вы должны помочь после 1000 видео (или любого другого числа, которое достаточно велико, чтобы его нельзя было использовать при обычном использовании, и достаточно мало, чтобы работать в большинстве браузеров). Затем дайте этому исключению (которое может быть общим исключением, например, RuntimeException
в Java или простую строку в JavaScript или Ruby) значимое сообщение. Вам не нужно идти на то, чтобы создать новый тип исключений или что-то еще, что вы делаете на вашем конкретном языке программирования.
Таким образом, у вас есть
- ... задокументировал проблему внутри кода.
- ... сделал это детерминированной проблемой. Вы знаете, что произойдет ваше исключение. Вы не в восторге от изменений в базовой технологии браузера (подумайте не только о браузере ПК, но и о смартфонах, планшетах или будущих технологиях).
- ... сделал это легко исправить, когда в конце концов вам нужно это исправить. Источник проблемы указывается в вашем сообщении, вы получите значительный возврат и все это.
- ... все еще не теряете времени на "настоящую" обработку ошибок (помните, вы никогда не ожидаете, что ошибка возникнет).
Мое соглашение состоит в том, чтобы префикс таких сообщений об ошибках со словом «Паранойя:». Это явный признак для меня и всех остальных, что я никогда не ожидаю, что эта ошибка всплывет. Я могу четко отделить их от «настоящих» исключений. Если я вижу такой в графическом интерфейсе или в лог-файле, я точно знаю, что у меня серьезная проблема - в конце концов, я никогда не ожидал, что они возникнут. На этом этапе я перехожу в режим анализа (с хорошим шансом решить его быстро и довольно легко, так как я точно знаю, где возникла проблема, избавив меня от многих ложных отладок).