Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Unit-Design - was bevorzugt ihr? (https://www.delphipraxis.net/191329-unit-design-bevorzugt-ihr.html)

Rollo62 3. Jan 2017 16:30

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

p80286 3. Jan 2017 16:39

AW: Unit-Design - was bevorzugt ihr?
 
Zitat:

Zitat von jaenicke (Beitrag 1357953)
Bei uns lagen allgemeine Units bis vor ein paar Jahren relativ ungeordnet herum.

Der wesentliche Unterschied hier ist wohl wir und ich. Solange ich mich in meinem Chaos zurecht finde geht's, sobald ein zweiter hinzu kommt, ist das wohl eher kontraproduktiv. Aber wie immer kommt's es auf den Einzelfall an.

Gruß
K-H

a.def 3. Jan 2017 16:49

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?

Mavarik 4. Jan 2017 15:32

AW: Unit-Design - was bevorzugt ihr?
 
Zitat:

Zitat von a.def (Beitrag 1357968)
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?

Ich denke das ist gar nicht die Frage...

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:
Procedure Foo(Const AValue : AnsiString);overload;
Procedure Foo(Const AValue : WideString);overload;
Ich rede mich raus mit : Gewachsener Code seit 1984. :stupid:

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

mm1256 4. Jan 2017 16:21

AW: Unit-Design - was bevorzugt ihr?
 
Zitat:

Zitat von a.def (Beitrag 1357968)
Ich ändere gerade auch alles um, damit mein Chaos etwas geordneter wird.

Das glaube ich ist der Punkt: Irgendwann wird ein ungeordnetes System chaotisch. Wichtiger ist also meiner Meinung nach mehr, dass man überhaupt ein System verwendet. Welches ist dann wiederum davon abhängig, ob man das System nur für sich selber verwendet, oder in der Gruppe.

Zitat:

Zitat von a.def (Beitrag 1357968)
Bis wie viel Zeilen ist eine Datei denn noch OK, wenn thematisch alle Methoden die da drin sind zusammenpassen?

Wenn alles was drin steckt thematisch zusammen passt, und entsprechend geordnet ist, gibt es wahrscheinlich keine Größenvorgabe. Jedenfalls mache ich mir keine. 8-)

Zitat:

Zitat von Mavarik
Procedure Foo(Const AValue : AnsiString);overload;
Procedure Foo(Const AValue : WideString);overload;

Darüber muss man sich nicht raus reden. Solche Leichen hat wohl fast jeder im Keller, der die Ansistring-Umstellung hinter sich hat :thumb:

Rollo62 4. Jan 2017 16:25

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

a.def 4. Jan 2017 23:01

AW: Unit-Design - was bevorzugt ihr?
 
Zitat:

Zitat von mm1256 (Beitrag 1358086)
Darüber muss man sich nicht raus reden. Solche Leichen hat wohl fast jeder im Keller, der die Ansistring-Umstellung hinter sich hat :thumb:

Meine ist aktuell....

Delphi-Quellcode:
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;
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.
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');

Uwe Raabe 4. Jan 2017 23:09

AW: Unit-Design - was bevorzugt ihr?
 
Zitat:

Zitat von a.def (Beitrag 1358119)
Mir ging es auf die Nerven, dass es von offizieller Seit nur eine davon gab.

In System.Math sind noch sechs andere. Fehlt nur die für Boolean.

a.def 4. Jan 2017 23:26

AW: Unit-Design - was bevorzugt ihr?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1358122)
In System.Math sind noch sechs andere.

Kommt mir ein bisschen vor wie die Suche nach den Eiern an Ostern :stupid:

DeddyH 5. Jan 2017 07:07

AW: Unit-Design - was bevorzugt ihr?
 
Könnte man das nicht auch so lösen (ungetestet)?
Delphi-Quellcode:
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;
Aufruf dann z.B.
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.
Seite 3 von 5     123 45      

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