Nun mein Style ist recht einfach. Jedes Keyword wir immer klein geschrieben. Bezeichner tragen keine Prefixes, der Name sollte auf den Typ schließen lassen. Bezeichner werden in dem UpperCamelCase geschrieben, heißt erster Buchstabe groß, jedes neu Wort groß. Bezeichner von Typen beginnen immer mit T, Interfaces mit I, Pointer mit P,
Exception mit E und Resourcestrings mit S.
Delphi-Quellcode:
procedure TMyObject.MyLittleMethod(Value : Cardinal);
var
X, Y, Z : Extended; // Gleiche Typen werden immer hintereinander geschrieben und nicht X : Extended; Y : Extended;
Index : Cardinal; SubIndex : Byte; // Variablen, die gleiche Sinne haben, stehen hintereinander.
begin
{ Gedankliche Codesegmente werden so unterteilt. }
X := 12; // InlineComments können stehen so wie wollen.
Y := 45.8;
Z := 7.33;
// Wenn kein Platz, dann stehen die Kommentare drüber.
for Index := 0 to Value do begin // Irgendwie hab ich mir angewöhnt die Zählervariable immer Index zu nennen.
end;
end;
Wichtig ist auch die Leerzeichensetzung, nach jedem Komma ein Leerzeichen, vor jedem und nach jedem := : ein, zwischen klammern und Bezeichnern keine! Rechenoperatoren immer mit Leerzeichen abtrennen.
Dann gibts da noch sowas, dass kann nicht nicht erklären, ich verbinde gerne konstrukte mit einander. So sich andern die Haare streuben finde ich es einfach "schön", eine Art Kunst, es so zu schreiben. Beispiel:
Delphi-Quellcode:
function BaseCloseHandle(
Handle : TBaseHandle) : Boolean;
stdcall;
begin
if Handles[
Handle] =
nil then Result := false
else begin case Handles[
Handle]^.HandleType
of // Besonders diese Zeile.
bhtObject : Handles[
Handle]^.ObjectPointer.Free;
bhtWindowsHandle : Windows.CloseHandle(Handles[
Handle]^.Handle);
bhtCallback : Handles[
Handle]^.Callback();
end;
FreeMem(Handles[
Handle], SizeOf(TBaseHandleData));
Handles[
Handle] :=
nil;
Result := true;
end;
end;
Man könnte fast sagen, ich baue eine Bindung mit meinem Code auf und nur, wenn er auch gut aussieht, ist er ein gute Code.
Delphi-Quellcode:
if Count = 0 then Exit;
for Index := 0 to Count - 1 do begin
DisplayMode := GetDisplayMode(Index);
if ( DisplayMode.Width = Width ) and ( DisplayMode.Height = Height ) and ( DisplayMode.RefreshRate = RefreshRate ) then begin
Result := true;
Exit;
end;
end;
Delphi-Quellcode:
EffectHandle := nil;
if FEffect.Bounded then begin
IDirectSoundCaptureBuffer8(Effect.BoundedBuffer.Handle).GetObjectInPath(
GUID_DSCFX_CLASS_NS, Effect.Description.ID, IID_IDirectSoundCaptureFXNoiseSuppress8, EffectHandle);
end else Abort;
Delphi-Quellcode:
procedure TBaseObject.BeforeDestruction;
var Index : Cardinal;
begin
BaseDropHandle(SystemHandle);
if Length(Dependencies) > 0 then begin
for Index := 0 to High(Dependencies) do
if Dependencies[Index] <> nil then FreeAndNil(Dependencies[Index]);
end; while frefcount > 0 do // Ich weiß nicht wieso, aber das while gehört hir hin.
InterLockedDecrement(frefcount);
inherited;
end;
Teilweise haue ich auch richtige Hammer raus, die ich aber grade nicht finden kann.
Edit: Gefunden xD :
Delphi-Quellcode:
if AutoOpenFile then try
Stream := TFileStream.Create(FileName);
with Stream do case LoadTarget of
ltWindow : LoadToWindow(Stream);
ltMindmap : LoadToMindmap(Stream);
else begin if Stream.Size = 0 then EmptyFile()
end end else LoadFail := true;
except
ShowMessage('Fehler...');
end;