Delphi-PRAXiS

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!

Robert Marquardt 19. Jun 2005 18:32

Re: Win Niki Code Formatierung
 
Der Borland Style Guide hat etwas dagegen.
Das Problem ist das solche Ausnahmen dem kuenstlerisch-intuitiven Codearrangement Tuer und Tor oeffnen.
Leider hat nicht jeder die gleiche Vorstellung von intuitiv.
Zusaetzlich ist mehr als ein Statement gefaehrlich. Wenn man nachtraeglich ein if einfuegt, so vergisst man leicht den dann noetigen begin end Blcok.
Der Compiler hat gegen die Source nichts einzuwenden, aber er generiert nicht den Code den man erwartet.

Die Muhkuh 19. Jun 2005 18:56

Re: Win Niki Code Formatierung
 
Zitat:

Zitat von Speedmaster
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!

Hi,

findest du? Ich würde das so schreiben:

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);

Rastaman 19. Jun 2005 20:04

Re: Win Niki Code Formatierung
 
Was ist denn nun richtiger und akzeptabler und übersichtlicher?

Khabarakh 19. Jun 2005 20:14

Re: Win Niki Code Formatierung
 
Zitat:

Zitat von Gerrit89
richtiger

:mrgreen:

Ich finde, dass es hauptsächlich deine eigene Meinung ist. Persönlich würde ich es wie Spider schreiben, aber nehmen wir zum Bleistift dizzys Blur-Funktion:
Delphi-Quellcode:
for x := 2 to i.Width-2 do
    begin
      // Blauwert des Zielpixels aus den Blauwerten der Ausgangsregion basteln
      Po^[1] := round(((P1^[4]+P1^[7]+P1^[10]      +
                        P2^[1]                     + P2^[13] +
                        P3^[1]                     + P3^[13] +
                        P4^[1]                     + P4^[13] +
                        P5^[4]+P5^[7]+P5^[10])        / AntAussen) +

                      ((P2^[4]+P2^[7]+P2^[10]      +
                        P3^[4]      +P3^[10]      +
                        P4^[4]+P4^[7]+P4^[10])        / AntMitte) +

                       (P3^[7]                 / AntInnen));

      // Wie bei Blau, jetzt mit grün
      Po^[2] := round(((P1^[5]+P1^[8]+P1^[11]      +
                        P2^[2]                     + P2^[14] +
                        P3^[2]                     + P3^[14] +
                        P4^[2]                     + P4^[14] +
                        P5^[5]+P5^[8]+P5^[11])        / AntAussen) +

                      ((P2^[5]+P2^[8]+P2^[11]      +
                        P3^[5]      +P3^[11]      +
                        P4^[5]+P4^[8]+P4^[11])        / AntMitte) +

                       (P3^[8]                 / AntInnen));

        // und bei Rot...
        Po^[3] := round(((       P1^[6]+P1^[9]+P1^[12]       +
                          P2^[3]                   + P2^[15] +
                          P3^[3]                   + P3^[15] +
                          P4^[3]                   + P4^[15] +
                          P5^[6]+P5^[9]+P5^[12])        / AntAussen) +

                        ((P2^[6]+P2^[9]+P2^[12]       +
                          P3^[6]      +P3^[12]       +
                          P4^[6]+P4^[9]+P4^[12])        / AntMitte) +

                         (P3^[9]                 / AntInnen));
IMO ist das die einzig sinnvolle Darstellung.

Rastaman 19. Jun 2005 20:29

Re: Win Niki Code Formatierung
 
eigentlich rede ich von meinem prog.
Weicht doch nicht immer auf andere Schnipsel aus.

nailor 19. Jun 2005 20:40

Re: Win Niki Code Formatierung
 
weder fisch noch fleisch ;) wenn du mit deinem lehrer gewettet hast, müsst ihr euch auf ein unentschieden einigen....


tendenziell eher deins. aber perfekt... nein ... wobei sich die frage stellt, ob es "perfekt" gibt.

Rastaman 19. Jun 2005 20:49

Re: Win Niki Code Formatierung
 
Also ich wüsste gar nicht was an meinem falsch sein sollte.
Ich denke doch so stand es auch in Luckies Styleguide.

CalganX 19. Jun 2005 20:54

Re: Win Niki Code Formatierung
 
Hi,
nein. Sicherlich nicht. Lies ihn dir am Besten nochmal durch. Den Link hast du ja noch, ansonsten such einfach danach.
Da steht auch eindeutig, dass man mit 2 Leerzeichen einrücken soll, alle reservierten Wörter klein schreiben sollte etc. ;)
Wenn du nach einer "richtigen" Lösung fragst, ist der Styleguide eben diese. ;)

Chris

Die Muhkuh 19. Jun 2005 20:55

Re: Win Niki Code Formatierung
 
Zitat:

Zitat von nailor
weder fisch noch fleisch ;) wenn du mit deinem lehrer gewettet hast, müsst ihr euch auf ein unentschieden einigen....


tendenziell eher deins. aber perfekt... nein ... wobei sich die frage stellt, ob es "perfekt" gibt.

"Perfekt" finde ich, wäre der Borland Styleguid.


Zitat:

Ich denke doch so stand es auch in Luckies Styleguide.
Luckie hat nen eigenen Styleguid :shock: ? IMHO ist das die deutsche Übersetzung des Borlandstyleguides.

@Gerrit

für mich wäre das der perfekte Code:

Delphi-Quellcode:
program Insel_mit_Bergen;

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

begin
  repeat
    if (vorne_frei) then
    begin
      vor;
    end;

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

  until platz_belegt;
end.

Rastaman 19. Jun 2005 20:56

Re: Win Niki Code Formatierung
 
Naja 1. Ich habe immer mit 2 Leerzeichen eingerückt und 2. Mache ich das auch nur bei WIN NIKI mit der Großschreibung weil ich das sonst kagge find, weil das teil kein Syntaxhighlight hat.

@Spider: Mein Code ähnelt deinem aber genau bis auf die reservierten Wörter die bei mir groß sind und auf die 1 zeile die ich immer noch frei lasse. Und bei WinNiki gibt es keine Klammern.

Die Muhkuh 19. Jun 2005 20:58

Re: Win Niki Code Formatierung
 
Zitat:

Zitat von Gerrit89
Naja 1. Ich habe immer mit 2 Leerzeichen eingerückt und 2. Mache ich das auch nur bei WIN NIKI mit der Großschreibung weil ich das sonst kagge find, weil das teil kein Syntaxhighlight hat.

@Spider: Mein Code ähnelt deinem aber genau bis auf die reservierten Wörter die bei mir groß sind und auf die 1 zeile die ich immer noch frei lasse. Und bei WinNiki gibt es keine Klammern.

Ich rücke auch immer mit zwei Leerzeichen bzw. einem Tab ein. Das mit den Klammern wusste ich nicht^^.

jensw_2000 19. Jun 2005 21:17

Re: Win Niki Code Formatierung
 
Gib deinem Lehrer mal den Link zum Style-Guide und redet einfach nochmal drüber.
Eventuell könnt ihr ja einen Kompromiss finden.

Letztendlich sollte jeder seinen Code so formattieren, das vor allem er selbst ihn flink lesen kann.
Falls man den Source veröffentlicht, kann man ja immer noch schnell einen Sourceformatter drüberjagen um ihn für den Großteil der Entwickler "lesbar" zu machen.




Code:
Club-Member


Alter: 5
Status: online
angemeldet: 06.01.2005
Wohnort: Lübbecke
Delphi 2005 Personal
Wie kommt man als 5jähriger in die 10 Klasse. :gruebel:

malo 19. Jun 2005 21:19

Re: Win Niki Code Formatierung
 
Mal so eine kleine Frage am Rande: Was ist Win Niki? :gruebel:

Google und Wikipedia haben mich leider kein stück weitergebracht :(

[edit]Wär auch schön zu wissen, wo man das herbekommen kann ;) [/edit]


@jensw_2000: Das ist ganz offensichtlich ein gefaktes Geburtsdatum - wohl für die verspielten Kinder, die das lustig finden :roll:

Rastaman 20. Jun 2005 15:21

Re: Win Niki Code Formatierung
 
Ach malo deine Aroganz ist wieder unübertrefflich.
Im Netz wirst du auch kaum was finden über Win Niki weil es so alt ist, dass es schon lange kostenlos ist.

Flocke 20. Jun 2005 16:02

Re: Win Niki Code Formatierung
 
@malo: Such mal bei Amazon nach "Niki Roboter".
Hier habe ich einen Download gefunden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.

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