Page 21 - 4787
P. 21

бути більш продуктивними. Гіпотези, що пов’язують якість коду з  TDD, були

               непереконливі.

                       Програмісти, що використовують TDD на нових проектах, відмічають, що

               вони  рідше  відчувають  необхідність  використовувати  налагодження.  Якщо

               деякі  з  тестів  несподівано  перестають  проходити,  повернення  до  останньої

               версії,  яка  проходить  усі  тести,  може  бкти  більш  продуктивним,  ніж

               налагодження.

                       Розробка  через  тестування  пропонує  більшн  ніж  просто  перевірку

               коректності, вона також впливає на дизайн програми. Спочатку зосередившись

               на  тестах,  простіше  уявити,  яка  функціональність  потрібна  користувачеві.

               Таким  чином,  програмість  продумає  деталі  інтерфейсу  для  реалізації.  Тести

               примушують  робити  свій  код  більш  придатним  для  тестування.  Наприклад,

               відмовлятися від глобальних змінних одиночок (singletons), робити класи менш

               звязаними  і  легкими  для  використання.  Сильно  повязаний  код  або  код,  який

               вимагає  складної  ініціалізаціцї,  буде  складно  перебудовувати.  Модульне

               тестування  сприяє  формуванню  чітких  і  невеликих  інтерфейсів.  Кожний  клас

               буде виконувати певну роль, як правило, невелику. Як наслідок, залежності між

               класами  будуть  понижуватися,  а  зачеплення  збільшуватися.  Контрактне

               програмування ( design by contract) доповнює тестування, формуючи необхідні

               вимоги через ствердження ( design by contract).

                        Хоча,  при розробці через тестування необхідно написати значну довжину

               коду,  загальний  час  на  розробку,  виявляється  меншим.  Тести  захищають  від

               помилок.  Тому  час,  що  витрачається  на  налагодження,  понижується

               багаторазово. Значна кількість тестів допомагає зменшити кількість помилок у

               коді. Усунення дефектів на більш ранньому етапі розробки, перешкоджає появі

               хронічних  і  великих  помилок,  що  приводять    до  тривалого  і  стомлюючого

               налагодження в подальшому.

                       Тести дозволяють проводити рефакторинг коду без ризику його зламати.

               При  внесенні  змін  у  добре  протестований  код,  ризик  появи  нових  помилок

               значно  нижчий.  Якщо  нова  функціональність  приводить  до  помилок,  тести,

               якщо вони звичайно є, відразу ж це покажуть.  При  роботі з кодом, на якому

                                                                                                             20
   16   17   18   19   20   21   22   23   24   25   26