|
Python Sites of Note
Software Development
Recent Posts
|
6/15/04 |
|
5/16/04 |
|
5/13/04 |
|
5/10/04 |
|
5/8/04 |
|
5/5/04 |
|
5/5/04 |
|
4/23/04 |
|
9/23/03 |
|
9/22/03 |
|
9/12/03 |
|
9/11/03 |
|
8/21/03 |
|
7/21/03 |
|
7/17/03 |
|
7/10/03 |
|
7/7/03 |
|
7/1/03 |
|
6/26/03 |
|
6/25/03 |
|
6/18/03 |
|
6/15/03 |
|
6/2/03 |
|
5/28/03 |
|
|
|
|
|
|
Sunday, May 16, 2004
|
|
|
Rule for Refactoring Code
These are the rules I've developed over the years that I follow when refactoring code. They're rules in the sense that I always regret it if I fail to follow them for any reason.
- Unit Testing: Don't Even Start Without It. You won't know your refactoring didn't break the code unless you have unit test coverage of the affected code. If you don't have that coverage already, add new tests.
- Keep Each Refactoring Narrowly-Focused. Don't combine unrelated changes, refactor each one separately.
- Keep Your Unit Tests Fine-Grained. If a refactoring involves multiple functions, you're best off having unit tests for each function. If you depend on a single unit test for a function that then calls the refactored functions, a test failure leaves you not knowing which refactored function failed.
- Use Many Small Refactorings, Even When It Seems Inefficient. I prefer making a small refactoring even when I know that a subsequent refactoring will change that same code yet again. This is critical for refactoring tangled, poorly-written code.
- Unit Test Each Refactoring. Don't wait.
- Refactor Separate Functionality Into Separate Functions. If I encounter code that combines too much distinct functionality into one function, I try to break it apart into separate, individually-testable functions. With unit tests for each new function.
5:47:12 PM
|
|
|
|
© Copyright
2004
Michael Kent.
Last update:
6/15/2004; 4:14:00 PM.
This theme is based on the SoundWaves
(blue) Manila theme. |
|
May 2004 |
Sun |
Mon |
Tue |
Wed |
Thu |
Fri |
Sat |
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
Apr Jun |
Previous/Next
|
|