20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]

  • 2,426 views
Uploaded on

This is one of the most fun days for me. I am very fond of Javaday. I enjoyed sharing many of my experiences as mentor working with the teams during the course of the year. I repeated the same speech …

This is one of the most fun days for me. I am very fond of Javaday. I enjoyed sharing many of my experiences as mentor working with the teams during the course of the year. I repeated the same speech to numerous teams from which I got my material :-).

More in: Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,426
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ricette per Eliminare gli IF Francesco Cirillo Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 2. La Campagna Anti-IF Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 3. I sostenitori Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 4. Anche tu puoi aderire Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 5. Il nuovo sito Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 6. Ricette per eliminare gli IF Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 7. Ricetta anti-if#1: Il navigatore Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 8. Ricetta anti-if#1: Il navigatore if(command.equals("start")) { ... ... } else if(command.equals("stop") { ... ... } if(command.equals("start")) { parseAndExecuteStartRequest(); } else if(command.equals("stop") { parseAndExecuteStopRequest(); } if(command.equals("start")) { new StartRequest().parseAndExecute(); } else if(command.equals("stop") { new StopRequest().parseAndExecute(); } Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 9. Ricetta anti-if#1: Il navigatore if(command.equals("start")) { new StartRequest().parseAndExecute(); } else if(command.equals("stop") { new StopRequest().parseAndExecute(); } if(command.equals("start")) { _command1.parseAndExecute(); } else if(command.equals("stop") { _command2.parseAndExecute(); } public Navigator(Command start, Command stop) { _command1 = start; _command2 = stop; } navigator.commandFor("start").parseAndExecute(); Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 10. Ricetta anti-if#1: Il navigatore if(command.equals("start")) { ... ... } else if(command.equals("stop") { ... ... } navigator.commandFor("start").parseAndExecute(); public Command commandFor(String aCommandName) { return _commands.get(aCommandName); } navigator.put("start",new StartRequest()); navigator.put("stop",new StopRequest()); Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 11. Ricetta anti-if#1: Il navigatore if(command.equals("start")) { ... ... } else if(command.equals("stop") { ... ... } navigator.commandFor("start").parseAndExecute(); public Command commandFor(String aCommandName) { if(!_commands.contains(aCommandName) return _defaultCommand; return _commands.get(aCommandName); } public Navigator(Command defaultCommand) { _defaultCommand = defaultCommand; … } Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 12. Sintomi Sindrome IF Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 13. Attacco alla diligenza Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 14. Attacco alla diligenza private void mouseClicked(MouseEvent evt) { long start = System.currentTimeMillis(); System.out.println("Inizio " + _operation + ": " + Calendar.getInstance().getTime().toString()); String[] parameters = new String[]{_command, getField_remote_export().getText(), getJTextFieldCommentoRelease().getText().replaceAll(" ","_"), _location}; _project = getField_directory().getText()); try { if(_inProd) _project = “project”; Process process = Runtime.getRuntime().exec( parameters, null, new File(_project)); process.waitFor(); } catch (Exception e) { e.printStackTrace(); } System.out.println(this._command + " eseguito in: " + (System.currentTimeMillis() - start) + " ms"); Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL } Javaday Roma III Edizione – 24 gennaio 2009
  • 15. Attacco alla diligenza private void mouseClicked(MouseEvent evt) { long start = System.currentTimeMillis(); System.out.println("Inizio " + _operation + ": " + Calendar.getInstance().getTime().toString()); String[] parameters = new String[]{_command, getField_remote_export().getText(), getJTextFieldCommentoRelease().getText().replaceAll(" ","_"), _location}; _project = getField_directory().getText()); try { if(_inProd) _project = “project”; Process process = Runtime.getRuntime().exec( parameters, null, new File(_project)); process.waitFor(); } catch (Exception e) { e.printStackTrace(); } System.out.println(this._command + " eseguito in: " + (System.currentTimeMillis() - start) + " ms"); Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL } Javaday Roma III Edizione – 24 gennaio 2009
  • 16. One Class One Method Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 17. One Class One Method Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 18. private String getMcCabeValue() { One Class One Method String max = null; NodeList metriche = _doc.getElementsByTagName("Metric"); int numeroMetriche = metriche.getLength(); for(int i=0;i<numeroMetriche;i++){ Node metrica = metriche.item(i); if (metrica.getNodeType()==Node.ELEMENT_NODE){ Element Emetrica = (Element)metrica; String id =Emetrica.getAttribute("id"); //mi stampo tutti i tipi di metriche System.out.println(id); if(id.equals("VG")){ NodeList values = metrica.getChildNodes(); for(int j=0;j<values.getLength();j++){ Node value = values.item(j); if(value.getNodeType()==Node.ELEMENT_NODE){ Element Evalue = (Element)value; max = Evalue.getAttribute("max"); // mi stampa il massimo di McCabe Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL System.out.println(max); } } } } } Javaday Roma III Edizione – 24 gennaio 2009 return max; }
  • 19. private String getMcCabeValue() { One Class One Method String max = null; NodeList metriche = _doc.getElementsByTagName("Metric"); int numeroMetriche = metriche.getLength(); for(int i=0;i<numeroMetriche;i++){ Node metrica = metriche.item(i); if (metrica.getNodeType()==Node.ELEMENT_NODE){ Element Emetrica = (Element)metrica; String id =Emetrica.getAttribute("id"); //mi stampo tutti i tipi di metriche System.out.println(id); if(id.equals("VG")){ NodeList values = metrica.getChildNodes(); for(int j=0;j<values.getLength();j++){ Node value = values.item(j); if(value.getNodeType()==Node.ELEMENT_NODE){ Element Evalue = (Element)value; max = Evalue.getAttribute("max"); // mi stampa il massimo di McCabe Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL System.out.println(max); } } } } } Javaday Roma III Edizione – 24 gennaio 2009 return max; }
  • 20. Arpione Programming Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 21. double calculateValue() { if(_type == BTP) { Connection result = null; Arpione Programming try { Context initialContext = new InitialContext(); if ( initialContext == null){ log("JNDI problem. Cannot get InitialContext."); } DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT); if (datasource != null) { result = datasource.getConnection(); } else { log("Failed to lookup datasource."); } } catch ( NamingException ex ) { log("Cannot get connection: " + ex); } catch(SQLException ex){ log("Cannot get connection: " + ex); } ... for (int i = 0; i ...) { ... } ... return result; } else if(_type == BOT) { for (int i = 0; i ...) { ... } ... return result; } for (int i = 0; i ...) { ... } ... Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL return result; Javaday Roma III Edizione – 24 gennaio 2009 }
  • 22. double calculateValue() { if(_type == BTP) { Connection result = null; Arpione Programming try { Context initialContext = new InitialContext(); if ( initialContext == null){ log("JNDI problem. Cannot get InitialContext."); } DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT); if (datasource != null) { result = datasource.getConnection(); } else { log("Failed to lookup datasource."); } } catch ( NamingException ex ) { log("Cannot get connection: " + ex); } catch(SQLException ex){ log("Cannot get connection: " + ex); } ... for (int i = 0; i ...) { ... } ... return result; } else if(_type == BOT) { for (int i = 0; i ...) { ... } ... return result; } for (int i = 0; i ...) { ... } ... Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL return result; Javaday Roma III Edizione – 24 gennaio 2009 }
  • 23. Log-Driven Programming DEBUG: [2009-01-09 16:40:04,657] debug - Effettuo la copia fisica del file tramite stream DEBUG: [2009-01-09 16:40:04,657] debug - Creo la directory in cui copiare il file DEBUG: [2009-01-09 16:40:27,801] debug - Elimino il file temporaneo /tmp/temp_11-12-2008_12-29-14.xml DEBUG: [2009-01-09 16:40:27,802] debug - Aggiorno nella history il file uploadato. Il nuovo stato e' 10 DEBUG: [2009-01-09 16:40:27,812] debug - Effettuo l'update DEBUG: [2009-01-09 16:40:27,940] debug - Aggiornamento history completato ERROR: [2009-01-09 16:40:27,941] error - CaricaFileAction: [KO] DEBUG: [2009-01-09 16:40:27,942] debug - nome actionForward: upload DEBUG: [2009-01-09 16:40:27,984] debug - pulizia sessione terminata con successo DEBUG: [2009-01-09 16:40:27,986] debug - --- LISTA_FILE_RICERCATI DEBUG: [2009-01-09 16:40:27,986] debug - --- session_user DEBUG: [2009-01-09 16:40:27,987] debug - --- org.apache.struts.action.LOCALE DEBUG: [2009-01-09 16:40:27,988] debug - --- MACROSERVIZIO DEBUG: [2009-01-09 16:40:27,989] debug - --- org.apache.struts.action.ACTION_MESSAGE DEBUG: [2009-01-09 16:40:27,990] debug - --- FILE_DA_UPLOADARE DEBUG: [2009-01-09 16:40:27,991] debug - entry point: VisualizzaCaricamentoFileAction DEBUG: [2009-01-09 16:40:27,992] debug - id servizio: 4 DEBUG: [2009-01-09 16:40:28,037] debug - utente abilitato al servizio richiesto DEBUG: [2009-01-09 16:40:28,066] debug - id servizio: 4 DEBUG: [2009-01-09 16:40:28,067] debug - Caricamento dati relativi al servizio: 4 DEBUG: [2009-01-09 16:40:28,191] debug - ms richiesto: true DEBUG: [2009-01-09 16:40:28,191] debug - ms presente: true DEBUG: [2009-01-09 16:40:28,204] debug - pulizia sessione terminata con successo DEBUG: [2009-01-09 16:40:28,205] debug - --- session_user DEBUG: [2009-01-09 16:40:28,206] debug - --- org.apache.struts.action.LOCALE DEBUG: [2009-01-09 16:40:28,207] debug - --- MACROSERVIZIO DEBUG: [2009-01-09 16:40:28,207] debug - --- org.apache.struts.action.ACTION_MESSAGE DEBUG: [2009-01-09 16:40:28,208] debug - Carico la dimensione massima del file in upload DEBUG: [2009-01-09 16:40:28,209] debug - Imposto ad 1 il numero di file da uploadare DEBUG: [2009-01-09 16:40:28,210] debug - Carico i dettagli degli ultimi 10 file uploadati DEBUG: [2009-01-09 16:40:28,219] debug - Effettuo la query DEBUG: [2009-01-09 16:40:29,149] debug - Caricamento file completato DEBUG: [2009-01-09 16:40:29,150] debug - VisualizzaCaricamentoFileAction: [OK] DEBUG: [2009-01-09 16:40:29,151] debug - nome actionForward: upload DEBUG: [2009-01-09 16:40:34,210] debug - entry point: AbilitaProcessazioneFileAction DEBUG: [2009-01-09 16:40:34,214] debug - id servizio: 4 DEBUG: [2009-01-09 16:40:34,452] debug - utente abilitato al servizio richiesto DEBUG: [2009-01-09 16:40:34,497] debug - Effettuo il passaggio di stato del file con id 177 per abilitarne la processazione DEBUG: [2009-01-09 16:40:34,506] debug - Invio Jms ID[177] DEBUG: [2009-01-09 16:40:34,624] debug - Invio Jms OK! DEBUG: [2009-01-09 16:40:34,630] debug - Effettuo l'update DEBUG: [2009-01-09 16:40:34,728] debug - Aggiornamento stato completato DEBUG: [2009-01-09 16:40:34,729] debug - AbilitaProcessazioneFileAction: [OK] DEBUG: [2009-01-09 16:40:34,729] debug - nome actionForward: upload Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 24. Arpione Programming Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 25. Log-Driven Programming - Avanzato Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 26. Log-Driven Programming - Avanzato DEBUG: [2009-01-09 16:40:04,657] debug - Effettuo la copia fisica del file tramite stream DEBUG: [2009-01-09 16:40:04,657] debug - Creo la directory in cui copiare il file DEBUG: [2009-01-09 16:40:27,801] debug - Elimino il file temporaneo /tmp/temp_11-12-2008_12-29-14.xml DEBUG: [2009-01-09 16:40:27,802] debug - Aggiorno nella history il file uploadato. Il nuovo stato e' 10 DEBUG: [2009-01-09 16:40:27,812] debug - Effettuo l'update DEBUG: [2009-01-09 16:40:27,940] debug - Aggiornamento history completato ERROR: [2009-01-09 16:40:27,941] error - CaricaFileAction: [KO] DEBUG: [2009-01-09 16:40:27,942] debug - nome actionForward: upload DEBUG: [2009-01-09 16:40:27,984] debug - pulizia sessione terminata con successo DEBUG: [2009-01-09 16:40:27,986] debug - --- LISTA_FILE_RICERCATI DEBUG: [2009-01-09 16:40:27,986] debug - --- session_user DEBUG: [2009-01-09 16:40:27,987] debug - --- org.apache.struts.action.LOCALE [#|2008-12-15T14:55:03.074+0100|INFO|sun-appserver9.1|javax.resourceadapter.mqjmsra.lifecycle|_ThreadID=10;_ThreadName=main;|MQJM DEBUG: [2009-01-09 16:40:27,988] debug - --- MACROSERVIZIO [#|2008-12-15T14:55:03.438+0100|WARNING|sun-appserver9.1|javax.jms|_ThreadID=10;_ThreadName=main;_RequestID=d4f04750-1fdc-4896 DEBUG: [2009-01-09 16:40:27,989] debug - --- org.apache.struts.action.ACTION_MESSAGE ion refused|#] DEBUG: [2009-01-09 16:40:27,990] debug - --- FILE_DA_UPLOADARE [#|2008-12-15T14:55:04.675+0100|WARNING|sun-appserver9.1|javax.jms|_ThreadID=10;_ThreadName=main;_RequestID=d4f04750-1fdc-4896 DEBUG: [2009-01-09 16:40:27,991] debug - entry point: VisualizzaCaricamentoFileAction ion refused|#] DEBUG: [2009-01-09 16:40:27,992] debug - id servizio: 4 [#|2008-12-15T14:55:05.749+0100|WARNING|sun-appserver9.1|javax.jms|_ThreadID=10;_ThreadName=main;_RequestID=d4f04750-1fdc-4896 DEBUG: [2009-01-09 16:40:28,037] debug - utente abilitato al servizio richiesto ion refused|#] DEBUG: [2009-01-09 16:40:28,066] debug - id servizio: 4 [#|2008-12-15T14:55:09.311+0100|INFO|sun-appserver9.1|javax.resourceadapter.mqjmsra.lifecycle|_ThreadID=10;_ThreadName=main;|MQJM DEBUG: [2009-01-09 16:40:28,067] debug - Caricamento dati relativi al servizio: 4 [#|2008-12-15T14:55:11.097+0100|INFO|sun-appserver9.1|javax.enterprise.system.tools.admin|_ThreadID=10;_ThreadName=main;|ADM1079: DEBUG: [2009-01-09 16:40:28,191] debug - ms richiesto: true [#|2008-12-15T14:55:13.578+0100|INFO|sun-appserver9.1|javax.enterprise.system.tools.admin|_ThreadID=12;_ThreadName=Thread-21;servic DEBUG: [2009-01-09 16:40:28,191] debug - ms presente: true [service:jmx:rmi:///jndi/rmi://sin-svil-app1:59440/jmxrmi]. This is where the remote administrative clients should connect using the standard DEBUG: [2009-01-09 16:40:28,204] debug - pulizia sessione terminata con successo [#|2008-12-15T14:55:13.595+0100|INFO|sun-appserver9.1|javax.enterprise.system.tools.admin|_ThreadID=12;_ThreadName=Thread-21;true;|A DEBUG: [2009-01-09 16:40:28,205] debug - --- session_user [#|2008-12-15T14:55:16.466+0100|INFO|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=10;_ThreadName=main;|WEB030 DEBUG: [2009-01-09 16:40:28,206] debug - --- org.apache.struts.action.LOCALE [#|2008-12-15T14:55:16.954+0100|INFO|sun-appserver9.1|com.sun.jbi.framework|_ThreadID=13;_ThreadName=pool-1-thread-4;|JBIFW0010: J DEBUG: [2009-01-09 16:40:28,207] debug - --- MACROSERVIZIO [#|2008-12-15T14:55:18.656+0100|INFO|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=10;_ThreadName=main;38182;|W DEBUG: [2009-01-09 16:40:28,207] debug - --- org.apache.struts.action.ACTION_MESSAGE [#|2008-12-15T14:55:18.979+0100|INFO|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=10;_ThreadName=main;4849;|WE DEBUG: [2009-01-09 16:40:28,208] debug - Carico la dimensione massima del file in upload [#|2008-12-15T14:55:22.432+0100|INFO|sun-appserver9.1|org.apache.catalina.loader.WebappClassLoader|_ThreadID=14;_ThreadName=pool DEBUG: [2009-01-09 16:40:28,209] debug - Imposto ad 1 il numero di file da uploadare B-INF/lib/javaee-1.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class|#] DEBUG: [2009-01-09 16:40:28,210] debug - Carico i dettagli degli ultimi 10 file uploadati [#|2008-12-15T14:55:22.440+0100|INFO|sun-appserver9.1|org.apache.catalina.loader.WebappClassLoader|_ThreadID=14;_ThreadName=pool DEBUG: [2009-01-09 16:40:28,219] debug - Effettuo la query B-INF/lib/servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class|#] DEBUG: [2009-01-09 16:40:29,149] debug - Caricamento file completato [#|2008-12-15T14:55:50.373+0100|INFO|sun-appserver9.1|javax.enterprise.system.core.selfmanagement|_ThreadID=10;_ThreadName=main;|S DEBUG: [2009-01-09 16:40:29,150] debug - VisualizzaCaricamentoFileAction: [OK] [#|2008-12-15T14:55:50.626+0100|INFO|sun-appserver9.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;|Application serve DEBUG: [2009-01-09 16:40:29,151] debug - nome actionForward: upload [#|2008-12-15T15:00:23.009+0100|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=15;_ThreadName=httpWorkerT DEBUG: [2009-01-09 16:40:34,210] debug - entry point: AbilitaProcessazioneFileAction ruts.util.PropertyMessageResources).|#] DEBUG: [2009-01-09 16:40:34,214] debug - id servizio: 4 [#|2008-12-15T15:00:23.026+0100|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=15;_ThreadName=httpWorkerT DEBUG: [2009-01-09 16:40:34,452] debug - utente abilitato al servizio richiesto log4j:WARN Please initialize the log4j system properly.|# DEBUG: [2009-01-09 16:40:34,497] debug - Effettuo il passaggio di stato del file con id 177 per abilitarne la processazione [#|2008-12-15T15:07:37.139+0100|INFO|sun-appserver9.1|javax.enterprise.system.container.ejb|_ThreadID=15;_ThreadName=httpWorkerThre DEBUG: [2009-01-09 16:40:34,506] debug - Invio Jms ID[177] [#|2008-12-15T15:07:39.533+0100|INFO|sun-appserver9.1|javax.enterprise.system.core.transaction|_ThreadID=15;_ThreadName=httpWorkerT DEBUG: [2009-01-09 16:40:34,624] debug - Invio Jms OK! [#|2008-12-15T15:07:39.717+0100|INFO|sun-appserver9.1|javax.enterprise.system.core|_ThreadID=15;_ThreadName=httpWorkerThread-3818 DEBUG: [2009-01-09 16:40:34,630] debug - Effettuo l'update [#|2008-12-15T15:07:42.837+0100|INFO|sun-appserver9.1|javax.enterprise.resource.corba|_ThreadID=15;_ThreadName=httpWorkerThread-38 DEBUG: [2009-01-09 16:40:34,728] debug - Aggiornamento stato completato [#|2008-12-15T15:07:42.839+0100|INFO|sun-appserver9.1|javax.enterprise.system.container.ejb|_ThreadID=15;_ThreadName=httpWorkerThre DEBUG: [2009-01-09 16:40:34,729] debug - AbilitaProcessazioneFileAction: [OK] DEBUG: [2009-01-09 16:40:34,729] debug - nome actionForward: upload Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 27. Scavatore di trincea Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 28. Scavatore di trincea I Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 29. Scavatore di trincea II Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 30. Scavatore di trincea II Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 31. Scavatore di trincea II Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 32. Allucinazione di Fowler Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 33. double calculateValue() { Allucinazione di Fowler if(_type == BTP) { Connection result = null; try { Context initialContext = new InitialContext(); if ( initialContext == null){ log("JNDI problem. Cannot get InitialContext."); } DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT); if (datasource != null) { result = datasource.getConnection(); } else { log("Failed to lookup datasource."); } } catch ( NamingException ex ) { log("Cannot get connection: " + ex); } catch(SQLException ex){ log("Cannot get connection: " + ex); } ... for (int i = 0; i ...) { ... } ... return result; } else if(_type == BOT) { for (int i = 0; i ...) { ... } ... return result; } for (int i = 0; i ...) { ... } ... return result; Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL } Javaday Roma III Edizione – 24 gennaio 2009
  • 34. Allucinazione di Fowler Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 35. Allucinazione di Fowler Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 36. Prospettive terapeutiche riabilitative Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 37. Prospettive terapeutiche riabilitative Noi diventiamo ciò che pensiamo - Buddha Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 38. Portatore di IF Conclamato Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 39. Ricetta anti-if#2 Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 40. Anche tu puoi aderire Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 41. Domande? Riferimenti: • Campagna Anti IF *sito corrente: http://www.metodiagili.it/iniziative/campagna-anti-if/index.html • Campagna Anti IF *nuovo sito (da metà febbraio): http://www.antiifcampaign.com • AgileLetter di XPLabs: http://www.xplabs.it/agileletter.html Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009
  • 42. Ricette per Eliminare gli IF Francesco Cirillo Francesco Cirillo – formazione@metodiagili.it – XPLabs SRL Javaday Roma III Edizione – 24 gennaio 2009