Chvanikoff
@Chvanikoff

Какой метод разработки Вы считаете правильным?

1) Пишу много кода, потом проверяю все сразу
2) Пишу небольшими кусками, которые сразу же проверяю

На мой взгляд, оба подхода имеют как плюсы, так и минусы:
Подход №1:
+Не тратится лишнее время на проверку правильно написанных участков, Работает и все. Что не работает — исправляем
-Легко забыть, о чем думал в момент написания того, или иного участка. Особенно, если куски очень большие

Подход №2 — соответственно, ровно наоборот:
+Только что писал — если вдруг какая-то ошибка обнаруживается, не сложно будет вычислить
-Тратится много времени на проверку хорошо написанных участков

А что вы думаете по этому поводу?
  • Вопрос задан
  • 2410 просмотров
Пригласить эксперта
Ответы на вопрос 10
Vas3K
@Vas3K
Алгоритмы, которые я точно знаю, обычно пишу большими кусками, а потом за пару запусков правлю всё. Обычно это просто опечатки. А вот с библиотеками, с которыми работаю впервые, либо алгоритмы, которые пишу редко, обычно отлаживаю по частям. Так проще, потому что на этапе привыкания постоянно где-нибудь да сфейлишь.
Ответ написан
Комментировать
Никак не могу себя приучить к правильной (согласно TDD) работе: сначала пишем тесты, потом код, такой чтобы тесты не работали, а лишь потом его правим, чтобы заработали.

Сложности две:
— лениво писать тесты на тривиальный код (то есть кода ещё нет «на бумаге», но «в голове» уже он есть)
— лениво писать тесты, предусматривающие всё и вся, например, что методы доступа к СУБД вернут какую-ту ахинею, а не либо корректные данные, либо ошибку. Или, скажем, конструкция return new SomeClass() вернёт не экземпляр SomeClass.

Вероятно я написание тестов так до конца и недопонял, особенно что касается тестирования связанных объектов (например кобинации контроллер, модель, репозиторий)
Ответ написан
Комментировать
@web4_0
Мартин Фаулер одобряет второй подход.
Ответ написан
Комментировать
@Lazer1999
Зависит от обстоятельств — бывают модули, которые не оттестишь сразу — зависимости там и прочее. В таком случае довожу работу до какой-никакой логической единицы на которой можно провести логичное тестирование. Иногда получаются довольно большие блоки.

В целом подход — разбить функционал на несколько логичных «кусков» — допустим не больше 1-2 дней работы в идеале — и соответственно написал-оттестил-забыл.

В общем и целом — старайтесь найти золотую середину — когда кусок кода всё еще представляет из себя что-то единое, цельное, выполняющее единый функционал, но с другой стороны — уже поддаётся тестированию, в отличие от подвешенной сферической функции в вакууме

ЗЫ: пишу приложения, поэтому мелкая разбивка не получается — в той же MVC зачастую просто контроллер подвешенный в воздухе без модели и представления корректно не оттестируешь…
Ответ написан
Комментировать
schursin
@schursin
Использую оба. Использование того или иного зависит от сложности кода. Но больше «в обороте» — Пишу много кода, потом проверяю все сразу — т.к. «отладочный лог» никто не отменял.
Ответ написан
Комментировать
Sannis
@Sannis
Смотря как писать эти «много кода». Ничто не мешает коммитить каждое изменение кода или добавление функций, а тесты писать отдельным коммитом после добавление достаточно большого количества кода. Но при каждом коммите стоит проверять код на прохождение имеющихся тестов. Меня такой подход вполне устраивает.
Ответ написан
Комментировать
wholeman
@wholeman
Некоторая смесь: стараюсь, чтобы каждый вечер всё собиралось и работало без явных ошибок, но тщательное тестирование провожу перед релизом, то есть раз в месяц или даже больше.
Ответ написан
Комментировать
Cheese
@Cheese
кхе-кхе, а почему нельзя совместить второй способ и вот это:
>Работает и все. Что не работает — исправляем
я так и пишу: написал участок кода какой-то законченный, проверяю как он работает, если работает, то приступаю к следующему, если нет, то правлю. И времени тратится больше разве что на переключение между средой и браузером (я пишу на html/php).
Ответ написан
Комментировать
@torsion
Писать сразу правильно. Если нет, то вариант два.
Ответ написан
kosmonaFFFt
@kosmonaFFFt
Senior Java Developer.
Я предпочитаю писать небольшие части, потом уже тестить… Особенно удобно это в языках с REPL…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы