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 5 von 6   « Erste     345 6      
Benutzerbild von negaH
negaH

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

Re: Codedesign

  Alt 11. Nov 2003, 12:34
Zitat:
Für komplizierte Ausdrücke verwende ich da meist ein Stück Papier und male ein KV-Tafel auf.
Damit kann man komplizierte abfragen vereinfachen!
Korrekt. Auch wenn man als Anfänger öfters mal das Hirn dabei verrenken muß, so wird man mit der Zeit ein Gefühl für die korrekten Ausdrücke entwicklen. D.h. man denkt nicht mehr darüber nach warum was wie besser ist. Dazu ist es aber notwendig das man von Anfang an als Anfänger immer über seinen Source nachdenkt und somit auch intensiver lernt. Eine Vereinfachungsmaßnahme die zwar durch zusätzliche Kommatas es einfacher verstehbar macht, hindert also am Denken und Lernen.

Du zB. nutzt KV-Tafeln, ich nutze einfache Grafiken da ich ein visuell geometrischer Denker bin.
Auf alle Fälle ist es wichtig dabei das man den Denkprozess durch mechanische Bewegungen wie das Schreiben enorm verbessert. (so wie Gestick, Mimick usw.)

Sich vor der korrekten Lösung eines Problemes zu drücken ist meiner Meinung nach nicht der richtige Weg. Übung macht den Meister

Gruß Hagen
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#42

Re: Codedesign

  Alt 11. Nov 2003, 14:19
@Hagen, erinnerst du dich noch an das Bool-Array:
Delphi-Quellcode:
const
  iRootKey : array[boolean]of cardinal =
    (HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE);


{ ... }

if(RegOpenKeyEx(iRootKey[IsAdmin],
  'blablabla',
  0,
  KEY_READ or KEY_WRITE,
  reg) = ERROR_SUCCESS) then
try
  { ... }
finally
  RegCloseKey(reg);
end;
War ein Tipp von dir vor ... *puh* ... Jahren (?), weil ich neidisch auf die C-Programmierer und ihr
Code:
if(RegOpenKeyEx([color=#ff0000](IsAdmin)?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER[/color],
  [color=#000080]// ...[/color]
war. Und das hat mir im Laufe der Zeit doch einige if-Abfragen gespart. Macht sich auch gut beim Setzen von Flags (für Controls, usw.), die von bestimmten Bedingungen abhängig sein sollen.

Gruß.
  Mit Zitat antworten Zitat
choose

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

Re: Codedesign

  Alt 11. Nov 2003, 14:28
Zitat von MathiasSimmack:
Macht sich auch gut beim Setzen von Flags (für Controls, usw.), die von bestimmten Bedingungen abhängig sein sollen.
Aber auch bei typisierten Ordinalwerten, zB
Delphi-Quellcode:
type
  TMyState = (msUnknown, msReady, msRunning, msDone);

function MyStateToString(const AState: TMyState): string;
const
  ArResult: array[TMyState] of string = ('Unbekannt', 'Bereit', 'Aktiv', 'Fertig');
begin
  Result:= ArResult[AState];
end;
Neben Übersichtlichkeit und Geschwindigkeit hat diese Variante gegenüber dem case-Statement den Vorteil, dass der Compiler die Anzahl der Elemente überprüft, also darauf hinweist, wenn nicht "jeder Fall bedacht" wurde.

Das ist iÜ eine der Möglichkeiten, die ich mit meinem Posting unter dem Punkt
Zitat von choose:
Typesierte Ordinalwerte, um "selbstüberprüfende" Routinen zu schreiben (unbedachte Fälle vom Compiler "aufspüren" lassen)
meinte...
gruß, choose
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#44

Re: Codedesign

  Alt 11. Nov 2003, 14:30
Das ganze braucht man nicht auf Boolean's zu beschränken.

So kann man sich auch case n of's sparen

Delphi-Quellcode:
const
  ccHexAlpha : array[0..15] of char = '0123456789ABCDF';
...
  ccHexAlpha[dwWert and $F]
oder

Delphi-Quellcode:
type
  TFarben = (colBlack, colRed, colGreen, colWhite);

const
  csTexte : array [TFarbe] of String = ('Schwarz', 'Rot', 'Grün', 'White');
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#45

Re: Codedesign

  Alt 11. Nov 2003, 14:32
Was mir dabei auffällt...

hatte wir schon die Notation erwähnt.

wie z.B.

i??? - Integer
s??? - String
l??? - Boolean
usw.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
choose

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

Re: Codedesign

  Alt 11. Nov 2003, 14:36
Du meinst etwas in der Art der die Hungarian Notation?
Ich möchte micht hier wieder einmal auf den Style Guide beziehen
Zitat von Charles Calvert:
Delphi is created in California, so we discourage the use of notation, except where required in header translations:

CORRECT
FMyString: string;

INCORRECT
lpstrMyString: string;

The exception to the Hungarian notation rule is in enumerated types.
gruß, choose
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#47

Re: Codedesign

  Alt 11. Nov 2003, 14:42
Zitat:
lpstrMyString: string;
Diese Art und Weise finde auch übertrieben, und zerstört mehr Informationen.


Zitat:
FMyString: string;
Das ist aber nach meinem Geschmack zu wenig Information. Deshalb bevorzuge ich bei String's das "s" nur Klassen erhalten ein "F" als Präfix.

Records das "r"
Pointer ein "p" + typen-präfix
z.B. Pointer auf einen Integer "pi"
Constanten "c" + typen-präfix
Übertragungsparameter "a" + typen-präfix

Das ist aber wahrscheinlich Ansichtsache.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
choose

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

Re: Codedesign

  Alt 11. Nov 2003, 14:59
Hallo neolithos,

sicher kannst man mit ein wenig Gewöhnung mitunter schneller den Code verstehen, ohne die Deklarationen überprüfen zu müssen, aber was machst Du, wenn Du den Typen irgendwann änderst (zB von Record zu Klasse oder von Byte zu Integer zu Int64)? In diesem Fall müsstest Du das Interface Deiner Klassen bzw. die Deklarationen der Funktionen/Prozeduren nachträglich ändern, was bedeutet, dass Du ebenfalls in der Implementierung Anpassungen bei der Verwendung der Parameter vornehmen müsstest...

Luckie bestätigte, dass er sich bei seinem Artikel sowohl auf die Lesbarkeit als auch auf die Änderbarkeit des Codes konzentriert. Hier muss also abgewogen werden.
Im Hinblick auf die Zielgruppe des Artikels aber auch, weil es jede "individuelle" Notation zunächst zu erlernen gilt, würde ich mich persönlich gegen eine solche Notation aussprechen und mich in diesem Fall nach Charles Calvert richten.
Etwas anderes sind Suffixe bei Exemplaren oder Klassennamen, hier halte ich einen TFooVisitor oder eine TFooFactory für aussagekräftig und allgemein annerkannt.
gruß, choose
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#49

Re: Codedesign

  Alt 11. Nov 2003, 15:16
@choose
Ich geb dir recht auf die Zielgruppe bezogen ist es günstiger sowas zu vereinfachen.

Ich persönlich bleib dabei da es mir einfach Hilft schnell in alten Code von mir reinzukommen.

Und mit Änderungen hatt ich noch keine Probleme.
Da erstens sowas sellten vorkommt -> ich überlegt mir vorher was ich brauche
Und sollte es vorkommen geht es auch schnell von der Hand (selectieren, find&replace), dass klappt aber nur deshalb da ich so gut wie keine Globalen Variablen verwendet, die im ganzen Programm vorkommen.

Aber zum Schluß noch mal:

Ich geb dir recht auf die Zielgruppe bezogen.
-> damit es nicht zu mißverständnissen kommt.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Codedesign

  Alt 11. Nov 2003, 16:04
Zitat von S - tefano:
Gibt es nicht von Borland selbst einen seitenlangen Artikel mit Richtlinien, wie man Pascal Code schreiben sollte? Ich bin mir sicher ich hab sowas schonmal gelesen, vielleicht weiß von euch ja einer wo es den gibt. Ich werd ihn mal suchen, den könnte man wenigstens noch als Vergleichsquelle benutzen, wenn man sich nicht komplett an ihn hält.
Du meinst den Style Guide von Charles Calvert. Findest du auf meiner Seite.
Zitat:
Denn neben den Regeln die es schon gibt noch eigene Regeln aufzustellen die denen ähnlich sind die es schon gibt...
Da kann ich mir auch ne eigene StVO entwerfen, die sich von der normalen nur dadurch unterscheidet dass ich immer Vorfahrt habe
Nichts für ungut
1. Geht es da nur um die Codeformatierung. darum geht es mir aber gar nicht.
2. Saugen wir hier uns nicht irgendwas aus den Finger, wie es uns in den Kram passt, sondern das sind größtenteils eigne Erfahrungswerte, die sich über die Zeit als sinnvoll erwiesen haben. Dein Vergleich und deine Kritik ist alsi vollkommen fehl am Platz.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 03:14 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