# Java - Der Code, eine Warnung



## Bleiglanz (21. Nov 2004)

Eigentlich dachte ich ja, dass das Buch _Java Server Faces_ von Andy Bosch das absolut schlechteste Java-Buch ist, das man schreiben kann. Daher war es ganz erheiternd, ein noch schlechteres zu finden. Es nennt sich _"Java - Der Code"_ und ist im mitp Verlag erschienen.

Explizit an fortgeschrittene Programmierer gerichtet, bietet es den schlechtesten Code, den ich seit langem in Buchform gesehen habe. Normalerweise schmeiss ich sowas dann einfach in die Ecke, aber hier fand sich auf Seite 271 der Satz


> Jetzt haben wir eine gute Software geschrieben


den ich leider nicht nachvollziehen kann. Übrigens ist der Ton auch sonst recht arrogant und von läppischen "Praxis"-Beispielen durchzogen.

So.

*Hier mal eine kleine Auswahl (aus einer schier endlosen Liste)*

Unkenntnis der API (FileReader unbekannt? readLine selbst nachprogrammiert)

Überall im Buch hartkodierte Pfade ins Dateisystem (C:\xyz) innerhalb der Sourcen (der Autor erkennt zwar das Problem, kann es aber nicht lösen und schwafelt ins blaue)

JAXB mit JAXP verwechselt (OK, das ist eine Kleinigkeit)

Ein StringBuffer, bei dem in der append-Methode dann ("x"+"y"+"....") mit tausen normalen + steht!

Wie üblich totale Unkenntnis beim Exception Handling (System.out.print usw.)

Unkenntniss der PreparedStatements bei JDBC, alle SQL Anfragen werden mit + erzeugt (das übliche Sicherheitsproblem SQL-Injection wird hier also mal in Buchform gegossen)

Der Autor lagert z.B. username und password bei eine SQL-Datenbank in ein Properties-File aus, schreibt aber den Treibernamen und die URL hartcodiert in den Quelltext, was für ein Genie!

Auf Seite 74 ist im eine Graphik durcheinander geraten; mit dem Effekt, dass das ganze Buch kein einziges (!) UML Use Case Seuquenz Diagramm enthält (und das, obwohl viel darüber geschwafelt wird)

Der Autor weiss zwar, dass bei SAX ein Text vom Parser möglicherweise in mehrere CharacterEvents zerlegt wird, kennt aber wohl die triviale Lösung mit einem StringBuffer nicht [dadurch wäre sein läppisches Programm nur ein paar Zeilen länger geworden] - stattdessen sagt er einfach "unsere Texte sind so kurz, also kann das nicht passieren". Und das soll gute Software sein???

Mangelhafte Computerkenntnisse im allgemeinen, mein persönliches Highlight ist "DOS jedoch verwendet UTF-8" (auf Seite 304, zusammen mit einer falschen Darstellung der Thematik CharacterEncoding/Dateisystem..)

Der Autor kann ein xml-File nicht gegen eine DTD validieren, wenn er nicht alles fest ins Dateisystem legt! Siehe die albernen "Lösungen" auf Seite 305

Ein Tipp für SQL-Anfänger: "Wenn Sie neu im Umgang mit SQL sind, nutzen Sie diese Gelegenheit, um sich in Stored Procedures einzuarbeiten" - toller Tipp 

Es soll ein Vector sortiert werden: dazu schreibt sich der Autor selbst einen Shellsort, er erwähnt das Interface Comparable und das ganze Collections API mit keinem Wort.

*Ich muss jetzt aufhören (könnte noch ewig so weiter machen), will aber noch ein Beispiel bringen:*


In dem Buch wird wirklich hunderte von malen geschrieben

```
ArrayList variable = new ArrayList();
// oder
public void meineFkt(ArrayList argument)
// oder
HashMap myMap = new HashMap();
// oder
private HashMap memberVariable;
```
kann das wahr sein??????????????

dass jemand ein Buch für Fortgeschrittene schreibt und die allereinfachsten Dinge nicht beherrscht? Jeder Dorfdepp hätte

```
List variable = new ArrayList();
// oder
public void meineFkt(Collection argument)
```
gemacht (je nach Anforderung). Da dieser Fundamental-Anfänger-Fehler wirklich ständig gemacht wird (die Interfaces aus dem Collections API tauchen NIE auf), ist das wohl kein Flüchtigkeitsfehler sondern Absicht. Was für ein STÜMPER, der dann auch noch ständig über "GUTE SOFTWARE" doziert, ein Hammer!!!


Wenn man noch das sinnlose Anreissen komplexer Themen auf maximal 3 Seiten dazunimmt, bleibt nur ein Urteil:

Etwas zum Lachen für erfahrenere Programmierer, für Anfänger absolut nicht zu empfehlen


----------



## Roar (21. Nov 2004)

:shock:  :applaus: danke für die warnung.
ich hab zwei bücher von mitp, ein java buch darüber ist auch nicht gerade das beste: "Java 2 GE-PACKT":
zum erstenbmal is das (fast) völlig sinnlos, da ich genausogut in die API Doku gucken kann wenn ich entsprechendes wissen will und dann werden auf die wenigen sachen die besprochen werden (String wird total ausgelassen, auch die anderen javax packages) nicht näher eingegangen, sogannte "Code Beispiele vom Programmier Experten" sind lächerlich und tauchen ca. alle 100 seiten mal auf :-/
zudem sind viele fehler drin, z.b. klassennamen klein geschrieben und sowas (was ich aber auch heute erst bei der (grottenschlechten) deutsch übersetzung von effective java festgestellt hab. da heißt ein elements array plötzlich items und sowas)
aber ein paar gute erklärungen zu schlüsselwörtern sind drin.

ein anderes assembler buch von imtp ist aber ziemlich gut...


----------



## Reality (21. Nov 2004)

Programmierst du auch in Assembler?

Liebe Grüße
Reality


----------



## Roar (21. Nov 2004)

programmieren kann man das nicht nennen. ich kenn mich n bisschen damit aus aber mehr auch nich. hab in letzter zeit auch nix gemacht, aber werde mich irgendwann auf jeden fall wieder damit beschäftigen.


----------



## Jockel (21. Nov 2004)

Roar hat gesagt.:
			
		

> ein anderes assembler buch von imtp ist aber ziemlich gut...


Meinst du Assembler Ge-Packt?


----------



## Roar (21. Nov 2004)

ne, das buch heißt "Assembler - Grundlagen der Programmierung"


----------



## Jockel (21. Nov 2004)

Na, da sag ich dann dennoch mal 'Vielen Dank' für das Lob ;-)


----------



## Reality (21. Nov 2004)

Hab mir das Buch mal vermerkt.
In der Schule lernen wir auch gerade Assembler jedoch für Microprozessoren.

Liebe Grüße
Reality


----------



## Roar (21. Nov 2004)

dan nwirst du mit dem buch nicht viel anfangen können. das geht hauptsächlich auf die assembler programmierung unter dos dun windows ein.


----------



## Reality (21. Nov 2004)

Ja, das ist mir klar. Aber Assembler hat mich schon immer interessiert. Ich denke ich werde es mir kaufen, wenn ich mit der Schule fertig bin; also nächstes Jahr.

Liebe Grüße
Reality


----------



## foobar (21. Nov 2004)

@bleiglanz Danke für die Warnung. 
Ich habe auch ähnlich schlechte Erfahrungen mit einem Buch(Java Xml Programmierung Professionell) von mitp gemacht. Da bleibe ich doch lieber bei O'Reilly, Addison Wesley und Co. Da weiß man was man hat ;-)


----------



## Student (22. Nov 2004)

foobar hat gesagt.:
			
		

> Da bleibe ich doch lieber bei O'Reilly, Addison Wesley und Co. Da weiß man was man hat ;-)


das stimmt allerdings.
die bücher haben echt klasse. ausreißer gibt es sicherlich auch .. aber mir ist noch keiner untergekommen.


----------



## Bleiglanz (22. Nov 2004)

So? Wie gesagt: Java Server Faces von Andy Bosch, im Addison Wesley Verlag - ein bodenloses Machwerk

```
Object ob = req.getParameter("action");
String action = (obj!=null)? obj.toString() : "";
```
was soll man da noch sagen, wenn getParameter einen String liefert?

Absolut super ist auch S 331ff, ich hatte da manchmal das Gefühl, dass der Autor dringend eine Behandlung braucht

```
// auf S. 331
private Object localvalue;
// soweit so gut, localvalue ist ein member
// es werden jedoch stets ausschliesslich java.util.Maps
// reingelegt (und zwar als HashMaps)
// aus S. 332 und folgenden wird dann ständig runtergecastet
//
localvalue = new HashMap();
((HashMap)localvalue).put("...)

((HashMap)localvalue).put("...)

((HashMap)localvalue).put("...)

((HashMap)localvalue).put("...)
```
Ich musste das dreimal lesen bis ich da durchgestiegen bin - Herr Bosch dachte scheinbar, dass wenn irgendwo

```
public Object getValue(){ // gibt localvalue zurück}
```
ein "Object" in der Schnittstelle vorgeschrieben ist, er dann auch für localvalue ein "Object" verwenden muss

davon abgesehen findet sich auf S. 50 folgender Satz


> "((TODO klären, ob das überhaupt erlaubt ist, ansonsten Satz umformulieren)"


Da war wohl das gesamte Lektorat beim Addison Wesley verlag im Urlaub


----------



## Roar (22. Nov 2004)

loooool :-D
ich glaub ich soltle mehr lesen


----------



## Student (22. Nov 2004)

ich habe gesagt:


			
				Ben hat gesagt.:
			
		

> ausreißer gibt es sicherlich auch .. aber mir ist noch keiner untergekommen.



nur mal so am rande.


----------



## Luma (11. Dez 2004)

Och nöö, ich wollte mir dieses Buch gerade kaufen...


----------

