AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Projektstruktur (nicht alles in einem Ordner)
Thema durchsuchen
Ansicht
Themen-Optionen

Projektstruktur (nicht alles in einem Ordner)

Ein Thema von Rollo62 · begonnen am 1. Sep 2020 · letzter Beitrag vom 1. Sep 2020
Antwort Antwort
Seite 1 von 2  1 2      
Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#1

Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 12:09
Hallo zusammen,

aus dem Post hier springt mir der obige Satz ins Gesicht.

Ich bin auch ein großer Fan von Verzeichnissen und Unterverzeichnissen, und würde das sehr strukturiert einsetzen.
Leider werde ich dabei immer durch Delphi gebremst weil der Support von "Unter"verzeichnissen dort "Unter"irdisch ist.
Wenn dann will ich die Verwaltung in den Units selbst machen, und nicht in der IDE.

Deshalb bin ich schon länger bei der Fraktion Viele Units in wenige Verzeichnisse zu werfen, und
dann lieber über klar strukturierte Namespaces eine Form reinzubringen.

Also statt
Delphi-Quellcode:
Feature1\Detail1_1\Unit1_1.pas
Feature1\Detail1_2\Unit1_2.pas
Feature1\Detail1_3\Unit1_3.pas
Feature2\Detail2_1\Unit2_1.pas
Feature2\Detail2_2\Unit2_2.pas
schreibe ich lieber

Delphi-Quellcode:
Feature1.Detail1_1.Unit1_1.pas
Feature1.Detail1_2.Unit1_2.pas
Feature1.Detail1_3.Unit1_3.pas
Feature2.Detail2_1.Unit2_1.pas
Feature2.Detail2_2.Unit2_2.pas
Nur für klar abgegrenzte Funktionalitäten würde ich eigene Unterverzeichnisse vorsehen.
So spare ich mir die ganze Pflege der Verzeichnisstruktur (welche ich liebend gern in den Units selbst machen würde, was aber nicht geht).

Ich finde auch öfters das Muster
Delphi-Quellcode:
Models\Feature1_Model.pas
ViewModels\Feature1_VM.pas
Views\Feature1_View.pas
was für mich auf den ersten Blick schön sauber aussieht, aber den erheblichen Nachteil hat
dass die zusammengehörigen Teile auseinandergerisssen werden.
(ja ich weiss das die eigentlich nicht zusammen hängen sollen, das tun sie aber meist eben doch).

Ich sehe in dem Aufbau in einem Verzeichnis keinerlei Nachteil:
Delphi-Quellcode:
Feature1_Model.pas
Feature1_ViewModel.pas
Feature1_View.pas
eher nur Vorteile

Oder irre ich mich da,
welchen konkreten Vorteil hätte das konsequente Auseinanderziehen in Verzeichnisse und Unterverzeichnisse,
ausser das es erheblich mehr Verwaltungsaufwand bedeutet ?

Vielleicht gibt es ja dazu eine klare Theorie zur Programmstruktur, würde mich mal interessieren.
(oder ist es eben doch nur Geschmackssache ?)

Geändert von Rollo62 ( 1. Sep 2020 um 12:12 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 12:44
Ich sehe nicht weshalb die Teile "auseinandergerissen" werden, oder weshalb es eine erhöhten Verwaltungsaufwand bedeutet.

Manche Dinger bekommt man aufgrund der IDE nicht auseinander, z.B. bei grafischen Formularen/Frames die .pas-Datei und die dazu passende .dfm, die müssen im gleichen Ordner liegen.

Auch dein "statt" muss nicht sein: Es zwingt dich ja keiner wie die Dateien heißen müssen, und dem Projekt ist es völlig egal wo die Dateien liegen.

Beispiel:

Code:
.\MyProject.dpr
.\src\Fizz\Buzz\Fizz.Buzz.pas
.\src\Fizz\Buzz\Fizz.Buzz.LookupTable.pas
.\src\Fizz\Buzz\Fizz.Buzz.Strings.pas
(...)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#3

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 13:07
Meist habe ich mehrere Projekte (bis zu 10) die in einer Projektgruppe zusammengefasst sind. Da sind Projekte dabei, die > 500 Units haben. Ein Großteil der Units wird von den Projekten geteilt.

Früher habe ich viel in Unterverzeichnisse aufgeteilt. Der Nachteil war, dass auch viele Suchpfade angegeben werden mussten oder neue Units dann in allen Projekten zugefügt werden mussten.

Das habe ich nun geändert, seit dem es Namespaces gibt. Unitnamen mit Namespaces lassen sich einfach besser lesen und organisieren.

Ich bin schon seit einiger Zeit damit beschäftigt Units umzubenennen, die Unterverzeichnisse aufzulösen und alles in ein Verzeichnis zu verschieben. Ich find es klasse. Ist aber Geschmackssache.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#4

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 13:43
Meist habe ich mehrere Projekte (bis zu 10) die in einer Projektgruppe zusammengefasst sind. Da sind Projekte dabei, die > 500 Units haben. Ein Großteil der Units wird von den Projekten geteilt.

Früher habe ich viel in Unterverzeichnisse aufgeteilt. Der Nachteil war, dass auch viele Suchpfade angegeben werden mussten oder neue Units dann in allen Projekten zugefügt werden mussten.

Das habe ich nun geändert, seit dem es Namespaces gibt. Unitnamen mit Namespaces lassen sich einfach besser lesen und organisieren.

Ich bin schon seit einiger Zeit damit beschäftigt Units umzubenennen, die Unterverzeichnisse aufzulösen und alles in ein Verzeichnis zu verschieben. Ich find es klasse. Ist aber Geschmackssache.
+1 Exakt, das kann ich unterschreiben.

Fragt sich nur ob es irgendeine Theorie gibt warum das Eine besser ist als das andere ?

@Der schöne Günther
... weshalb höherer Verwaltungsaufwand ...
  • Weil ich öfters neue IDE Versionen aufsetzen muss, nicht wie damals wo eine Installation 2 Jahre hielt.
    Jedes Mal muss dann die ganze Verzeichnisstruktur aktualisiert werden
    Ok, hält sich in Grenzen, aber eigentlich wäre mir Plug-and-Play lieber
  • Weil das Rein- und Rausspringen in Verzeichnissen, um z.B. eine Datei zu finden, doch mehr Aufwand ist als wenn Alles nebeneinander liegt.
    Dazu benutze ich eine Filtersuche, und bin Ruckzuck am Ziel.
  • Weil ich wenn es irgendwelche fehlerhaften, z.B. doppelten Units gibt, ich mühevoll suchen muss wo es jetzt falsch drin ist.
    Während wenn die Daten alle Units nebeneinander liegen können gar keine doppelten Unit-Namen auftreten.
    Solche Probleme kenne ich seitdem nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 14:01
Zitat:
Projektstruktur (nicht alles in einem Ordner)
Eine gute Mischung aus Namespaces und Ordnerstuktur ist imho gut. Zu viele Ordner sind auch eher kontraproduktiv.

Bild1: meins
Bild2: so eher nicht...
Miniaturansicht angehängter Grafiken
project.png   old.png  
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#6

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 14:26
Bei mir sieht es eher wie in Bild 2 aus. Vielleicht 3-4 Verzeichnisse um "grob" zu unterteilen. Ansonsten alles in ein Verzeichnis.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#7

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 14:32
Früher habe ich viel in Unterverzeichnisse aufgeteilt. Der Nachteil war, dass auch viele Suchpfade angegeben werden mussten oder neue Units dann in allen Projekten zugefügt werden mussten.
Wenn du diese Units explizit in die Projekte aufnimmst, dann braucht keine Suchpfade.
Der Suchpfad relative Pfad (absolut, wenn andere Partition) steht dann zu jeder Unit in der DPR.

Aber ja, ich habe seit einer Weile auch auf wenige größere Verzeichnisse umgestellt, genau aus dem selben Grund,
aber verwende dafür nun exzessiver die Namespaces in den Unitnamen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#8

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 15:07
Wenn du diese Units explizit in die Projekte aufnimmst, dann braucht keine Suchpfade.
Normalerweise wird auch jede Unit bei mir explizit aufgenommen. Weil dann auch z.B. ein Grep zuverlässig funktioniert.

Aber wenn man in einem Projekt eine oder mehrere Units neu erzeugt und in bestehenden Units referenziert hat, dann hat man Probleme, wenn man "mal" alle Projekte durchkompilieren will.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#9

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 15:12
Ich bin nicht sicher ob diese "Namespaces" mit '.' auch unter Lazarus und FPC funktionieren.
Meiner Meinung nach war das mal ein Problem, habs nie gecheckt.

Ach ja, "Namespaces" sind ja eigentlich mehr als nur '.' Bezeichnungen.
Trotzdem wissen hoffentlich Alle wie es gemeint ist.

@bernau
Ich nutze auch gerne externe Tools statt dem Grep in der IDE.
Das ist mir sowieso etwas zu beschränkt.


Also bis jetzt spricht erstmal nichts Grundsätzliches gegen die mehr flache Lösung,
da bin ich aber froh

Geändert von Rollo62 ( 1. Sep 2020 um 16:05 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#10

AW: Projektstruktur (nicht alles in einem Ordner)

  Alt 1. Sep 2020, 15:52
Statt . kann man ja auch den _ nehmen. Funktioniert bei meinem ollen Delphi 7 schon seit ewig und drei Tagen.

Neue Delphis kommen damit auch klar und FreePascal bestimmt auch.

Und ob die optische Trennung nun durch . oder _ erfolgt, sollte nur ein bisserl Gewohnheitssache sein. Dürfte aber letztlich gleich gut zu unterscheiden sein.

Alles was nur zu einem Projekt gehört, liegt bei mir im Projektverzeichnis.

Für Komponenten, die "überall" gebraucht werden können, gibt es ein Verzeichnis Komponenten. Fremdkomponenten erhalten dort ein Unterverzeichnis mit ihrem Namen. JCL, JVCL ...

Für Frames gibt es eine Verzechnis Frames, in das halt alle Units kommen, die in unterschiedlichen Projekten genutzt werden und Frames enthalten.

Units mit diversen "Hilfroutinen" sind im Verzeichnis Tools. Vom Aufgabengebiet her zusammengehörende Hilfsroutinen kommen in eine Unit für dieses Aufgabengebiet. Ist also alles schön sachlich sortiert.

Jedes Projekt hat sein eigenes Projektverzeichnis.

In der Regel sind die Projekte so konfiguriert, dass sie alle die DCUs in das gleiche Verzeichnis schreiben, kompilierte Packages kommen auch in ein Verzeichnis, dito Exen.

Alles liegt auf einem Laufwerk in 'nem Verzeichnis Delphi.
Code:
Laufwerk:
  Delphi
    _bpl
    _dcu
    _exe
    Komponenten
      JCL
        und hier halt die Struktur der JCL
      JVCL
        und hier halt die Struktur der JVCL
      ...        
    Frames
    Tools
    Je Projekt ein Verzeichnis
Für mich ist das in punkto Übersichtlichkeit ausreichend.

Damit Delphi beim Kompilieren nicht so ewiglange suchen muss und die Suchpfade nicht unübersichtlich groß werden, werden alle benötigten Dateien ins Projekt aufgenommen. Gut: Die DPR kann dann schonmal was länger werden, aber da muss man für gewöhnlich eh nicht ran, kann aber in der Projektverwaltung recht schnell sehen was man so alles ins Projekt eingebunden hat und die Dateien schnell in der IDE zur Bearbeitung öffnen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:33 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