Watch this awesome presentation by Neal Ford an architect at ThoughtWorks on How you can improve your coding style and ATTITUDE…in 10 most useful ways. Infact, this is a must have potion for any developer and a Code loving guy…
Download the entire presentation in PDF format.
Get the preview of topics covered in the presentation. Courtesy : InfoQ.com
- Divide your program into methods that perform one identifiable task.
- Keep all of the operations in a method at the same level of abstraction.
- This will naturally result in programs with many small methods, each a few lines long.
TDD – stands mostly for test-driven development but can also be viewed as test-driven design.
- When one uses TDD, he starts thinking about the consumer of the code he is writing. This brings awareness on how his code is going to be used by another.
- It forces the developer to mock dependent objects, resulting in a clearer picture of the relationship between the objects.
- TDD encourages the creation of composed methods.
- It is quite useful to use tools like FindBugs which analyzes the bytecode to discover bugs.
Good Citizenship – refers to the way classes should react to one another
- Singletons are a bad choice because they have mixed responsibilities and are not testable. They are the objectual correspondents of global variables.
- The proposed solution is to create a regular POJO and use a factory to make sure that only one instance gets created.
YAGNI – You Ain’t Gonna Need It
- One should write only the code that is used now.
- Avoid speculative development which increases the software entropy of a code.
- Top 10 Corporate Code Smells:
Question Authority – Some things should not be done just because that is the custom.
Single Level of Abstraction Principle – everything should be at the same level of abstraction
- All lines of code in a method should be at the same level of abstraction
Polyglot Programming – use the best language for the problem while maintaining the same platform (JVM/.NET)
Learn Every Nuance – developers benefit from learning nuances of their language
Use the Anti-Objects Pattern – “an anti-object is a kind of object that appears to essentially do the opposite of what we generally think the object should be doing.”