AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Codedesign

Ein Thema von Luckie · begonnen am 10. Nov 2003 · letzter Beitrag vom 6. Jan 2004
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Codedesign

  Alt 10. Nov 2003, 20:48
Ich bekam jetzt mal Code zusehen, der meiner Meinung vom Design her schelcht war. Daraufhin habe ich ihn überarbeitet - eigentlich total omgekrempelt. Dabei habe ich mir einige Gedanken gemacht, was guten Code von schlechten unterscheidet. Als Essenz bin ich dabei auf folgende Regeln gekommen:
  • Trennung von Aufgabe / Funktion und der Benutzerschnittstelle,
  • erleichtert die Wiederverwendbarkeit von Codeteilen.
  • Aufteilung in Teilprobleme. Daraus resultiert:
  • Aufteilung in sinnvolle Abschnitte (Subroutinen).
  • Für sich sprechende Variablen- und Funktionsnamen
  • So wenig Kommentare wie möglich, so viele Kommentare wie nötig.
  • So wenig globale Variablen wie möglich.
  • Subroutinen sollten auf eine Bildschirmseite passen.
Jetzt würde ich von euch gerne wissen, ob ihr mit mit einer Meinung seit, ob ihr daran was auszustezten habt oder ob ihr aus eigenen erfahrungen noch was ergänzen würdet.

Anmerkunmg zum letzten Punkt: Diesen habe ich noch wie folgt erläuteret:
Zitat:
Über den letzten Punkt kann man geteilter Meinung sein. Was eigentlich schon damit anfängt, was eine Bildschirmseite denn ist. Bei einer Auflösung von 1280 x 1024 bekomme ich mehr auf eine Bildschirmseite als bei einer Auflösung von 800 x 600. Aber wie auch immer wir eine Bildschirmseite definieren, bin ich der Meinung, dass es das Lesen und Verstehen eines Quellcodes unheimlich erleichtert, wenn man die gesamte Subroutine mit einem Blick erfassen kann ohne großartig scrollen zu müssen. Hier zu kann man auch noch folgenden Punkt zu zählen: Zeilen sollten nicht länger als 80 Zeichen werden. Einmal, um horizontales Scrollen zu vermeiden, was erwiesenermaßen noch unbeliebter ist als vertikales, und zum Zweiten werden so meist, bei vernünftig gewählter Schriftgröße, hässliche Zeilenumbrüche beim Drucken vermieden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Codedesign

  Alt 10. Nov 2003, 21:14
Grundsätzlich stimm ich den Punkten mal zu. Zum Thema subroutinen äußer ich mich lieber nich da ich sowas verabscheue, da sieht kein schwein mehr durch und in den meisten fällen würde es auch nicht schaden diese einfach in eine eigene funktion zu packen und diese dann in den privateteil zu packen.
Ich selbst programmier mehr nach dem Try and Error Prinzip und wenns dann bissl mehr source wird, wird umsortiert und zwischen den funktionen eine zeile {===} eingefügt damit man beim durchscrollen durch die unit schneller funktionsanfang und -ende findet... aber wer hier schonmal bissl source von mir runtergeladen hat der wird da in den seltensten fällen durchgesehen haben und wenns nach meinem scheff geht muss ich mich och mal dazu durchringen in der Zukunft kommentare im Source unterzubringen aber bins halt gewöhnt source von anderen durchzuwühlen um dann zu wissen wie was funktioniert...

So sind die Punkte eigentlich ne supi Grundlage für Open-Sourceprogrammierung und Projekte wo mehrere Leutz mitmachen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Codedesign

  Alt 10. Nov 2003, 21:16
Zitat von SirThornberry:
Zum Thema subroutinen äußer ich mich lieber nich da ich sowas verabscheue, da sieht kein schwein mehr durch und in den meisten fällen würde es auch nicht schaden diese einfach in eine eigene funktion zu packen und diese dann in den privateteil zu packen.
Hä? Subroutinen = Funktionen/Prozeduren.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Codedesign

  Alt 10. Nov 2003, 21:17
Achso, dachte mit Subroutinen waren die Proceduren/Funktionen gemeint die innerhalb einer Funktion definiert sind
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5

Re: Codedesign

  Alt 10. Nov 2003, 21:21
Zitat von SirThornberry:
Achso, dachte mit Subroutinen waren die Proceduren/Funktionen gemeint die innerhalb einer Funktion definiert sind
Das sind eher Inlay-Prozeduren/Funktionen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Codedesign

  Alt 10. Nov 2003, 21:26
ok, dann will ich mich halt zu den inlay-Prozeduren/Funktionen nicht weiter äußern (thx für die Theorie, war schon kurz davor nen thread dazu aufzumachen)

Der Punkt das "normale" proceduren und Funktionen nicht länger als eine Bildschirmseite sein sollten erscheint mir bissl unmöglich. Bei gewissen Projekten ist das einfach nicht möglich. Bsp.: 2D/3D-Move berechnungen. Außerdem kann man ja die übersichtlichkeit da waren in dem man wie schon erwähnt zwischen die Proceduren/Funktionen "{=======}" einfügt
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Codedesign

  Alt 10. Nov 2003, 21:40
Hmmm. Jetzt wo ich das einmal runtergeschrieben habe, sind doch ein paar Fragen zum Design "dazwischengerutscht"... Trotzdem ist vieles zum Theme "Code" dabei. Was haltet ihr von dieser Ergänzung?

Klarer Entwurf
  • Abstrakten Entwurf des Systems anfertigen (Modellierungswerkzeuge und Karten)
  • Der Einsatz von DesignPatterns zahlt sich aus (auch ohne OOP lassen sich viele Ideen übertragen)
  • Den Entwurf mit dritten diskutieren

Nutzung der Typenstrenge in Pascal/Delphi Language
  • Typesierte Ordinalwerte, um "selbstüberprüfende" Routinen zu schreiben (unbedachte Fälle vom Compiler "aufspüren" lassen)
  • Arbeiten mit Klassen und Interfaces statt mit interpretierten Integers und Records (implementierung später ändern, bessere Integration)

Kapselung, Geheimnisprinzip
  • Wenn schon keine OOP, Funktionen nach Zuständigkeiten gliedern, nicht nach einfacherer Implementierung (UseCases)
  • Trampdaten vermeiden (Delegation ok, aber es muss Sinn machen, dass eine Methode/Funktion einen Parameter erhält)
  • Globale Variablen/Singeltons vermeiden (Probleme bei Nebenläufigkeit), stattdessen Kontexte verwenden

Vorbedingungen und Nachbedingungen
  • Konsequener und wohldurchdachter Einsatz von Exceptions (auch hier: Typen!)
  • Assertions, für Programmierung "By Contract"

Testen, Debugging, Profiling
  • Code für Regressionstests und Unittests vorbereiten
  • Logging nach Möglichkeit generieren und nicht implementieren (Konsistenz, Übersichtlichkeit)
  • Instrumentieren von Code ausschließlich über Generatoren vornehmen lassen (Übersichtlichkeit)!

Es ist nichts schlimmes, die Lösung in mehreren Iterationen zu verbessern. Auch hier ist die Hilfe dritter unbezahlbar!
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#8

Re: Codedesign

  Alt 10. Nov 2003, 21:42
Irgendwo habe ich mal gelesen das Sakura zitiert hat, dass Prozeduren mit cirka 70 Zeilen länge am wenigsten Fehler enthalten, deshalb versuche ich persönlich zusatzfunktionen nicht umfangreich zu gestalten und wenn auf mehrere Funktionen aufzuteilen.
Ansonsten empfehle ich den OP Style Guide (gibts bei Luckie auf der Page ). Was ich ansonsten überhaupt nicht abkann (was man hier auch manchmal im Forum sieht) sind PERMANENTE GROSSSCHREIBUNG, so Spaghetticode, und nicht schön abgestufter Code . Naja das wars von meiner Seite zu dem Thema

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Codedesign

  Alt 10. Nov 2003, 21:45
Zitat von SirThornberry:
Achso, dachte mit Subroutinen waren die Proceduren/Funktionen gemeint die innerhalb einer Funktion definiert sind
Man sieht, dass du nie ein Perl-Programm gesehen hast
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: Codedesign

  Alt 10. Nov 2003, 23:14
und das diese Inlay funktionen offiziell "nested" Funktionen heissen

Ich persönlich sehe nested Funktionen als guten OOP Stil an. Sie sind nämlich meistens nur 3-4 Zeilen lang und fassen Funktionalität zusammen die mehrmalig im übergeordneten Code benötigt wird, und zwar ausschließlich NUR im übergeordneten Code. Sobald diese Funktionalität interessant für andere Funktionen wird sollte man sie auslagern.

Nested Funktion sind deshalb auch übersichtlicher ! Denn man wird sie einmalig lesen und verstehen, und konzentiert sich dann auf den eigentlichen Code der natürlich nun viel kürzer und besser lesbar ist !

Wird nun die eigentliche Funktion kopiert, weil man sie eventuell wo anders einmalig benötigt, so kopiert man immer auch die neseted Funktionen mit. Somit verliert man nicht eventuell kurze Codestücken, oder muß diese aus anderen Units zusammen suchen.

Sie pauschal zu verdammen oder immer als gut zu heissen ist sehr schlechter "OOP/NOP" Stil !

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz