BDD, модульное тестирование и шаблоны проектирования - PullRequest
1 голос
/ 08 ноября 2010

Я написал метод для стандартизации адреса USPS . Чтобы проверить это, я хочу, чтобы open(URI.encode(uri)) в строке 45 возвращал макет, указанный ответ в случае, если вы не подключены к Интернету и т. Д. Как мне сделать это с Rspec? Нужно ли разбивать метод на две части?

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

Иногда проекты кода имеют так много разных классов и функций и настолько модульны и абстрактны, что мне становится сложнее разобраться. Я должен прыгать вокруг к различным функциям. Может быть, мне стоит использовать vim с ctags.

Но зачем разбивать функции, если вы не собираетесь повторно использовать разные части?

Я еще не читал Шаблоны дизайна , но я читаю книгу Шаблоны дизайна какао .

Спасибо!

Мэтт

1 Ответ

3 голосов
/ 08 ноября 2010

зачем ломать функции, если вы не собираюсь повторно использовать разные части?

Для наглядности, для удобства тестирования.

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

Что касается ясности, вы сказали, что для вас труднее следовать коду, его сложнее понять, с большим количеством классов и методов. Многие из нас считают, что все наоборот. Крошечная функция проста для понимания. Если он хорошо назван, его использование другой функцией также легко понять - и легче понять, чем если бы он был встроенным. Абстракция имеет решающее значение для хорошей разработки программного обеспечения; научись любить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...