AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 500 Zeilen interface-Teil. Ist das normal?
Thema durchsuchen
Ansicht
Themen-Optionen

500 Zeilen interface-Teil. Ist das normal?

Ein Thema von MarcusB · begonnen am 24. Aug 2004 · letzter Beitrag vom 24. Aug 2004
Antwort Antwort
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#1

500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 10:35
Hi,

hier mal wieder der interessierte Delphi-Laie.

Ich arbeite gerade an meinem bislang größtem Programm und habe bereits jetzt über 500 Zeilen allein für den Interface-Teil.
Ich habe so an die 20 Checkboxen, 80 Editfelder und etwa 15 Combos.
Dazu noch einen Haufen type-Deklarationen.

Das ganze wird langs unheimlich unübersichtlich. Ist das eigentlich normal bei einer Anwendung mit sovielen Felder, bzw. gibt es da gewisse Kniffe um das etwas übersichtlicher zu gestalten?

Ich blick nämlich bald nicht mehr durch

Da die IDE ja leider kein Code-Folding beherrscht ist es schon recht mühsam.
Ich habe ja schon dran gedacht einiges in eine andere Unit auszulagern, aber ich brauche ja immer immer den Bezug zu meinen ganzen Edits und Combos etc.

Wie machen denn die Profis unter Euch sowas?

  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 10:39
Du solltest mehrere Units verwenden und vor allem GUI weitestgehend von ProgrammLogik trennen.

Zum Beispiel kannst Du
Typdeklarationen wie records, Aufzählungstypen, Constanten in eine eigene Unit auslagern.
Günter
  Mit Zitat antworten Zitat
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#3

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 10:52
Ich bin ja da nicht so ganz firm.

[edit:] Ok, das hab ich grad kapiert
Zitat:
Zum Beispiel kannst Du
Typdeklarationen wie records, Aufzählungstypen, Constanten in eine eigene Unit auslagern.
Auch die, die ich innerhalb meiner Form1 verwende?
[/edit]

Und das Trennen von Programm und GUI ist für mich auch etwas schwierig,
da ich fast in jeder Funktion auf irgendein Edit-Feld oder Combo zugreife.

Oder mach ich da grundsätzlich was falsch?
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 11:04
Wenn Du die die Unit in welche Du deine Records ausgelagert hast, in der anderen einbindest geht das.


Kleines Beispiel:

Delphi-Quellcode:
unit uMySecondUnit;

interface

type
   PMyRecord = ^TMyRecord;
   TMyRecord = record
      Field1, Field2, Field3: string;
   end;

   TDialogButtons = (tbOK, tbCANCEL, tbYESNO);

const
   CLanguage_de = 'Deutsch';
   CLanguage_en = 'Englisch';

implementation

end.

Delphi-Quellcode:
unit uMyFirstUnit;

interface

uses
   uMySecondUnit;

type
  
   TMyObject = class(TObject)
   private
      FMyRecord: TMyRecord;

      FLanguage: string;
   public

      procedure SetDlgButtons(AButton: TDialogButtons);

      property MyRecord: TMyRecord read FMyRecord write FMyRecord;
   end;

implementation

procedure TMyObject.SetDlgButtons(AButton: TDialogButtons);
begin
  if (AButton = tbOK) then
     FLanguage := CLanguage_de
  else
     FLanguage := CLanguage_en;
end;

end.
Günter
  Mit Zitat antworten Zitat
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#5

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 11:35
Uff, ich sehe schon, ich muss mich mit der Problematik jetzt mal ganz intensiv beschäftigen.
Danke schon mal für deinen Hinweis.

Da ich bisher immer nur so kleinere Sachen gemacht habe, habe ich mich da nicht näher drum gekümmert.
Wo bekommt man denn dazu gute Infos?

Meine Delphibücher geben da leider wenig her (oder jedenfalls nicht verständlich genug für mich).
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#6

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 11:43
Also ich bin gerade an einem kleinen Projekt mit knapp 1077 Zeilen interface, die Implementationen habe ich dann in verschiedene Dateien (pro Klasse eine eigene) ausgelagert.

Problematisch ist, das sich die Klassen gegenseitig brauchen und ich sie von daher gar nicht Sinnvoll in verschiedene Units aufteilen könnte. Natürlich wird das u.U. etwas unübersichtlich, aber man arbeitet im Regelfall eh nur an einer Klasse gleichzeitig (sprünge sind zumindest bei mir relativ selten) und von daher reicht es in der Unit dann einfach zu der jeweiligen Deklaration zu scrollen und dann die entsprechende implementation-Datei parallel dazu auf zu haben.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 12:04
Zitat von Phoenix:
Also ich bin gerade an einem kleinen Projekt mit knapp 1077 Zeilen interface, die Implementationen habe ich dann in verschiedene Dateien (pro Klasse eine eigene) ausgelagert.

Problematisch ist, das sich die Klassen gegenseitig brauchen und ich sie von daher gar nicht Sinnvoll in verschiedene Units aufteilen könnte. Natürlich wird das u.U. etwas unübersichtlich, aber man arbeitet im Regelfall eh nur an einer Klasse gleichzeitig (sprünge sind zumindest bei mir relativ selten) und von daher reicht es in der Unit dann einfach zu der jeweiligen Deklaration zu scrollen und dann die entsprechende implementation-Datei parallel dazu auf zu haben.

Wieso müssen mehrere Klassen in eine Unit?

In der arbeit haben wir die Regel für jede Klasse eine eigene Unit und das funktioniert, ganz ohne Probleme.

Wenn Du dann eine Klasse aus einer anderen Unit brauchst, mußt Du diese eigentlich nur "usen".
Günter
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#8

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 12:07
Das geht genau dann nicht, wenn sich die Klassen gegenseitig brauchen.

Beispiel: Liste enthält mehrere andere Listen. Jede dieser Listen muss hingegen ein eigenes Property auf das des Owners mappen. Somit müssten sich beide Units im Interface-Teil gegenseitig referenzieren, aber Kreuzbezüge sind nicht erlaubt. Daher müssen die in eine Unit.

Nachtrag: An der Stelle lässt sich das leider gar nicht nicht vermeiden, da das ganze ein Wrapper ist und die zugrundeliegenden Klassen schon dieses Design mitbringen.

Zudem wird das hinterher für die Zielentwickler einfacher, da diese zum Verwenden der KLassen nur noch eine Unit einbinden müssen und nicht für jede Klasse eine einzelne.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 12:17
Naja ok, eine Unit haben wir auch mit fast 9000 Zeilen.
Günter
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: 500 Zeilen interface-Teil. Ist das normal?

  Alt 24. Aug 2004, 14:16
Wichtige OOP-Regel:
GUI-Schicht und Fachkonzeptschicht trennen!

greetz
mytar
Francis Obikwelu
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:56 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