Sauber programmiert?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Sauber programmiert?

      Sauber programmiert?
      Also, ich habe mich gerade wieder dazu entschlossen einen weiteren Anlauf zu nehmen, C# zu lernen.
      Ich habe hier noch nen Buch liegen, indem einige Übungen sind, die ich einfach mal versuche.
      Ich sollte hier einfach ein kleines Rechenprogramm mit verschiedenen Variablen etc. zu schreiben.

      Dann habe ich einfach mal drauf los geschrieben.
      Funktionieren tut es soweit, da ich aber einfach drauf los geschrieben habe, würde ich gerne wissen ob das so sauber programmiert ist.
      Ich kann das selber eigentlich garnicht einschätzen. Hier der code:

      Quellcode

      1. namespace Übung_2._1
      2. {
      3. class Program
      4. {
      5. static void Main(string[] args)
      6. {
      7. double zahl1, zahl2, ergebnis;
      8. int rechnung;
      9. Console.Write("Geben sie eine Zahl ein: ");
      10. zahl1 = Convert.ToDouble(Console.ReadLine());
      11. Console.Write("Geben sie eine weitere Zahl ein: ");
      12. zahl2 = Convert.ToDouble(Console.ReadLine());
      13. Console.WriteLine(" ");
      14. Console.WriteLine("Wählen sie zwischen folgenden Rechenarten: ");
      15. Console.WriteLine("Addition(1), Subtraktion(2), Division(3), Multiplikation(4)");
      16. Console.WriteLine(" ");
      17. do
      18. {
      19. Console.WriteLine(" ");
      20. Console.Write("Gewünschte Rechenart: ");
      21. rechnung = Convert.ToInt32(Console.ReadLine());
      22. if (rechnung == 1)
      23. {
      24. ergebnis = zahl1 + zahl2;
      25. Console.WriteLine(zahl1 + " + " + zahl2 + " = " + ergebnis);
      26. }
      27. if (rechnung == 2)
      28. {
      29. ergebnis = zahl1 - zahl2;
      30. Console.WriteLine(zahl1 + " - " + zahl2 + " = " + ergebnis);
      31. }
      32. if (rechnung == 3)
      33. {
      34. ergebnis = zahl1 / zahl2;
      35. Console.WriteLine(zahl1 + " / " + zahl2 + " = " + ergebnis);
      36. }
      37. if (rechnung == 4)
      38. {
      39. ergebnis = zahl1 * zahl2;
      40. Console.WriteLine(zahl1 + " * " + zahl2 + " = " + ergebnis);
      41. }
      42. if (rechnung < 0 || rechnung > 4)
      43. {
      44. Console.WriteLine(" ");
      45. Console.WriteLine("Ungültige Eingabe");
      46. }
      47. }
      48. while (rechnung > 4|| rechnung < 0);
      49. Console.WriteLine("Enter drücken, um das Programm zu beenden");
      50. Console.Read();
      51. }
      52. }
      53. }
      Alles anzeigen

      Hallo,

      die Frage ist was du als "sauber" ansiehst und was schon alles behandelt wurde in dem Buch, hier einfach ein paar Dinge die mir beim überfliegen aufgefallen sind und die du dir generell zu Herzen nehmen solltest.

      1. Schreib nicht die gesamte Logik in die Main-Methode, das mag für kleine Projekte am Anfang einfacher sein, zieht aber später einen Rattenschwanz hinter sich her.
      2. Lager aus was du auslagern kannst, wenn sich bestimmte Pattern wiederholen, dann mach eigene Methoden draus.
      3. Niemals, wirklich NIEMALS traue dem was ein Benutzer eingegeben hat, schaue immer erst ob es sich um das erwartete handelt.

      Ansonsten gibt es nur die Frage warum du den Weg der Umwandlung zu Int gehst, wenn du auch einen String-Vergleich vornehmen kannst.
      Was Kommentare etc. pp angeht kann ich dir StyleCop währmstens empfehlen.
      Wir müssen das in der Arbeit benutzen und damit wird der Code schon ziemlich übersichtlich, weil das einfach sehr pingelig ist.
      Es nervt etwas aber ich finds gut.

      Zu 3. von Ennosuke:

      Geh immer vom DAU(Dümmster anzunehmender User) aus. Du kannst dir nicht vorstellen wie hol manche sind.
      Das hat nichts mit "Hohl" zu tun.
      Ein Solides Programm besitzt eben eine entsprechende Ausnahmebehandlung um Abstürzen vorzubeugen.

      Das heißt, wenn ein Fehler passiert, weiß das Programm wie damit umzugehen ist um ihn zu beheben.
      Das ist einfach ordentlicher Programmier-Stil.

      Gut man kann natürlich seine Kunden für Idioten erklären. Aber selbst das würde ich dann auch dem Entwickler an lasten, weil er zu "hohl" ist, ein Programm zu entwickeln, dass damit umgeht. ;)
      And the reign will kill us all
      We throw ourselves against the wall
      But no one else can see
      The preservation of the martyr in me


      Slipknot - Psychosocial
      Ich denke was Brando damit meinte, dass es Benutzer gibt die es selbst dann nicht hinkriegen wenn man es in großen Lettern drüber schreibt.

      Wenn wir einen Taschenrechner als Beispiel nehmen, die dort dann versuchen mit Buchstaben zu rechnen oder Sonderzeichen, das hat dann erstmal wenig mit deinem Programm zu tun, denn das kann vernünftig mit Zahlen umgehen, aber du musst auch den Fall abdecken, dass irgendein Idiot etwas falsches eingibt.

      Sicher das wird alles in der Ausnahmebehandlung bearbeitet, aber wenn man es einem Lerndem nicht sagt, dann wird er es auch nicht kennen. Außerdem kann man es auch auf die Gestaltung eines Programms, bzw. der Oberfläche beziehen, da man immer damit rechnen muss, dass es Leute gibt die sich nicht mit Anleitungen etc. beschäftigen und gleich loslegen wollen.