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());

        }

    }

}

3 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