Hører sikkert ikke til her ... men hvad fanden
I har sikkert prøvet det ... man har en MEEEEEEEEEEEEEEGET lang metode,
blandt andet fordi den indeholder 125 if/else, 76 case, 112 while, 22
for( ... ) og så videre (overdrivelse fremmer forståelsen).
Jeg ville (næsten) give min højre arm for en IDE med et collapsable
textarea – men hvad vil det lige sige?
Forestil dig at editoren kunne "folde" {} sammen:
Før:
private void isProxy()
{
/*Sæt "alle andre" tods med isProxy = true til isProxy = false*/
String Tabel = "TODSListe";
String[][] opdaterParametre = new String[][]{{ Tabel +
".isProxy","false"}};
String[][] opdaterKriterier = new String[][]{{ null, Tabel +
".isProxy", "=", "true"}};
try
{
System.out.println( DBProxy );
DBProxy.Opdater( Tabel, opdaterParametre, opdaterKriterier );
}
catch( Exception e )
{
e.printStackTrace();
}
/*Sæt "alle" TODS-entries med samme addresse som denne til isProxy =
true*/
opdaterParametre = new String[][]{{ Tabel + ".isProxy", "true" }};
opdaterKriterier = new String[][]{{ null, Tabel + ".Adresse", "=",
"'" + NetProxy.getIP() + "'"}};
try
{
DBProxy.Opdater( Tabel, opdaterParametre, opdaterKriterier );
}
catch( Exception e )
{
e.printStackTrace();
}
String[] Tabeller = new String[]{"TODSListe"};
String[][] søgeParametre = new String[][]{{ null , Tabeller[0] +
".Adresse", "=", "'" + NetProxy.getIP() + "'" , null}};
try
{
TabelObjekt ListeMedOsSelv = DBProxy.Søg( Tabeller, søgeParametre
, null );
String[][] recordSet = ListeMedOsSelv.getRecordSet();
if( recordSet.length == 0 ) //Vores server findes ikke i
databasen.
{
String[][] opretParametre = new String[][]
{
{"Adresse","'" + NetProxy.getIP() + "'"},
{"Port","" + NetProxy.getPort() + ""},
{"KeepAliveTime", "" + (
System.currentTimeMillis()/60000 /*millisekunder per minut*/ )},
{"isProxy","true"},
};
try
{
DBProxy.Opret( Tabel, opretParametre );
}
catch( Exception e )
{
e.printStackTrace();
}
}
}
catch( Exception e )
{
e.printStackTrace();
}
TilgåDBForListeMedTODS();
TabelObjekt TodsListe = TODSListe;;
if ( TodsListe != null )
{
NyProxy kommandoObjekt = new NyProxy( NetProxy.getIP(),
NetProxy.getPort() );
String[] resultat;
String[] feltNavne = TodsListe.getTabelFeltNavne();
int adresseIndex = 0;
int portIndex = 0;
boolean adresseIndexFundet = false;
boolean portIndexFundet = false;
while( (resultat = TodsListe.next() ) != null )//ninja-kode!!!
{
if ( !adresseIndexFundet )
{
while ( !feltNavne[adresseIndex].equalsIgnoreCase(
"TODSListe.Adresse" ) )
{
adresseIndex++;
}
adresseIndexFundet = true;
}
if ( !portIndexFundet )
{
while ( !feltNavne[portIndex].equalsIgnoreCase(
"TODSListe.Port" ) && !portIndexFundet )
{
portIndex++;
}
portIndexFundet = true;
}
if ( !resultat[adresseIndex].equalsIgnoreCase(
NetProxy.getIP() ) )
{
kommandoObjekt.setModtagerIP( resultat[adresseIndex] );
kommandoObjekt.setModtagerPort( Integer.parseInt(
resultat[portIndex] ) );
try
{
NetProxy.Send( kommandoObjekt );
}
catch( CreationException e )
{
String SletTabel = "TODSListe";
String[][] sletParametre = new String[][]
{
{ null, "Adresse", "=", "'" +
resultat[adresseIndex] + "'"},
{ "AND", "Port", "=", resultat[portIndex] }
};
try
{
DBProxy.Slet( SletTabel, sletParametre );
}
catch( SQLStatementException ignore )
{
}
}
}
}
}
Tabeller = new String[]{"IFSListe"};
TabelObjekt InfostanderListe = null;
try
{
InfostanderListe = DBProxy.Søg(Tabeller, null, null );
if ( InfostanderListe != null )
{
NyProxy kommandoObjekt = new NyProxy( NetProxy.getIP(),
NetProxy.getPort() );
String[] resultat;
String[] feltNavne = InfostanderListe.getTabelFeltNavne();
int adresseIndex = 0;
int portIndex = 0;
boolean adresseIndexFundet = false;
boolean portIndexFundet = false;
while( (resultat = InfostanderListe.next() ) != null
)//ninja-kode!!!
{
if ( !adresseIndexFundet )
{
while ( !feltNavne[adresseIndex].equalsIgnoreCase(
"IFSListe.Adresse" ) )
{
adresseIndex++;
}
adresseIndexFundet = true;
}
if ( !portIndexFundet )
{
while ( !feltNavne[portIndex].equalsIgnoreCase(
"IFSListe.Port" ) && !portIndexFundet )
{
portIndex++;
}
portIndexFundet = true;
}
kommandoObjekt.setModtagerIP( resultat[adresseIndex] );
kommandoObjekt.setModtagerPort( Integer.parseInt(
resultat[portIndex] ) );
try
{
NetProxy.Send( kommandoObjekt );
}
catch( CreationException e )
{
String SletTabel = Tabeller[0];
String[][] sletParametre = new String[][]
{
{ null, "Adresse", "=", "'" +
resultat[adresseIndex] + "'"},
{ "AND", "Port", "=", resultat[portIndex] }
};
try
{
DBProxy.Slet( SletTabel, sletParametre );
}
catch( SQLStatementException ignore )
{
}
}
}
}
}
catch( SQLStatementException e )
{
e.printStackTrace();
}
} // linje 175
Efter:
private void isProxy()
{
/*Sæt "alle andre" tods med isProxy = true til isProxy = false*/
String Tabel = "TODSListe";
String[][] opdaterParametre = new String[][]{{ Tabel +
".isProxy","false"}};
String[][] opdaterKriterier = new String[][]{{ null, Tabel +
".isProxy", "=", "true"}};
try
[+] { ... }
catch( Exception e )
[+] { ... }
/*Sæt "alle" TODS-entries med samme addresse som denne til isProxy =
true*/
opdaterParametre = new String[][]{{ Tabel + ".isProxy", "true" }};
opdaterKriterier = new String[][]{{ null, Tabel + ".Adresse", "=",
"'" + NetProxy.getIP() + "'"}};
try
[+] { ... }
catch( Exception e )
[+] { ... }
String[] Tabeller = new String[]{"TODSListe"};
String[][] søgeParametre = new String[][]{{ null , Tabeller[0] +
".Adresse", "=", "'" + NetProxy.getIP() + "'" , null}};
try
[+] { ... }
catch( Exception e )
[+] { ... }
TilgåDBForListeMedTODS();
TabelObjekt TodsListe = TODSListe;;
if ( TodsListe != null )
[+] { ... }
Tabeller = new String[]{"IFSListe"};
TabelObjekt InfostanderListe = null;
try
{
InfostanderListe = DBProxy.Søg(Tabeller, null, null );
if ( InfostanderListe != null )
{
NyProxy kommandoObjekt = new NyProxy( NetProxy.getIP(),
NetProxy.getPort() );
String[] resultat;
String[] feltNavne = InfostanderListe.getTabelFeltNavne();
int adresseIndex = 0;
int portIndex = 0;
boolean adresseIndexFundet = false;
boolean portIndexFundet = false;
while( (resultat = InfostanderListe.next() ) != null
)//ninja-kode!!!
{
if ( !adresseIndexFundet )
[+] { ... }
if ( !portIndexFundet )
[+] { ... }
kommandoObjekt.setModtagerIP( resultat[adresseIndex] );
kommandoObjekt.setModtagerPort( Integer.parseInt(
resultat[portIndex] ) );
try
[+] { ... }
catch( CreationException e )
[+] { ... }
}
}
}
catch( SQLStatementException e )
[+] { ... }
} // linje 61
Ja – det var en del tekst, men det er faktisk en reel metode :-/ ...
klassen er 746 linjer, hvilket gør det "umuligt" at finde ordentligt
rundt i den ...
Tilbage til spørgsmålet – kender du til en IDE, som har den funktion
(eller noget der ligner)?
(Jeg ved godt, at man "bare" kan lave nogle flere og simplere klasser –
men det er for så vidt sagen uvedkommende)
/Hektor