AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

Ein Thema von Glados · begonnen am 20. Okt 2017 · letzter Beitrag vom 21. Okt 2017
Antwort Antwort
Seite 1 von 2  1 2   
Glados
(Gast)

n/a Beiträge
 
#1

Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 20. Okt 2017, 22:59
Ich stelle mir gerade eine grundsätzliche Frage.

Ich räume seit mehreren Monaten ein größeres Projekt auf und lagere wild rumliegenden Code in Units aus.
Units habe ich mittlerweile einige. Ein paar projektgebundene, ein Paar die man auch woanders nutzen könnte.

Daher die Grundsatzfrage: sollte man Units sauber halten und keinerlei andere Units einbinden oder ist das egal?

Beispiel: ich habe eine Unit Utils.Files.pas und eine andere namens Utils.FileCompare.pas
In Utils.Files.pas ist eine Funktion GetFileSize. Selbe Funktion brauche ich in Utils.FileCompare. Statt aber Utils.Files.pas in die uses von Utils.FileCompare.pas aufzunehmen, habe
ich GetFileSize einfach kopiert und eingefügt. Meine uses-Klausel ist somit leer.

Wie macht ihr das?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 00:18
Formuliere es mal etwas flapsig und provokant:

Uses ist dazu da, dass man es benutzt.

Der Sinn von Units ist es doch, Quelltext einmalig zu schreiben und mehrfach zu nutzen.

Wenn Du den Quelltext kopierst, muss Du Dir auch merken, wo Du so Deine Kopieen hingepackt hast, denn wenn mal ein Fehler auftaucht oder eine Ergänzung erforderlich ist, musst Du auch entsprechend oft korrigieren bzw. ergänzen.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.021 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 00:26
Formuliere es mal etwas flapsig und provokant:

Uses ist dazu da, dass man es benutzt.

Der Sinn von Units ist es doch, Quelltext einmalig zu schreiben und mehrfach zu nutzen.

Wenn Du den Quelltext kopierst, muss Du Dir auch merken, wo Du so Deine Kopieen hingepackt hast, denn wenn mal ein Fehler auftaucht oder eine Ergänzung erforderlich ist, musst Du auch entsprechend oft korrigieren bzw. ergänzen.
Sehe ich genau so. Ich bevorzuge auch die „Unit-Version“. Eine Änderung ist dann nur an einer Stelle im Code notwendig. Eigentlich ja auch der Sinn der units

Gegebenenfalls mache ich mir für verschiedene Projekte jeweils eine „unit“ welche alle benötigten anderen Units referenziert. Damit spare ich mir viele units im Hauptprogramm.
Michael Kübler
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#4

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 00:28
Nur wie handhabt man das dann, wenn man eine Unit in einem anderen Projekt braucht, die wieder zwei oder drei andere referenziert die man ggf. nicht benötigt?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 02:18
Nur wie handhabt man das dann, wenn man eine Unit in einem anderen Projekt braucht, die wieder zwei oder drei andere referenziert die man ggf. nicht benötigt?
Ist im Grunde nicht allzu tragisch. Kann zwar deine Dateigröße dank RTTI ein wenig vergrößern, aber nicht verwendeter Code wird selbst vom Delphi-Linker in der Regel nicht mit in das Kompilat aufgenommen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 02:21
Eine Unit enthält in einem Uses nur das, was sie benötigt.

Sie kann von daher nichts benötigen, das im einbindenden Projekt nicht benötigt wird.

Die Frage ist also:

Muss man Units zwingend so bauen, dass man dann, wenn man sie in ein Projekt einbindet auch alles, was sie enthält benützt.

Nein muss man nicht.

Der Linker ist (soweit ich weiß) schlau genug, nur das in das entgültige Programm zu übernehmen, was tatsächlich benötigt wird.

Man muss also keine Angst haben, durch die Nutzung großer Units, die wiederum viele weitere Units nutzen, ein Programm endlos aufzublähen.

Im Programm ist letztlich nur das tatsächlich genutzte.

Units halt nach fachlichen (oder sonstigen eigenen, der Übersicht dienlichen) Kriterien erstellen und benützen.

Wenn man immer sicherstellen will, dass eine Unit nichts enthält, was man im Programm nicht benötigt, müsste man (vermutlich) pro Funktion, pro Prozedur, pro Klasse immer eine Unit erstellen.

Das erscheint mir nicht im Sinne des Erfinders zu sein.

Erstell' doch mal ein Programm mit MAP-Datei (ist letztlich nur Text). Und dann schau da mal rein, was dort aufgeführt wird. Das ist letztlich alles, was im Programm genutzt wird.
Prüf' dann mal für das Programm, ob aus allen direkt oder indirekt per Uses eingebundenen Units alles in der MAP-Datei zu finden ist oder nur das, was Deiner Meinung nach genutzt werden müsste.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.913 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 10:34
..., habe ich GetFileSize einfach kopiert ...
Dieses Vorgehen ist als Copy&Paste-Antipattern bekannt.
Als mach es nicht!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
509 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 11:03
Hallo Bernhard, den verlinkten Artikel sollte jeder mal lesen, der sich mit Programmieren beschäftigt.
Es gibt auch einige Bücher, die die Sache vertiefen; aber hier hat man eine gute Zusammenfassung und kommt schnell drauf was man selber für Probleme hat oder produziert.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.913 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 11:40
Hallo Bernhard, den verlinkten Artikel sollte jeder mal lesen, der sich mit Programmieren beschäftigt.
Es gibt auch einige Bücher, die die Sache vertiefen; aber hier hat man eine gute Zusammenfassung und kommt schnell drauf was man selber für Probleme hat oder produziert.
Ich finde das man die Anti-Pattern bald noch früher kennen sollte als Pattern. Sie sind oft auch viel Anschaulicher zu vermitteln als manche Pattern bei denen sich der Nutzen manchmal nicht sofort erschließt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#10

AW: Grundsatz Frage: Units sauber halten oder mit uses vollstopfen?

  Alt 21. Okt 2017, 12:32
Zitat:
Dieses Vorgehen ist als Copy&Paste-Antipattern bekannt.
Als mach es nicht!
Das heißt man sollte in die uses von Unit1 dann doch besser Unit2 aufnehmen, auch wenn man Unit2.FunktionA in Unit1 nur ein- oder zweimal benötigt statt Copy&Paste?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf