On Aug 27, 2008, at 2:40 PM, Matt Wynne wrote:

I have another, more general tip - read this book:
http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052

Michael's definition of Legacy Code is simply 'code that isn't covered by tests'. So... err... that would be your whole app!

Well - I think it was zenspider who said legacy code is code either: 1) you didn't write, or 2) you didn't *just* write 20 minutes ago. There is something to it.



The book suggests chipping away at the lack of test coverage by writing tests (or specs) when you
- change code to add a feature
- need to fix a bug (write a test / spec that fails because of the bug... fix the bug... high five)

+1

With my last job, I inherited an 8000 line rails code base with 30 Test::Unit tests, 25 of which were failing. I decided to delete those, and start a fresh with test suite (under rspec, of course).

Over a few months, without ever going out of my way to write specs for legacy code, I had over over 80% coverage (if I remember correctly). Just chip away as you would normally, and sooner or later the crap code gets replaced. Don't get overwhelmed by rcov. Just write specs for everything *you* write, and write specs for anything else you touch. Especially regressions. Usually you can get in a few extra specs when writing a regression that has nothing to do with the bug itself (it's a sort of testing after the fact - almost like proving theorems of an existing system).

Honestly, you won't have time to write new specs - it's frustrating / painful to write specs *after* code, and so it doesn't usually get done (since it's not any fun). Just chip away gradually and you'll get there eventually. If you're really eager to go off and write extra specs, just write really clear specs and then show the HTML specdocs to your boss - he'll probably appreciate it, especially if formal specs hadn't been drafted up previously.

Scott

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to