Сергей Талантов (hitfounder) wrote,
Сергей Талантов
hitfounder

Category:
  • Mood:

Откуда берутся баги

computer_bugs.jpgБаги в большинстве случаев появляются из-за невозможности уменьшить сложность системы, и реже из-за того, что разработчики не берут во внимание вещи, кажущиеся слишком простыми.

Очень просто ошибиться при использовании сложной вещи. Когда имеется черный ящик с миллионом красных кнопок, 12 из которых по-настоящему уничтожают мир, то непременно найдется человек, который станет причиной армагеддона. Точно так же в программировании, если язык программирования достаточно сложен или документация запутанная, то всегда найдутся лазейки для неправильного использования.

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

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

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

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

1. Чем проще будет код, тем меньше будет в нем багов
2. Нужно делать программы простыми на столько на сколько возможно, но не более того.

По мотивам The Source of Bugs by Max Kanat-Alexander.

Tags: культура программирования
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments