![]() |
AW: Unit-Design - was bevorzugt ihr?
Wo wir schon bei Units sind ...
Ich benutze auch gerne weitere Verschachtelungen durch . in der Art String.Utils.Converter.pas Das mache ich mittlerweile in vorrauseilendem Gehorsam, also auch wenn es String.pas und String.Utils.pas noch gar nicht gibt :stupid: Rollo |
AW: Unit-Design - was bevorzugt ihr?
Zitat:
Gruß K-H |
AW: Unit-Design - was bevorzugt ihr?
Ich ändere gerade auch alles um, damit mein Chaos etwas geordneter wird.
In eine eben angelegte Datei habe ich bereits 22 Methoden gesteckt. Die Datei hat mittlerweile komplett 745 Zeilen. Bis wie viel Zeilen ist eine Datei denn noch OK, wenn thematisch alle Methoden die da drin sind zusammenpassen? |
AW: Unit-Design - was bevorzugt ihr?
Zitat:
Ich habe auch noch Projekte wo es Units gibt, die gesammelte Proceduren und Funktionen habe... (> 7000 LOC) Da hat aber auch so gut wie keine Procedure etwas mit der anderen zu tun... Und i.d.R haben die alle 2 Versionen
Delphi-Quellcode:
Ich rede mich raus mit : Gewachsener Code seit 1984. :stupid:
Procedure Foo(Const AValue : AnsiString);overload;
Procedure Foo(Const AValue : WideString);overload; Wenn ich Proceduren für Typen baue, dann immer in einer Class Abstract oder z.B. für TArray<T> hier ist alleine die Klassendefinition fast 200 LOC. Mavarik |
AW: Unit-Design - was bevorzugt ihr?
Zitat:
Zitat:
Zitat:
|
AW: Unit-Design - was bevorzugt ihr?
Gewachsene Libraries sind/werden wohl immer chaotisch, ich sehe das ganz locker.
Man sollte nur permanent an Verbesserungen und Reduzierungen von Redundanz und Kopplung arbeiten. Dann wir schon alles gut :stupid: Hauptsache der Codeowner kennt sich im Dschungel noch aus. Rollo |
AW: Unit-Design - was bevorzugt ihr?
Zitat:
Delphi-Quellcode:
Mir ging es auf die Nerven, dass es von offizieller Seit nur eine davon gab. Also habe ich mir die genommen, in meine Sammlung gepackt und zwei hinzugefügt.
function IfThen(aValue: Boolean; const ATrue, AFalse: Integer): Integer; overload;
begin if aValue then Result := ATrue else Result := AFalse; end; function IfThen(aValue: Boolean; const ATrue, AFalse: string): string; overload; begin if aValue then Result := ATrue else Result := AFalse; end; function IfThen(aValue: Boolean; const ATrue, AFalse: Boolean): Boolean; overload; begin if aValue then Result := ATrue else Result := AFalse; end; Auf diese Art und Weise konnte ich viel Code sparen alà
Delphi-Quellcode:
// Vorher
if A = B then s := 'C' else s := 'D'; // Nachher s := IfThen(A = B, 'C', 'D'); |
AW: Unit-Design - was bevorzugt ihr?
Zitat:
|
AW: Unit-Design - was bevorzugt ihr?
Zitat:
|
AW: Unit-Design - was bevorzugt ihr?
Könnte man das nicht auch so lösen (ungetestet)?
Delphi-Quellcode:
Aufruf dann z.B.
type
TGenericCompare<T> = record public class function IfThen(Expression: Boolean; const AThen, AElse: T): T; static; end; class function TGenericCompare<T>.IfThen(Expression: Boolean; const AThen, AElse: T): T; begin if Expression then Result := AThen else Result := AElse; end;
Delphi-Quellcode:
procedure TfrmTest.ButtonTestClick(Sender: TObject);
var s: string; begin s := TGenericCompare<string>.IfThen(1 = 1, 'Ja', 'Nein'); ShowMessage(s); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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