IOException

Panda9296

Bekanntes Mitglied
ich bekomme einen Fehler mit folgender Meldung:


Zuletzt gespeichert: 09:09:14
Ausgabe-Leiste Einklappen

./ExampleClass.java:13: error: class, interface, or enum expected
}
^
1 error
make: *** [run] Error 1

===========================================================
ich schaue die ganze Zeit und finde es einfach nicht was falsch sein könnte in dieser Zeile...

Code:
public class ProgrammingExampleWeek1 {
    

    public static void main(final String[] args)throws IOException{
        
        
        
        
            
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Welcome to the Model Company!");
              System.out.println("pls hand over the name...");
        
            ExampleClass robert = new ExampleClass();
             robert.name = br.readLine();
             System.out.println("Thank you!!");
              System.out.println("Pls hand over the first name!");
              robert.firstName = br.readLine();
              System.out.println("Thank you!!");
               System.out.println("pls hand over the road....");
               robert.road = br.readLine();
               System.out.println("Thank you!");
                 System.out.println("Pls hand over the redience and the locus");
                 robert.redience= br.readLine();
                 System.out.println("Thank you!");
                  System.out.println("Pls hand over the postcode... ");
                  robert.postCode= br.readLine();
                  System.out.println("Thank you ");
                   System.out.println("have you got a coustomorID?");
                  
                   boolean selection = br.markSupported();
                  
                   if(selection==true){
                       System.out.println("Pls hand over the ID");
                       String customerID= br.readLine();
                      
                       if(customerID.equals(robert.customerID)){
                          
                           System.out.println("Thank you!! It is done!");
                       }
                   }
                   else{
                       System.err.println("This not invalid");
                   }
                  
                  
                
                
                
                
    }
        
        }
 
K

kneitzel

Gast
Also was mir auf Anhieb auffällt:
a) Du bekommst einen Fehler in einer Datei ExampleClass.java aber Du zeigst uns eine Klasse ProgrammingExampleWeek1 (Welche hoffentlich in einer Datei ProgrammingExampleWeek1.java sein wird!)
b) Du zeigst nicht die genaue Stelle, in der der Fehler ist (Zeile 13 bitte direkt markieren, wenn Du den richtigen Code postest!)

Also im Augenblick vermute ich, dass Du da mehrere Dateien hast, Du arbeitest zwar an der ProgrammingExampleWeek1 aber du übersiehst, dass die IDE auch noch eine ExampleClass übersetzen will und das eben fehl schlägt ...
 

Panda9296

Bekanntes Mitglied
Also was mir auf Anhieb auffällt:
a) Du bekommst einen Fehler in einer Datei ExampleClass.java aber Du zeigst uns eine Klasse ProgrammingExampleWeek1 (Welche hoffentlich in einer Datei ProgrammingExampleWeek1.java sein wird!)
b) Du zeigst nicht die genaue Stelle, in der der Fehler ist (Zeile 13 bitte direkt markieren, wenn Du den richtigen Code postest!)

Also im Augenblick vermute ich, dass Du da mehrere Dateien hast, Du arbeitest zwar an der ProgrammingExampleWeek1 aber du übersiehst, dass die IDE auch noch eine ExampleClass übersetzen will und das eben fehl schlägt ...
ja du hast da richtig gelegen es war 8 Uhr morgens und ich suche mir einen Ast ab, was daran liegt, dass ich diese Aufgabe im Browser machen musste. Ich habe eine " } " zu viel reingesetzt und habe die Daten der einzelnen Attribute auf diese Klasse ebenfalls umgelagert. Eine Frage habe ich trotzdem noch wie setze ich jetzt die Ausnahmebehandlung rein ? Ich muss doch eigentlich ein Try catch ding machen nur hatte ich das noch nicht so richtig gemacht
 
K

kneitzel

Gast
Also der try / catch sieht einfach wie folgt aus:
Java:
try {
    // Hier kommt Code hin, der ggf. eine Exception wirft.
} catch (ExceptionClass1 e1) {
    // Behandlung von ExceptionClass1 Exceptions.
} catch (ExceptionClass2 e2) {
    // behandlung von ExceptionClass2 Exceptions.
} catch (ExceptionClass3 | ExceptionClass4 e3) {
    // behandlung von ExceptionClass3 und ExceptionClass4 Exceptions.
} finally {
    // Was immer gemacht werden soll am Ende ...
}
Es muss mindestens ein catch oder finally vorhanden sein.

Du hast aber noch eine Besonderheit. Du nutzt einen BufferedReader und der muss man Ende immer geschlossen werden ... also hast Du da sowas in der Art zu schreiben:
Java:
BufferedReader br;
try {
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  // Weitere Verarbeitung ...
} catch (IOException e) {
  // Behandlung der Exception...
} finally {
  try {
    if (br != null) br.close();
  } catch (Exception ex) {}
}
Der Reader soll also auf jeden Fall am Ende geschlossen werden und beim Schließen interessieren uns ggf Exceptions nicht mehr ... Aber das ist viel Code und dafür ist "try with resources" eingeführt worden ... der Code oben lässt sich also einfach schreiben:
Java:
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
  // Was auch immer du mit dem Reader machen willst ...
} catch (IOException) {
  // Behandlung der Exception.
}
==> Du hat keinen close() Aufruf mehr zu machen, das macht jetzt das try with resources für dich!

Das wäre so der kurze Überblick über try / catch ....
 

Panda9296

Bekanntes Mitglied
Also der try / catch sieht einfach wie folgt aus:
Java:
try {
    // Hier kommt Code hin, der ggf. eine Exception wirft.
} catch (ExceptionClass1 e1) {
    // Behandlung von ExceptionClass1 Exceptions.
} catch (ExceptionClass2 e2) {
    // behandlung von ExceptionClass2 Exceptions.
} catch (ExceptionClass3 | ExceptionClass4 e3) {
    // behandlung von ExceptionClass3 und ExceptionClass4 Exceptions.
} finally {
    // Was immer gemacht werden soll am Ende ...
}
Es muss mindestens ein catch oder finally vorhanden sein.

Du hast aber noch eine Besonderheit. Du nutzt einen BufferedReader und der muss man Ende immer geschlossen werden ... also hast Du da sowas in der Art zu schreiben:
Java:
BufferedReader br;
try {
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  // Weitere Verarbeitung ...
} catch (IOException e) {
  // Behandlung der Exception...
} finally {
  try {
    if (br != null) br.close();
  } catch (Exception ex) {}
}
Der Reader soll also auf jeden Fall am Ende geschlossen werden und beim Schließen interessieren uns ggf Exceptions nicht mehr ... Aber das ist viel Code und dafür ist "try with resources" eingeführt worden ... der Code oben lässt sich also einfach schreiben:
Java:
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
  // Was auch immer du mit dem Reader machen willst ...
} catch (IOException) {
  // Behandlung der Exception.
}
==> Du hat keinen close() Aufruf mehr zu machen, das macht jetzt das try with resources für dich!

Das wäre so der kurze Überblick über try / catch ....
nur für das Verständnis: Warum kann ich den BufferedReader nicht mit if/ else schließen indem ich sage wenn der BufferedReader genutzt wird mach das und falls das nicht geht mach das so hab ich doch auch eine Fallbehandlung wo alles abdeckt was ich einschließe
 
K

kneitzel

Gast
Was willst Du mit if/else genau abfragen? Das verstehe ich gerade nicht.

Du öffnest Den Reader in einer lokalen Variable, also solltest Du ihn auch wieder schließen, ehe die Variable out of scope ist. Das ist einfach eine Regel: Was du öffnest schließt Du auch wieder!

Und das Schließen willst auch machen, wenn irgend eine Exception oder so passiert. Daher in einem finally (so man try with resources nicht nutzen will).
Aber dafür gibt es ja extra dieses try with resources. Wenn Du lokale Variablen hast, die AutoClosable implementieren, dann nutz am Besten immer try with resources, damit die Ressourcen immer sauber geschlossen werden.
 

fhoffmann

Top Contributor
Man sollte in diesem spezienn Fall den Bufferedreader nicht (!) schließen. Ansonsten wird auch System.in geschlossen und man kann später nicht mehr von der Console einlesen.
 
K

kneitzel

Gast
So genau hatte ich nicht hingesehen und ganz übersehen, dass der BufferedReader auf System.in zugreift.

Wenn man System.in über Scanner oder BufferedReader lesen will, dann ist da meine Meinung immer noch, dass ich da gerne auf eine public static Variable zurück greifen würde, denn dann hat man den Fall nicht, dass die Variable out of scope geht. Aber das liegt auch stark an meiner .Net Prägung mit IDisposable :)
 
K

kneitzel

Gast
Nein, das ist auch in Java Standard, dass man das wegkapselt. Allerdings sollten Anfänger beide Möglichkeiten kennen/verstehen - und so hängt es immer vom didaktischen Ansatz ab, WIE man angemessen antwortete auf Fragen...

Also Deine Aussage ist für mich schwer nachzuvollziehen:
a) Meine erste Aussage gibt eine klare Sichtweise wieder. Darüber kann man diskutieren. Hatten wir in der Vergangenheit zur Genüge. Aber dein "Nein" wird sich darauf nicht bezogen haben ...
b) Dann kommt eine Aussage zu meiner Person: ich bin durch .Net Erfahrungen hier sehr strikt. Hier ein Nein zu hören, ist in meinen Augen äußerst seltsam! Kennst Du mich besser als ich mich kenne? Meinst Du, dass ich Lüge? Was bitte willst Du mir sagen?

Und Du scheinst keine wirklichen Erfahrungen zu haben - das schließe ich jetzt aus Deine Aussage. Denn:
Aus meiner Sicht ist dies in .Net deutlich extremer. In Java ist es extrem unüblich mittels JNI irgendwelche Pointer / Handles zu benutzten. Bei .Net kommt dies deutlich öfters vor. Man ist halt nicht in einer VM so wie bei Java sondern .Net ist lediglich ein Layer. Und vieles greift auf Windows Internas zu mit Marshaling / Handles / Pointer und was es da sonst für Spielereien gibt!

In Java kommt der GC irgendwann vorbei und dann ist es i.d.R. sauber. Der Vorteil, wenn man sich in einer VM befindet. In .Net ist dem eben nicht so wenn man da etwas schlampig gearbeitet hat. Und ich kann mich an manches Memory Leak erinnern wo dann etwas unbedarfte Entwickler halt schlicht meinten, dass es doch unnötig gewesen wäre, da ein using Statement bzw. Close() oder Dispose() Aufruf zu verwenden. So kann ich mich noch gut an gewisse Probleme rund um AD Abfragen erinnern (DirectorySearcher mit SearchResultCollection) ...

Somit ist meine Sicht tatsächlich ganz schlich und einfach: Ich bin hier sehr stark durch eben genau solche Erfahrungen geprägt worden. Und solche Erfahrungen habe ich im Java Umfeld bisher nicht machen dürfen ...
 

Panda9296

Bekanntes Mitglied
Also Deine Aussage ist für mich schwer nachzuvollziehen:
a) Meine erste Aussage gibt eine klare Sichtweise wieder. Darüber kann man diskutieren. Hatten wir in der Vergangenheit zur Genüge. Aber dein "Nein" wird sich darauf nicht bezogen haben ...
b) Dann kommt eine Aussage zu meiner Person: ich bin durch .Net Erfahrungen hier sehr strikt. Hier ein Nein zu hören, ist in meinen Augen äußerst seltsam! Kennst Du mich besser als ich mich kenne? Meinst Du, dass ich Lüge? Was bitte willst Du mir sagen?

Und Du scheinst keine wirklichen Erfahrungen zu haben - das schließe ich jetzt aus Deine Aussage. Denn:
Aus meiner Sicht ist dies in .Net deutlich extremer. In Java ist es extrem unüblich mittels JNI irgendwelche Pointer / Handles zu benutzten. Bei .Net kommt dies deutlich öfters vor. Man ist halt nicht in einer VM so wie bei Java sondern .Net ist lediglich ein Layer. Und vieles greift auf Windows Internas zu mit Marshaling / Handles / Pointer und was es da sonst für Spielereien gibt!

In Java kommt der GC irgendwann vorbei und dann ist es i.d.R. sauber. Der Vorteil, wenn man sich in einer VM befindet. In .Net ist dem eben nicht so wenn man da etwas schlampig gearbeitet hat. Und ich kann mich an manches Memory Leak erinnern wo dann etwas unbedarfte Entwickler halt schlicht meinten, dass es doch unnötig gewesen wäre, da ein using Statement bzw. Close() oder Dispose() Aufruf zu verwenden. So kann ich mich noch gut an gewisse Probleme rund um AD Abfragen erinnern (DirectorySearcher mit SearchResultCollection) ...

Somit ist meine Sicht tatsächlich ganz schlich und einfach: Ich bin hier sehr stark durch eben genau solche Erfahrungen geprägt worden. Und solche Erfahrungen habe ich im Java Umfeld bisher nicht machen dürfen ...
also ich denke auch wenn die Grundaussage heisst: " was ich öffne schließe ich" dann mache ich das auch ausnahmslos bis ich besser bin, danke =)
 
K

kneitzel

Gast
Der Punkt ist gilt generell. Daher mein klarer Verweis auf try with resources. Das ist aus meiner Sicht eine goldene Regel, an der ich immer festhalten würde.

Aber der Hinweis von @fhoffmann ist hier extrem wichtig. Hintergrund ist, dass Du den Stream für Eingaben in System.in vorfindest. Wenn du diesen schliessen solltest, dann hast Du ein Problem.
a) Du hast diesen nicht geöffnet, daher ist es nicht Deine Verantwortung, diesen zu schließen.
b) Wenn er einmal geschlossen ist, dann ist er zu und Du kannst weitere Eingaben nicht mehr einlesen.

Du hast in System ein static InputStream in. Wenn Du diesen nun "kapseln" musst, ist es aus meiner Sicht naheliegend, diesen ebenfalls in einem static BufferedReader zu "kapseln". ==> Damit hast Du kein AutoClosable als lokale Variable mehr erstellt, die eben geschlossen werden sollte/müsste ehe die Variable nicht mehr gültig ist.

Andere Ideen, die hier schon im Forum diskutiert wurden:
a) Einfach das Schließen komplett ignorieren. Also du erstellst einen BufferedReader ohne try with resources und ohne diesen zu schließen. ==> Dann bleibt auch System.in auf. Im Java Umfeld sehe ich das nicht einmal als so kritisch an, im .Net Umfeld hätte ich damit massive Bauchschmerzen welche auch öfters in den MSDN Foren thematisiert wurden: Du willst bei AutoClosable (oder im .Net Umfeld IDisposable) nicht bewerten, ob eine Klasse bezüglich dem ignorieren nun "gut" oder "schlecht" reagiert. Das Interface soll nach meinem Verständnis genau dies vorgeben!

b) Eine Idee war, eine eigene Klasse zu schreiben, die einen Reader oder Stream kapselt und die das close() nicht weiter gibt. Dann würde man den BufferedReader schließen, aber der zugrunde liegende Stream oder Reader würde nicht mehr geschlossen. Bringt aber meiner Meinung nach ähnliche Probleme wie bei a) mit sich, denn die Bewertung muss weiterhin vorgenommen werden, "ob" oder "ob nicht" die Nutzung angebracht ist oder nicht.

Bei Anfängern wird oft auf diese Betrachtung verzichtet. Da werden einfach Scanner oder Reader auf System.in erstellt und genutzt.
Das kann man aus meiner Sicht durchaus so machen, den in Java ist das weniger kritisch.

Und da kommt man dann auch auf den Punkt zurück, den ich erwähnte, dass es eben in .Net ein größeres Gewicht hat.

Wer das etwas nachvollziehen will, kann sich ja mal anschauen:
AutoClosable Dokumentation
Das wird ganz gelassen gesehen. Wenn man Klassen hat, die Non IO und IO Streams hat, dann kann man es weglassen. Bei Non IO Streams ignoriert man es ... Also in kurz: chillt mal!

IDisposable Dokumentation
Hier ist ganz klar die Aussage: Dient der Freigabe von nicht verwalteten Resourcen. Und die Betonung ist ganz klar deutlich stärker:
- Das Interface hinzu zu fügen bei einer vorhandenen Klasse ist ein klarer breaking change
- Hinweise zu dem IDisposable Pattern
- Und klare Beschreibung, wie es zu nutzen ist ...
 
X

Xyz1

Gast
Der Punkt ist gilt generell. Daher mein klarer Verweis auf try with resources. Das ist aus meiner Sicht eine goldene Regel, an der ich immer festhalten würde
Es geht darum, auch die Ausnahmen Deiner "globalen Regel" zu kennen, und diese habe ich dargelegt.

Was Du mit .Net oder C# machst, ist erst einmal uninteressant, und das Forum verfehlt. Hier geht's zum Java.

Aber bitte wer schwadronieren möchte, soll schwadronieren.
 
K

kneitzel

Gast
Also ich frage mich nun wirklich, was Du hier eigentlich von mir willst Tobias.

Wenn Dir meine Posts nicht gefallen, dann lies sie nicht oder antworte schlicht nicht drauf.

Ich habe hier versucht, einem Anfänger auf die Schnelle etwas zu erläutern. Dabei habe ich etwas übersehen worauf ich aufmerksam gemacht wurde und dann habe ich den Punkt auch noch etwas erläutert.

Was Du in Deinen beiden Posts genau hier erreichen willst, ist mir unverständlich. Es ist mir aber auch schlicht egal. Du bist ein unbelehrbarer Junior Developer. (Belegung durch ein Beispiel: Du hast trotz zig Clean Code Debatten, in denen Du mitgemischt hast, immer noch die Angewohnheit, Variablen a,b,c, .... zu nennen und Kontrollstrukturen zu verwenden, die Code extrem unleserlich machen .... )

Für mich geht es hier um die Sache: Eine Thematik, die ein Anfänger aufgeworfen hat. Diese habe ich versucht zu erläutern und zwar so, dass ein Anfänger dies verstehen kann. Das Feedback, das ich von @Panda9296 bekommen habe stimmt mich auch positiv. Ärgerlich ist, dass so jemand dann Fragen teilweise lieber per PM klärt als im Forum.... Wobei ich das menschlich auch nachvollziehen kann ....

BTW: Wenn Du Dir die Posts von @Panda9296 anschaust, dann scheint er auch durchaus Interesse an C# zu haben :)
 
K

kneitzel

Gast
Sagen wir so, das sind Kontostrukturen, die ein Senior spielend verstehen können muss, andernfalls wäre er unfähig.

Danke für die erneute Bestätigung. Du zeigst mit Deiner Einstellung, dass Du in dem Bereich einiges noch nicht verstanden hast. Aber mach Dir nichts draus: Das kommt noch. Und wo habe ich Dich beleidigt? Das, worauf du reagiert hast, war lediglich eine kurze Belegung meiner These. Soll ich da weiter ausführen? Soll ich Threads auflisten? Da kann ich gerne was raussuchen - das verlegen wir dann aber in PMs so Du das wirklich möchtest.

Und danke, dass Du mit dem Kindergarten aufhören willst. Endlich etwas vernünftiges.
 

mrBrown

Super-Moderator
Mitarbeiter
Sagen wir so, das sind Kontostrukturen, die ein Senior spielend verstehen können muss, andernfalls wäre er unfähig.
Einen Senior macht nicht aus, dass er jeden Code lesen kann, sondern dass er Code schreiben kann, den jeder lesen kann.

Wenn man Senior sein muss, um Code zu verstehen, ist der Code schlecht.
 
K

kneitzel

Gast
Ist jetzt Off Topic und zudem auch noch Werbung, aber wenn @mrBrown da jetzt so erste Basis-Dinge erläutert möchte ich da noch einen kleinen Tipp geben:

Bei O'Reilly gibt es eine Learning Platform - früher nannte sich die Safari Books Online. Da gibt es auch Online Trainings von diversen Leuten.
Ist leider nicht ganz preiswert mit etwas über 40€/Monat aber man kann es 2 oder 4 Wochen testen ... weiß es jetzt nicht genau, wie lange....

Jedes Online Training hat nur begrenzte Plätze und einige sind immer schnell weg. Aber Uncle Bob (Robert C. Martin) hält sein nächstes Training bezüglich Clean Code am 30. März. Wenn man da also in paar Tagen sich registriert zum Test und da dann einschreibt, dann kann man das evtl. kostenlos ansehen ...

Und am 31. März bezüglich SOLID Principles passt da evtl. gleich mit rein.

Ich habe mir von Uncle Bob schon zwei so Vorlesungen angetan und fand sie sehr interessant. Aber da ist natürlich nichts, was man nicht in seinen Büchern auch hat (Clean Code und das Clean Architecture dürften seine beiden Hauptwerke sein ...)

Und evtl. ist das auch etwas, das man seinem Chef aufschwatzen kann. Man hat halt Zugriff auf sehr viele Bücher. Die Bücher hat man da nur online im Zugriff bzw. auf Android/iOS im Reader auch offline. Ein Export gibt es nicht. Aber es soll Leute geben, die Kapitel einfach in die Zwischenablage kopieren und dann in ein Word Dokument - was ich aber natürlich strikt ablehne - das verstößt gegen das Urheberrecht!

Und ja - einen Nachteil gibt es bei Uncle Bobs Vorlesungen: Jedes Mal, wenn ich ihn angehört habe, habe ich danach 2-3 mehr Bücher auf meiner Liste, die ich dringend lesen will :)

Also entschuldigt die Werbung für Uncle Bob (Ist kein Familienangehöriger oder so) und für das Learning@O'Reilly (Habe da keine andere Verbindung zu, außer dass ich da das Abo habe), aber da ich da eine kostenlose Möglichkeit aufgezeigt habe, wird mir das hoffentlich vergeben.

Edit: Ganz klar: Direkt nach dem Start des Trials kann man das sofort kündigen. Nicht dass man da dann aus Versehen doch etwas zahlen muss. Wobei das Abo monatlich kündbar ist.
 
X

Xyz1

Gast
Kontrollstrukturen soll das natürlich heißen. Handy. :rolleyes: Die Grundaussage bleibt natürlich bestehen, dass ein Senior, der diese nicht verstehen kann, in meinen Augen unfähig ist... Aber vielleicht muss man ab dieser Position auch nur palavern können - und andere, die programmieren können, beleidigen können. :rolleyes: Das soll es ja auch geben...
 

LimDul

Top Contributor
Kontrollstrukturen soll das natürlich heißen. Handy. :rolleyes: Die Grundaussage bleibt natürlich bestehen, dass ein Senior, der diese nicht verstehen kann, in meinen Augen unfähig ist... Aber vielleicht muss man ab dieser Position auch nur palavern können - und andere, die programmieren können, beleidigen können. :rolleyes: Das soll es ja auch geben...
Darum geht es nicht - wer Code schreibt, den nur ein Senior versteht ist selber kein Senior. Daran gibt es nichts zu rütteln.

Code schreibt man in der Praxis nicht für sich, sondern so, dass ihn möglichst viele Leute verstehen und warten können - auch Junioren. Code, den nur erfahrene Leute verstehen oder wo man sich erst reindenken muss, weil die Variablen a,b,c heißen ist schlicht und ergreifend schlechter Code. Guter Code muss mehrere Kriterien erfüllen:

- Das tun, was er soll (Minimal-Anforderung)
- Übersichtlich sein
- Lesbar sein
- Wartbar sein
- Verständlich sein
 
K

kneitzel

Gast
Die Grundaussage bleibt natürlich bestehen, dass ein Senior, der diese nicht verstehen kann, in meinen Augen unfähig ist...

Also diese Aussage teile ich sogar. Die hat aber nichts mit Clean Code zu tun. Und Deine Aussage ist auch unerheblich, denn die Situationen, auf die ich in #14 angespielt habe, waren ja nicht: "Du postest Code und Andere verstehen ihn nicht --> die Anderen sind schlecht". Die Situation war ja eher: "Du postest Code, andere verstehen ihn und machen direkt Verbesserungsvorschläge."

Aber vielleicht muss man ab dieser Position auch nur palavern können - und andere, die programmieren können, beleidigen können. :rolleyes: Das soll es ja auch geben...

Ja, ab einer gewissen Position muss man auch mehr palavern können. Nur das mit dem beleidigen stimmt nicht in meinen Augen. Ich finde es nur interessant, was für ein Selbstbild manche haben! Das stimmt mit der Realität nicht im geringsten überein!

Erste einmal ganz allgemein betrachtet: Schauen wir doch mal, was von den Universitäten so gemeldet wird. Da werden massive Wissenslücken beklagt. Bekommen wir hier doch auch öfters mal mit. Ein erster Link schnell bei Google rausgesucht:

Gehen wir mehr ins Detail:
Professionelle Softwareentwicklung - was wird da alles drunter verstanden?
- Wir haben paar grundlegende Dinge - ich nenne es mal die Sprache. Man sollte die Programmiersprache kennen....
- Wir haben Technologien. Man sollte also Technologien kennen: Tcp/ip, http, Authentication (Kerberos oder heute eher OAuth2), .... Ein gewisses Grundverständnis in gewissen Technologien ist notwendig, um dann das, was darauf aufsetzt zu verstehen.
- Dann kommen die Libraries, die angewendet werden wollen. Je nachdem, was man so braucht: Ein Logging Framework vielleicht, Spring, JDBC, Hibernate, ....
- Dann kommen Tools: Angefangen von einer IDE über Build Tools über weitere Hilfsmittel (Tomcat, WebSphere, ....) ... und auch Versionsverwaltungen!
- Dann eigenständig aber oft auch benötigt: Datenbanken. Da braucht man auch ein Verständnis ....
- Dann kommen organisatorische Themen. Das fasse ich etwas weiter. Da kommen dann Design Dinge rein, Clean Code, Architecture, Agile Methoden, Organisation der Teamarbeit, TDD, ....
- ....
Also wir haben ein sehr weites Feld. Und wie überall: man muss da auch die Anwendung üben....

Was macht da ein Schüler? Nehmen wir ein Informatik LK mit 6h / Woche. Erwartet da jemand, dass da jemand mit Bestnote ein erfahrener Entwickler ist? Ist es eine Beleidigung, wenn man dem Schüler das abspricht?
Und was macht da ein Student? Ich kenne es zu Diplom Zeiten - da hat man noch ein Jahr mehr was gemacht. Aber professioneller Software Entwickler war man danach nicht. Aber man hat schon einiges gemacht. In vielen Fächern wurde was entwickelt. Eine eigene Datenbank, ein eigenes Betriebssystem, ... Aber professionelle Softwareentwicklung? Wir hatten damals die Booch Method (Grady Booch hat dann etwas später mit UML entwickelt, da ist die Booch Method dann auch mit eingeflossen) gelernt. Aber professionelles OOD im Einsatz ist was anderes ...

Daher sehe ich da die Beleidigung nicht. Zumal es ja nicht heißen soll, dass jemand schlecht ist. Tobias mag gut sein. Technische Dinge mag er schnell auffassen (Wobei es da teilweise auch Zweifel gibt. Hin und wieder kommen da auch Zweifel auf. Aber jeder hat mal ein schlechten Tag. Konkretes Beispiel nenne ich jetzt nicht - denn das ist irrelevant. Jeder darf Fragen stellen oder Probleme haben, sich etwas zu erarbeiten. Das ist OK. Da lehne ich Wertungen ab!) Aber Tobias ist jung, er wird noch viel lernen. Wenn ich zurück denke, so hat er einiges schon gelernt.

Aber Gelerntes will auch angewendet werden. Und da scheitert es massiv. Toll, wenn dann in einem Thread Bingo gespielt wird und uns alles mögliche um die Ohren gehauen wird. Aber Nachfragen laufen ins Leere. Und da kommen wir dann auf das zurück, was ich weiter oben schon leicht Thematisiert habe: Es fehlen Grundlagen. Abiturienten machen ein Abitur und haben Probleme mit Textverständnis. Texte selbst schreiben? Das geht kaum. Eine Antwort ist dann oft: Fertiger Code wird jemandem hin geschmissen: Friss oder stirb.

Aber ok. Die Zeiten ändern sich. Es ist halt nicht mehr cool zu lesen und zu schreiben. Wird Zeit, dass das Forum die Software wechselt und wir dann nur noch Videos einstellen. Was soll man lesen? Wir machen Sprachnachrichten oder zeigen im Video unsere Desktops. Wir hängen hier halt noch auf einer veralteten Technik fest. Ich sehe das natürlich sehr gewertet, denn Lesen und Schreiben waren in meinem Leben immer wichtige Werte. Und ich glaube auch nicht an diesen Wandel und ich begrüße es sehr, wenn Kinder zum Level und Schreiben animiert werden. Und ich finde es problematisch, wenn Kinder lange Zeit so schreiben sollen, wie sie meinen, es zu hören. Und niemand soll das berichtigen....

Und ich meine, dass man Kinder durchaus berichtigen sollte. Es muss nicht alles gut und toll und richtig sein, was ein Kind macht. Ein Kind muss auch mit Kritik umgehen können. Muss auch verlieren können.

Und am Ende zurück zu dem Thread:
Und mir ist es komplett egal, wie Tobias das Thema Clean Code sieht. Ich muss es ihm nicht beibringen oder ihn überzeugen. Wäre er mein Kollege und ich müsste ihn einarbeiten: Dann wäre es mein Problem. Aber so sehe ich das ganz locker. Es gab genug Threads, wo diverse Punkte rund um Clean Code behandelt wurden. Ich fand es interessant, dass er meine Sicht auf sein Unverständnis noch einmal bestätigt hat, aber wieso ich mich bestätigt gefühlt habe: Das bringt doch nichts. Ich werde ihn nicht überzeugen. das ging die letzten Monate nicht: Warum sollte es jetzt gehen?

Daher schön, dass ihr das so ausgeführt habt @mrBrown und @LimDul aber das wird Tobias auch nicht überzeugen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E IOException Java Basics - Anfänger-Themen 4
H IOException in meinem Programm Java Basics - Anfänger-Themen 7
GadgetSofa IOException fehlt aber wo einfügen? Java Basics - Anfänger-Themen 6
N Java.io.ioexception: Stream closed Java Basics - Anfänger-Themen 2
J Problem mit IOException Java Basics - Anfänger-Themen 2
A IOException Java Basics - Anfänger-Themen 10
R Classpath java.io.IOException: Could not find resource mybatis-config.xml Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
T Warum brauche ich diese IOException? Java Basics - Anfänger-Themen 30
A JEditorPane + html -> java.io.IOException: invalid url Java Basics - Anfänger-Themen 4
D Input/Output IOException bei createNewFile() Java Basics - Anfänger-Themen 4
E Input/Output IOException beim Kompilieren Java Basics - Anfänger-Themen 3
H java.io.IOException: Failed to open... Java Basics - Anfänger-Themen 6
JAVAnnik IOException Java Basics - Anfänger-Themen 17
S 'IOException must be caught or declared' - was tun? Java Basics - Anfänger-Themen 12
H exception "java.io.IOException: Stream closed" Java Basics - Anfänger-Themen 10
D Unhandled Exception type IOException in Constructor Java Basics - Anfänger-Themen 1
S eien frage zu IOException Java Basics - Anfänger-Themen 7
F wie mit einer ioexception umgehen Java Basics - Anfänger-Themen 10
D JSP: IOException: Stream closed nach dispatchter.forward(..) Java Basics - Anfänger-Themen 13
0 Was macht eine IOException? Java Basics - Anfänger-Themen 4
G IOException Problem in eigener Klasse Java Basics - Anfänger-Themen 8
M Nach IOException fortfahren Java Basics - Anfänger-Themen 6
J System.in.read(): Unhandled exception type IOException Java Basics - Anfänger-Themen 12
C java.io.IOException: Zugriff verweigert Java Basics - Anfänger-Themen 2
H IOException bei FileReader Java Basics - Anfänger-Themen 3
F MouseListener - Unhandled IOException Java Basics - Anfänger-Themen 2
S BufferReader IOException Java Basics - Anfänger-Themen 3
C overridden method does not throw java.io.IOException Java Basics - Anfänger-Themen 4
F selstsame IOException error=3 Java Basics - Anfänger-Themen 4
G Fehlermeldung - java.io.IOException: Das Handle ist ungültig Java Basics - Anfänger-Themen 3
D Problem mit IOException Java Basics - Anfänger-Themen 17
M Fehlermeldung unreported exception java.io.IOException. Java Basics - Anfänger-Themen 2
S IOException bei BufferedReader Java Basics - Anfänger-Themen 15
N Unhandled exception type IOException? Java Basics - Anfänger-Themen 8
C Methodenaufruf mit throws IOException Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben