Я ненавижу проблемы с кодированием. И с этим покончено…
Я имею в виду, я понимаю, что они приносят на стол, в зависимости от того, где вы работаете, это определенно способ тренироваться. Но в большинстве случаев это либо рутинная работа, которой нужно учиться и тренироваться, либо забавная головоломка, которую вы выполняете в свободное время.
Но каким-то образом, по неизвестным мне причинам… это то, что многие ненавидят, и тем не менее является отраслевым стандартом… хотите работать в сфере технологий? Используйте эту ужасную онлайн-среду (а не вашу) IDE, которую все будут ненавидеть, чтобы ответить на совокупный вес задачи о человеке-арбузе, в которой есть 10 миллионов арбузов, размер которых изменяется по схеме Фибоначчи.
Мой вызов (каламбур)
Чего я хотел: можно ли явно использовать TDD для решения задач кодирования?
Что я нашел: зависит. (ответ программиста по умолчанию)
В то время как вы можете (и должны) использовать TDD даже без использования TDD. (по сути, вы проходите цикл красного-зеленого-рефакторинга, просто не написав тестов.)
Почему TDD может оказаться неподходящим инструментом для работы:
- Вы можете в конечном итоге «потратить» время (особенно если это испытание на время) на вещи, которые не важны для текущего теста.
многие проблемы говорят, что ввод не нужно проверять
вы уже знаете минимальные/максимальные возможные значения
- У вас уже есть тест-кейсы.
вы можете не знать, что это такое (а некоторые платформы даже скрывают, проходите ли вы все или нет… не знаю, почему…) так что вам вообще нужно писать тесты?
- Многие проблемы самодостаточны.
большая часть того, что вам нужно сделать, может быть сделана в строке, а не в нескольких функциях/классах.
если вы начнете с неправильной абстракции или структуры данных, все созданное вами наращивание отправится в «мусор».
Тогда это бесполезно?
Я не говорю, что вы не получите решения с помощью TDD, вы его получите.
Скорее всего, когда вы совсем заблудитесь, TDD поможет найти решение…
Просто это может быть не «ЛУЧШЕЕ» решение, решение, которое пройдет все тесты (особенно на временную/пространственную сложность).
Теперь с тобой!
Каков ваш опыт решения задач кодирования?
У вас есть альтернатива их решению?
На данный момент лучший совет, который я получил и который я могу вам дать, — это тот, который вы, вероятно, увидите во многих играх (в каламбуре): «git gud ».
Фото на обложке Jukan Tateisi на Unsplash