![]() |
Re: Codedesign
Zitat:
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 |
Re: Codedesign
@Hagen, erinnerst du dich noch an das Bool-Array:
Delphi-Quellcode:
War ein Tipp von dir vor ... *puh* ... Jahren (?), weil ich neidisch auf die C-Programmierer und ihr
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;
Code:
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.
if(RegOpenKeyEx([color=#ff0000](IsAdmin)?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER[/color],
[color=#000080]// ...[/color] Gruß. |
Re: Codedesign
Zitat:
Delphi-Quellcode:
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.
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; Das ist iÜ eine der Möglichkeiten, die ich mit meinem Posting unter dem Punkt Zitat:
|
Re: Codedesign
Das ganze braucht man nicht auf Boolean's zu beschränken.
So kann man sich auch case n of's sparen
Delphi-Quellcode:
oder
const
ccHexAlpha : array[0..15] of char = '0123456789ABCDF'; ... ccHexAlpha[dwWert and $F]
Delphi-Quellcode:
type
TFarben = (colBlack, colRed, colGreen, colWhite); const csTexte : array [TFarbe] of String = ('Schwarz', 'Rot', 'Grün', 'White'); |
Re: Codedesign
Was mir dabei auffällt...
hatte wir schon die Notation erwähnt. wie z.B. i??? - Integer s??? - String l??? - Boolean usw. |
Re: Codedesign
Du meinst etwas in der Art der die Hungarian Notation?
Ich möchte micht hier wieder einmal auf den Style Guide beziehen Zitat:
|
Re: Codedesign
Zitat:
Zitat:
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. |
Re: Codedesign
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. |
Re: Codedesign
@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. |
Re: Codedesign
Zitat:
Zitat:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 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