ANTI-IF
Here’s a little story...
about a developer working in a software company who was building up a nice platform. One day the boss calls the developer on the phone and says: "There’s a new task I need you to do for a really important client, and it must be done by the end of the day. All that’s needed," the boss continues "is to add a small piece of functionality to that class method you’ve been working on... it shouldn’t be too complex..."
The days go by...
and that small class, edit by edit, grows into a small code monster: the more you feed it with IFs, the bigger it grows!
Do you think it’s just a fairy tale?
Well, it’s not!
What follows below is a single class method taken from real code that is live on a server somewhere on the Internet right now. And this is just a "baby monster". The more you feed it, the bigger it grows!
How to join the Campaign
public ArrayList eseguiAnalisi() { ArrayList listaSegnalazioni = new ArrayList(); List domande = null; List risposte = null; Domanda domanda = null; DAOReques req = new DAOReques(); DAOArea ar = new DAOArea(); ar.setIdQuestionario(getIdQuestionario()); boolean quizDomandaNonForzata = false; // warning 7 try { //set Aree e if (getArea() == 1) { List aree = ar.getAree(); Area area = null; for (int i = 0; i < aree.size(); i++) { area = (Area) aree.get(i); domande = req.getDomande(getIdQuestionario(),area.getIdArea()); if (domande != null) { for (int j = 0; j < domande.size(); j++) { domanda = (Domanda) domande.get(j); risposte = req.getRisposteDomanda(getIdQuestionario(),domanda.getIdDomanda()); if (risposte != null) domanda.setRisposte(risposte); } } } area.setDomandeArea(domande); if (aree != null) setAreeDomande(aree); } //else { // set ListaDomande domande = req.getDomande(getIdQuestionario()); for (int i = 0; i < domande.size(); i++) { domanda = (Domanda) domande.get(i); risposte = req.getRisposteDomanda(getIdQuestionario(),domanda.getIdDomanda()); if (risposte != null) domanda.setRisposte(risposte); } if (domande!=null) setDomande(domande); //} } catch (DAOException de) { de.printStackTrace(); }
Comments