Monday, August 1, 2011

How to avoid the violation of the DRY-Principle

Don’t Repeat Yourself (DRY-Principle) ?

Table of contents
Why do you need source code conventions in your company?
An other common violation of the DRY principle is this one here :
Do you want to stay up to date?
Source code convention tools
Literature, good books and references
How can i subscribe/feed this blog ?
How can i rate this blog ?
Where do i find more clean code knowledge and gadgets?

How to avoid the violation of the DRY-principle?

In this blog i'm gonna show you how to avoid violation of the DRY principle. The most important thing: i will tell you WHY you should not. I'm gonna give you some arguments, so that you are able to explain and motivate anybody at anytime.

What i hate, is the violation of the DRY principle by copy-pate or auto-comments. It seams to be a world wide "disease", because we all know it, but still continually violate this principle almost all the time. Let's figure out what i mean by doing a very trivial example:

Bad example 1 - DRY violation by repeating comments / making javaDoc obsolete:
/**
* The id
* @return id
*/ 
public long getId(){
    return this.id;
This example is so trivial, the most of the programmers would say one of those sentences: 
  • it's ok, any programmer with a little experience is able to understand that.
  • if a programmer does not understand that, then he is probabily on the false job
  • it would be better without comments.
  • it was auto-generated from eclipse. 
  • My checkstyle tool would fail if a did not comment it.
it sounds legtmin right? Well, if i was forced to do that, i would probabily say to my boss:
hey boss, i know you need me to do the work XYZ, but i have to rewrite (even better repeat)  some pieces of my code to accomplish the rules we have in your company
What do you think, he would say? OK, i think you got it...let's jump this part and see how it should be and why!
Good example 1: 
/**
* With this id you are able to retrieve the object from the 
* database by calling {@link DAO#get(id)} 
* @return id from the object to be retrieved
*/ 
public long getId(){
    return this.id;
1 rule: we comment not what, but why we do something.
2. rule: we write an example how to use it, because in a year nobody knows that anymore
3. rule: writing a good comment, motivates and encourages junior programmers to do it correctly also.
4. rule: the javaDoc does not become obsolete this way and really helps
5. rule: a good comment can reduce maintenance efforts, when a bug is issued
6. rule: agility has nothing to do with zero documents! thats not the meaning. agility, means sustainability means, re-usability, understandable clean code and so on....

Do you want to improve your development skills? Follow: @algoritmo4j

An other common violation of the DRY principle is this one here :


Bad example 2 - DRY violation unconsciously:

/**comment ommited */ 
public void doThis(Object o){
    if(o !=null){
         // do something here... 
        }
/**comment ommited */ 
public void doThat(Object o){
    if(o !=null){
         // do something here... 
        }
this is an also very trivial example, but a really good one. such constructs are very often. instead of doing this way, do better this way here:

Good example 2: 
/**comment ommited */ 
public void doThis(Object o){
    doNotAllowNull ( o ) ;    
     // do something here... 
/**comment ommited */ 
public void doThat(Object o){
    doNotAllowNull ( o ) ;    
     // do something here...
/**comment ommited */ 
private <T>  void  doNotAllowNull(T anyObjectOfYourChoice){
    final String msg = "YourExceptionHelpMessage"; 
    if( anyObjectOfYourChoice  == null){
          throw new NullPointerException(msg);
        }
Or this way here:
/**comment ommited */ 
private <T>  boolean  isNotNull(T anyObjectOfYourChoice){
    return ( anyObjectOfYourChoice != null ) ?  true  :  false
Even better: 
Even better it would be to define an interface and a class that does that for you so that you don't have to write or implement it always from the scratch. you just have to delegate it to this class.

Do you want to stay up to date?

bookmark www.treslines.com or follow: @algoritmo4j

Please rat it by clicking the google+1 or leaving some constructive comments or some bad examples from your companies and how you solve them. i also wanna learn from you. The next lesson will be: The KISS Principle. Stay connected and follow me. Do not miss it.

😱👇 PROMOTIONAL DISCOUNT: BOOKS AND IPODS PRO ðŸ˜±ðŸ‘‡

Be sure to read, it will change your life!
Show your work by Austin Kleonhttps://amzn.to/34NVmwx

This book is a must read - it will put you in another level! (Expert)
Agile Software Development, Principles, Patterns, and Practiceshttps://amzn.to/30WQSm2

Write cleaner code and stand out!
Clean Code - A Handbook of Agile Software Craftsmanship: https://amzn.to/33RvaSv

This book is very practical, straightforward and to the point! Worth every penny!
Kotlin for Android App Development (Developer's Library): https://amzn.to/33VZ6gp

Needless to say, these are top right?
Apple AirPods Pro: https://amzn.to/2GOICxy

😱👆 PROMOTIONAL DISCOUNT: BOOKS AND IPODS PRO ðŸ˜±ðŸ‘†