Search

Loading...

Primitive Obsession with Example


Primitive Obsession is the name of a code smell that occurs when we use primitive data types to represent domain ideas. For example, we use a string to represent a message or an integer to represent an amount of money.
For Example: Code with Primitive Obsession
// primitiveObsession.java

public
class primitiveObsession {

    public static void main(String args[]) {

           Integer[] cityPopulations = {

           13000000, // London

           21903623, // New York

           12570000, // Tokyo

           1932763, // Stockholm

           1605602, // Barcelona

           4119190 // Sydney

           };

 
           for (Integer cityPopulation:cityPopulations)

           {

              System.out.println(cityPopulation);
           }

   }

}


 

Example: Code without Primitive Obsession
//City.java

 

public class City {


private final String name;


private final int  population;


private final Continent continent;


public String getName() {
return name;

}


public int getPopulation() {


return  population;

}


public Continent getContinent() {


return continent;

}




public City(String name, int population, Continent continent) {


this.name = name;


this.population = population;


this.continent = continent;

}




public String toString() {


return String.format( "%s has a popluation of %s and is located in %s",


name, population, continent);

}


public static final City[] ALL_CITIES={


new City("London",13000000,Continent.EUROPE),


new City("New York",21903623,Continent.AMERICA),


new City("Tokyo",12570000,Continent.ASIA),


new City("Stockholm",1932763,Continent.EUROPE),


new City("Barcelona",1605602,Continent.EUROPE),


new City("Sydney",4119190,Continent.AUSTRALIA)

};

}



//Continent.java


public
enum Continent {


AMERICA,


EUROPE,


AFRICA,


ASIA,


AUSTRALIA

}

// withOutPrimitiveObsession.java

public class withOutPrimitiveObsession {

    public static void main(String args[]) {



        for (City city:City.ALL_CITIES) {

          System.out.println(city.toString());

        }

    }

}

5 comments:

  1. I really admire how you state your determination to share what's on your mind through blogging. Keep up the good work and have a nice day!Thanks for this one.

    www.n8fan.net

    ReplyDelete
  2. I like your post a lot! You should write some more on this!Great job coming with such terrific post!


    alchemist
    www.inspgift.com

    ReplyDelete
  3. Thank you for your appreciation. I will come with more good posts soon.

    ReplyDelete
  4. Utkarsh, I think you're responding to spam bots...

    ReplyDelete
  5. Do good to others so that others will do good to you. This is one of the things that we need to remember because not all things in the world is even. Visit my site for more information. Have a nice day.

    triciajoy.com

    www.triciajoy.com

    ReplyDelete