Schlechter Scherz?



  • Tag die Herren,
    Das muss jetzt einfach sein:
    Mein Informatiklehrer hat uns einen Beispielcode in Java geschrieben, der Linien zeichnen sollte: Man gibt in einer Textbox die Koordinaten ein, drückt auf zeichne und er zeichnet die Linie zusätzlich zu den anderen.
    Ich wollte dazu nichts anderes sagen, als den Code mal zu posten, da er ihn sowieso zu 90% aus dem Internet kopiert hat bezweifle ich, dass da irgendwelche Urheberrechtlichen Ansprüche drauf sind;P

    import java.awt.*;
    import java.applet.Applet;
    import java.awt.event.*;
    import java.text.*;
    
    public class zeichne1 extends Applet implements ActionListener {
    
      // Variablen, die von allen Methoden im Applet verwendet werden
      private TextField eingabeFeld; // Eingabefeld für ganze Zahlen
      private Button zeichne; // Button zum Start der Berechung
      private Button loesche;
      int x1pos,y1pos,x2pos,y2pos;
        // Hier werden die Initialisierungen des Applets durchgeführt.
      public void init() {
    
        //Eingabe ganze Zahl
        add(new Label("Zeichenbefehl eingeben:"));
        eingabeFeld = new TextField(" ",15);
        add(eingabeFeld);
        eingabeFeld.addActionListener(this);
    
        //Button zum Start des Programms
        zeichne = new Button("zeichne");
        add(zeichne);
        zeichne.addActionListener(this);
        loesche=new Button("loesche");
        add(loesche);
        loesche.addActionListener(this);
      }
    
      public void actionPerformed(ActionEvent ev) {
          Graphics stift;
          stift=getGraphics();
          String s=ev.getActionCommand();      
          try { //exception handling
          // Daten von den Eingabefeldern einlesen
          String koord1 = eingabeFeld.getText();
          // Aufruf der Methode, die die Berechnungen durchführt
          int x1=Integer.parseInt(koord1.substring(0,koord1.indexOf(";")));
          koord1=koord1.substring(koord1.indexOf(";")+1,koord1.length());
          int y1=Integer.parseInt(koord1.substring(0,koord1.indexOf(";")));
          koord1=koord1.substring(koord1.indexOf(";")+1,koord1.length());
          int x2=Integer.parseInt(koord1.substring(0,koord1.indexOf(";")));
          koord1=koord1.substring(koord1.indexOf(";")+1,koord1.length());
          int y2=Integer.parseInt(koord1.substring(0,koord1.indexOf(";")));
          koord1=koord1.substring(koord1.indexOf(";")+1,koord1.length());
          x1pos=x1; y1pos=y1;
          x2pos=x2; y2pos=y2;
          if (s.equals("zeichne")) paint(stift);
          if (s.equals("loesche")) repaint();
    
        }
        catch (Exception ex) {
    
        }
      }
    
      public void paint (Graphics stift) {
          stift.drawLine(x1pos,y1pos,x2pos,y2pos);
        }    
    
      // Algorithmus, eigentliches Programm
    
    } // Ende der Klasse Dummy1
    

    ich gebe erst einmal kein Kommentar dazu ab, sondern warte einfach mal die Reaktionen ab.



  • und, was ist jetzt dein Problem? 🙄



  • Naja, das "Error-Handling" ist schon geil 😃
    Die ganzen deutschen Variablen-Namen auch...


  • Administrator

    Der Programmcode ist sicher kein Leckerbissen, aber so dramatisch finde ich das jetzt schon nicht. Für Anfänger ist das zumutbar. Ok, vielleicht wäre eine bisschen bessere Darstellung für den Anfänger hilfreich gewesen 😃

    Die Fehlerbehandlung haben wir zu Beginn auch so gelernt. Aus dem einfachen Grund, weil Exceptions immer erst etwas später im Stoff drankommen und man will die Anfänger nicht damit überfordern. Deshalb wird am Ende einfach dieses Konstrukt, ohne Fehlerbehandlung, drumherum gebaut. Bei uns gab es teilweise sogar einfach ein throws Exception . Wir sollen das nicht beachten, das käme später und wäre nur da, damit der Programmcode funktioniere 😉

    Naja, aber ich fand es viel schlimmer, dass unser Professor FILE, fopen, fclose, usw. als C++ verkauft hatte. Dort bin ich fast auf die Palme gegangen, zum Glück hatte es keine in der Umgebung 😉
    Grundsätzlich alle Übungsaufgaben waren C statt C++. Aber naja, der unterrichtet halt normalerweise auch C, dann hat man wohl gedacht, er könne auch C++ 😃
    Und 4 Wochen um C++ zu unterrichten ist schon etwas knapp bemessen 🤡

    Grüssli



  • Nun der Professeur kommt wohl auch aus der C-Ecke und unterrichtet jetzt Java? XD



  • Dravere schrieb:

    Und 4 Wochen um C++ zu unterrichten ist schon etwas knapp bemessen

    Noch besser als bei uns: zwei ganze Vorlesungen dazu, so nebenbei zu
    Datenstrukturen, weil der Prof nicht da war. Ich hab mich da zwar rausgehalten,
    aber mir taten die Anderen leid, welche zuvor nur von Pascal und Html gehört
    hatten und in einem halben Jahr eine Prüfung schreiben sollten, bei der
    Quellcode in C++ angeben werden muss.



  • Hem, was habt ihr denn? Das ganze ist keine Katastrophe, wie es der orig. Poster andeuten will. Es ist eher so, wie man es in den meisten Java-Einsteigerbüchern vorfindet. Und deutsche Bezeichner sind dann angebracht, wenn es sich um fachliche Begriffe eines Unternehmens/Branche handelt. Z.B. nennen wir unsere Klassen und Variablen im Unternehmen Teilenummer . Aus dem einfachen Grund, weil deutsch Konzernsprache ist und der Begriff Teilenummer ein fachlicher Begriff ist, der sogar in unserer Branche fest verankert ist (der Begriff ist auch in diversen Katalogen und Preislisten zu finden). Lachen wird man bei uns eher, wenn jemand auf die Idee kommt, eine fachliche Klasse oder Variable Partnumber zu nennen.

    Technische Begriffe, sind dann aber wieder englisch. Also Eingabefeld... da würde ich sagen, ist nicht mal das deutsche Wort fehl am Platz, sondern generell die Benamung! Eingabefeld ist zu allgemein, hätte eher heißen müssen numberField oder so.

    Ansonst kann man natürlich noch fragen, wo das MVC-Konzept geblieben ist? Aber bei der Miniaufgabe kann man es auch übertreiben! Weil ein HelloWorld löse ich auch ohne Schnickschnack!



  • Mich wunderts das noch niemandem aufgefallen ist, dass der Code nicht tut was er soll, schaut euch mal die Paintmethode an und die Art wie ein refresh erwirkt wird.
    Und zu Katastrophe: leerer Catchblock, unzutreffende Kommentare, keine konsistenten logischen Absätze und ein paar Dinge hätte man ruhig in ne separate Funktion packen können.



  • Dravere schrieb:

    Naja, aber ich fand es viel schlimmer, dass unser Professor FILE, fopen, fclose, usw. als C++ verkauft hatte. Dort bin ich fast auf die Palme gegangen...

    das ist ja wirklich extrem übel. wahrscheinlich hat er noch nicht mal <cstdio> includiert. ja, es gibt schon böse menschen...
    🙂



  • Bulli schrieb:

    Und deutsche Bezeichner sind dann angebracht, wenn es sich um fachliche Begriffe eines Unternehmens/Branche handelt...

    ...oder das Programm nur im deutschsprachigen Raum vertrieben wird, und der Chef keine Überlegungen Richtung I18N/L10N anstrebt. Dann ist die Begründung durchaus gerechtfertigt zu sagen: "Wir verwenden die Bezeichner so, wie sie auch im Programm verwendet werden.". Durchaus legitim.

    In meiner jetzigen Firma ist das so, auch wenn ich privat dennoch die einheitliche (sprich englische) Schreibweise vorziehe - trotz meiner eher mageren Englischkenntnisse (Was aber auch durchaus zu Zeitverlust beim Programmieren führen kann, wenn man erst einmal passende englische Begriffe sucht). Und ein Engländer würde wohl bei der ein oder anderen Bezeichnung müde lächeln, da man in der Regel auch im Wörterbuch selten die benötigten Fachbegriffe direkt findet.

    cu André



  • Also ich werd immer irre, wenn ich zwischen deutsch und englisch hin und her wechseln muss. Und da mir die deutsche Grammatik für Makros dauerhaft zu komplex erscheint, hab ich mich komplett für Englisch entschieden.

    Das Programm oben ist doch okay, erklärt sich wenigstens von selbst. Ich hab da bei uns im Informatik-Unterricht damals schlimmere Dinge gesehen, wenn ich mich recht entsinne :p .



  • asc schrieb:

    ...oder das Programm nur im deutschsprachigen Raum vertrieben wird

    Ich hab mal polnischen Code gewartet.
    Spaetestens seit dem keine deutschen Bezeichner mehr...

    Das Programm ansich ist aber ok wenn es ein Schueler geschrieben haette - als Code aus dem man lernen soll ists ungeeignet. Aber da hab ich auch schon schlimmeres gesehen...



  • Wir haben zB direkt die Anweisung Code auf Deutsch zu schreiben damit er schwerer outzusourcen ist. Denk zwar mal das kommt eher aus legacy aber man kann diesen Standpunkt schon durchaus verstehen.



  • Anonym schrieb:

    Mich wunderts das noch niemandem aufgefallen ist, dass der Code nicht tut was er soll, schaut euch mal die Paintmethode an und die Art wie ein refresh erwirkt wird.

    👍


Anmelden zum Antworten