Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Win Niki Code Formatierung (https://www.delphipraxis.net/48029-win-niki-code-formatierung.html)

Rastaman 19. Jun 2005 17:39


Win Niki Code Formatierung
 
Hallo.
Ich habe Informatik in der 10 Klasse und wir haben grade WIN NIKI. Das ändert Turbo Pascal ja sehr, nur dasses halt viel einfacher ist.
Hier meine Frage :
Mein Informatiklehrer will mich dauernd über die Codeformatierung belehren.

Meine Version :
Delphi-Quellcode:
PROGRAM Insel_mit_Bergen;

  PROCEDURE drehe_rechts;
  BEGIN

    drehe_links;
    drehe_links;
    drehe_links;

  END;

  BEGIN

    REPEAT

      IF vorne_frei THEN
        vor;

      IF rechts_frei AND vorne_frei THEN
      BEGIN

        drehe_rechts;
        vor;

      END;

      IF NOT rechts_frei AND NOT vorne_frei THEN
        drehe_links;

    UNTIL platz_belegt;

  END.
Seine Version :
Delphi-Quellcode:
PROGRAM Insel_mit_Bergen;

  PROCEDURE drehe_rechts;
  BEGIN
    drehe_links;drehe_links;drehe_links;
  END;

  BEGIN
    REPEAT
      IF vorne_frei THEN vor;

      IF rechts_frei AND vorne_frei THEN BEGIN
                                                            drehe_rechts;
                                                            vor;
      END;

      IF NOT rechts_frei AND NOT vorne_frei THEN drehe_links;
    UNTIL platz_belegt;

  END.
So ähnlich zumindest.
Also ich finde das total unübersichtlich. Wie ist es denn nun "richtig"?

CalganX 19. Jun 2005 17:41

Re: Win Niki Code Formatierung
 
Hi,
ich kenne Win Niki nicht, aber es sieht Pascal-mäßig aus. D.h. im Endeffekt gilt auch hier der [dp]"Object Pascal Styleguide"[/dp]. "Richtig" in dem Sinne ist eigentlich nichts, weil es kein Gesetz dafür gibt, aber den Richtlinien nach, sind beide Version "falsch". ;)

Dem Styleguide nach, wäre diese die richtige Version:
Delphi-Quellcode:
program Insel_mit_Bergen;

procedure drehe_rechts;
begin
  drehe_links;
  drehe_links;
  drehe_links;
end;

begin
  repeat
    if vorne_frei then
      vor;

    if rechts_frei and vorne_frei then
    begin
      drehe_rechts;
      vor;
    end;

    if (not rechts_frei) and (not vorne_frei) then
      drehe_links;
  until platz_belegt;
end.
Bin mir jetzt aber nicht hundertprozentig sicher...

Chris

Speedmaster 19. Jun 2005 17:42

Re: Win Niki Code Formatierung
 
Das ist beides Total Falsch( EDIT: Zumindestens IMHO )!!!

Das kann doch kein Mensch lesen!

http://www.dsdt.info/grundlagen/styleguide/

FBrust 19. Jun 2005 17:46

Re: Win Niki Code Formatierung
 
Hallo Gerrit89,

ein "richtig" oder "falsch" gibt hier bei wohl nicht ("falsch" ist nur, wenn der Compiler es nicht erkennt bzw. das Programm anders abläuft als geplant).

Da hat wohl jeder Programmierer seinen eigenen Stil, da IMHO programmieren sehr vom Typ des Programmiers oder der Programmmiererin abhängt. Ich persönlich finde den oberen Text übersichtlicher (auch wenn ich die eine oder andere Leerzeile weglassen würde).

Den Aufruf mehrerer Funktionen hintereinander in einer Zeile finde ich sogar sehr unübersichtlich.

Aber das ist meine persönliche Meinung.

Prinzipiell sollte jeder Code so geschrieben werden, dass man auch nach 6 Monaten erkennt, wie das Programm abläuft und was "uns der Künstler damit sagen wollte".



Gruß
Frank

Pr0g 19. Jun 2005 17:47

Re: Win Niki Code Formatierung
 
Ich würde es so schreiben (ähnlich wie du):
Delphi-Quellcode:
program Insel_mit_Bergen;

procedure drehe_rechts;
begin
  drehe_links;
  drehe_links;
  drehe_links;
end;

begin
  repeat
    if vorne_frei then
      vor;

    if rechts_frei and vorne_frei then
    begin
      drehe_rechts;
      vor;
    end;
   
    if not rechts_frei and not vorne_frei then
      drehe_links;

  until platz_belegt;
end.
Edit: Wie sieht denn "drehe_links" aus, wenn es für "drehe_rechts" dreinmal aufgerufen wird. Gibts kein normales rechtsdrehen? :lol:

Rastaman 19. Jun 2005 17:47

Re: Win Niki Code Formatierung
 
Also ich finde es sieht genau so aus wie bei mir was die IFs angeht.
Den Rest hab ich mir nicht angeschaut aber das ganze Prog besteht ja nur aus IFS.
Delphi-Quellcode:
if ((X = Y) or (Y = X) or
  (Z = P) or (F = J) then
begin
  S := J;
end;
Daran ist doch bei mir nichts anders ausser dass ich eine Leerzeile lasse.

Ultimator 19. Jun 2005 17:48

Re: Win Niki Code Formatierung
 
Ich würde das so machen:
Delphi-Quellcode:
program Insel_mit_Bergen;

procedure drehe_rechts;
begin
  drehe_links;
  drehe_links;
  drehe_links;
end;

begin
  repeat
    if vorne_frei then
      vor;
    if rechts_frei and vorne_frei then
      begin
        drehe_rechts;
        vor;
      end;
    if not rechts_frei and not vorne_frei then
      drehe_links;
  until platz_belegt;
end.

mirage228 19. Jun 2005 18:05

Re: Win Niki Code Formatierung
 
Zitat:

Zitat von Pr0g
Edit: Wie sieht denn "drehe_links" aus, wenn es für "drehe_rechts" dreinmal aufgerufen wird. Gibts kein normales rechtsdrehen? :lol:

Ne, ich hatte auch mal NIKI für Turbo Pascal, da gabs auch "Lehrgründen" kein drehe_rechts, der Schüler sollte selbst drauf kommen. ;)

mfG
mirage228

Robert Marquardt 19. Jun 2005 18:12

Re: Win Niki Code Formatierung
 
Leerzeilen nach begin und vor end sind kontraproduktiv, denn es sind weniger Zeilen mit Inhalt sichtbar.
Die Einrueckung strukturiert doch schon genuegend.

Der Style Guide von Borland beruht auf Forschungsergebnissen. Man sollte ihn nicht leichtfertig uebergehen.
Natuerlich kann man ihn variieren. Bei Jedi haben wird das z. B. gemacht, denn einiges ist heutzutage veraltet oder bedarf der Praezisierung.
80 Zeichen ist z. B. bei Bildschirmaufloesungen von 1280 und darueber ein bischen knapp bemessen.

Speedmaster 19. Jun 2005 18:20

Re: Win Niki Code Formatierung
 
Gibt natürlich ausnahmen beim Hintereinanderschreiben von Funktionen, z.b. hier:
Delphi-Quellcode:
glColor3f(0,0,0); glVertex3f(0,0,0); glTexCord(0,0);
glColor3f(0,0,1); glVertex3f(0,0,1); glTexCord(0,1);
glColor3f(0,1,1); glVertex3f(0,1,1); glTexCord(1,1);
Da ist es sehr unübersichtlich es nicht hintereinander zu schreiben!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz