boolean isValidNumber(int number) { // number is valid if it is even and less than 100 or odd and greater than 200 return (number %2 == 0 && number < 100 ) ||(number % 2 != 0 && number > 200) }Sure, with a little bit of thought I can understand what this does or by reading the comments (if I trust them, I'll get to that shortly). This version of the code
boolean isValidNumber(int number) { return (isEven(number) && number < 100) || (isOdd(number) && number > 200) }With just this simple change the code just reads better and without the documentation. While the documentation is valid in the first case and reading it does make the code just as easy to understand as the second version, what if I realized there was a change in the validation method and now my code looks like
boolean isValidNumber(int number) { // number is valid if it is even and less than 100 or odd and greater than 200 return (number %2 == 0 && number < 100 ) ||(number % 2 != 0 && number > 201) }Now the documentation doesn't match the code. Six months later, I'm reading this code, and now I have a question - which is correct? Writing cleaner code makes the code easier to read and removes the potential for ambiguity. Code should be written to be read by people, the computer doesn't care what it looks like.
I started off by saying that I think good code can still have comments, but comments that are internal to methods should say why the code does what it does, not what it does. The code should be easy enough to read what it does. On a side note, I do think that documentation that says what the code does is appropriate for the javadocs public methods (or even on private methods since IDEs typically show the documentation when hovering over a method).
Talking about writing clean code is easy, doing it is much more difficult (which is why so few of us actually do). Practice and think about it consciously while writing code until it becomes second nature. I also recommend that all developers read Clean Code by Bob Martin (http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) at least once.
Six Rules for Writing Clean Code
ReplyDelete1: Use pithy comments
2: Assign intuitive names to variables and functions
3: Make ample use of white space
4: Don't make your code unnecessarily complex
5: Be explicit
6: Apply rules uniformly
This comment has been removed by a blog administrator.
ReplyDelete