Julio Biason
6 years ago
3 changed files with 40 additions and 1 deletions
@ -0,0 +1,38 @@
|
||||
+++ |
||||
title = "Things I Learnt The Hard Way - Be Ready To Throw Your Code Away" |
||||
date = 2019-06-19 |
||||
|
||||
[taxonomies] |
||||
tags = ["en-au", "book", "things i learnt", "code"] |
||||
+++ |
||||
|
||||
A lot of people, when they start with TDD, get annoyed when you say that you |
||||
may have to rewrite a lot of stuff, including whatever your already wrote. |
||||
|
||||
<!-- more --> |
||||
|
||||
TDD was _designed_ to throw code away: The more you learn about your problem, |
||||
the more you understand that, whatever you wrote, won't solve the problem in |
||||
the long run. |
||||
|
||||
You shouldn't worry about this. Your code is not a wall: if you have to throw |
||||
it always, it is not wasted material. Surely it means your time writing code |
||||
was lost, but you got a better understanding about the problem now. |
||||
|
||||
Not only that, but as you progress through your project, solving problems and |
||||
getting "acquainted" with the problem, you'll also notice that the |
||||
[spec](/books/things-i-learnt/spec-first) will also change. This means that the problem you solved |
||||
wasn't exactly the problem you _needed_ to solve; your code is trying to solve |
||||
something that isn't exactly the problem. |
||||
|
||||
Also, this is really common -- the spec changing, not throwing the code away, |
||||
that is. One thing that you can be sure is that it won't change _everywhere_. |
||||
Some of the things you solved will stay the same, some others will be |
||||
completely removed and some others added. And you will see that you'll |
||||
refactor your code a lot, and throw a lot of code away. And not just code that |
||||
solves the problem, but also the tests for that code. |
||||
|
||||
... unless you focus mostly on [integration |
||||
tests](/books/things-i-learnt/integration-tests). |
||||
|
||||
{{ chapters(prev_chapter_link="/books/things-i-learnt/tests-in-the-command-line", prev_chapter_title="Make Tests That You Know How To Run on the Command line") }} |
Loading…
Reference in new issue