Applikationsdesign
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Applikationsdesign
Hi,
Im Laufe der Zeit haben sich etliche nützliche Objektklassen angesammelt.
Einige davon benutzen auch gemeinsame Units was es nicht immer leicht macht, sie in neuen Projekten zu nutzen weil dann gleich ein Rattenschwanz an notwendigen Units eingebunden werden muss.
Um es konkreter/plakativer zu machen:
Die Klasse TXY verwendet eine Reihe von Funktionen aus der Unit uToolsWriteDirect (einfach ein Anzahl von Funktionen um direkt in bestimmte Dateien zu schreiben).
Verschiedenen andere Klassen benutzen diese unit ebenfalls.
Nun ist mein Ziel die Klasse TXY einfacher handhabbar zu machen -- also wenn nötig die Unit der Klasse TXY einzubinden ohne immer einen zusätzlichen Unit-Rattenschwanz mitzuführen. Gleichzeitig möchte ich aber vermeiden die gleiche Funktionalität (also zB das Schreiben in Dateien) mehrfach warten zu müssen.
Natürlich weiß ich dass das Unitkonzept zur Wiederverwendbarkeit designed wurde. Aber manchmal nervt es helt
Dazu gibt es sicher etliche Lösungsansätze.... wie löst ihr so ein Problem?
Im Laufe der Zeit haben sich etliche nützliche Objektklassen angesammelt.
Einige davon benutzen auch gemeinsame Units was es nicht immer leicht macht, sie in neuen Projekten zu nutzen weil dann gleich ein Rattenschwanz an notwendigen Units eingebunden werden muss.
Um es konkreter/plakativer zu machen:
Die Klasse TXY verwendet eine Reihe von Funktionen aus der Unit uToolsWriteDirect (einfach ein Anzahl von Funktionen um direkt in bestimmte Dateien zu schreiben).
Verschiedenen andere Klassen benutzen diese unit ebenfalls.
Nun ist mein Ziel die Klasse TXY einfacher handhabbar zu machen -- also wenn nötig die Unit der Klasse TXY einzubinden ohne immer einen zusätzlichen Unit-Rattenschwanz mitzuführen. Gleichzeitig möchte ich aber vermeiden die gleiche Funktionalität (also zB das Schreiben in Dateien) mehrfach warten zu müssen.
Natürlich weiß ich dass das Unitkonzept zur Wiederverwendbarkeit designed wurde. Aber manchmal nervt es helt
Dazu gibt es sicher etliche Lösungsansätze.... wie löst ihr so ein Problem?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Applikationsdesign
Hach ja, Softwarearchitektur bei Funktionssammlungen und Bibliotheken. Darüber lässt sich hervorragend philosophieren, diskutieren, streiten oder auch morden .
Ich sage mal was ich mache / machen würde: Bei mir liegen eine Reihe von Units herum, die auch bestimmte immer wieder verwendete Klassen und Funktionen enthalten. Inzwischen fasse ich die alle in eine Art persönliche(s) Framework / Bibliothek zusammen und binde sie in jedes Projekt wo ich wenigstens einen Teil davon brauche direkt und komplett ein. Im Allgemeinen per svn:externals, also Verlinkung auf ein SVN-Repository. Damit sind sie an allen Stellen immer auf dem gleichen Stand.
Klar wächst dadurch der Festplatten-Speicherverbrauch etwas an, aber das ist belanglos im Vergleich zur besseren Wartbarkeit.
Ich sage mal was ich mache / machen würde: Bei mir liegen eine Reihe von Units herum, die auch bestimmte immer wieder verwendete Klassen und Funktionen enthalten. Inzwischen fasse ich die alle in eine Art persönliche(s) Framework / Bibliothek zusammen und binde sie in jedes Projekt wo ich wenigstens einen Teil davon brauche direkt und komplett ein. Im Allgemeinen per svn:externals, also Verlinkung auf ein SVN-Repository. Damit sind sie an allen Stellen immer auf dem gleichen Stand.
Klar wächst dadurch der Festplatten-Speicherverbrauch etwas an, aber das ist belanglos im Vergleich zur besseren Wartbarkeit.
Zuletzt geändert von m.fuchs am So 7. Feb 2021, 12:06, insgesamt 1-mal geändert.
Grund: Speicherverbrauch konkretisiert
Grund: Speicherverbrauch konkretisiert
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Applikationsdesign
Für AVR Embedded interessiert mich das schon: Gibt es eine Möglichkeit, dass der Compiler nur die Funktionen aus den Units ins Assembler-Listing schreibt, die auch verwendet werden?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Applikationsdesign
Ich rede an dieser Stelle nur von Festplattenspeicher, der ja durch das immerwährende Auschecken in jedem Projekt mehrmals mit den gleichen Dateien belegt wird.Timm Thaler hat geschrieben: ↑So 7. Feb 2021, 01:57Für AVR Embedded interessiert mich das schon: Gibt es eine Möglichkeit, dass der Compiler nur die Funktionen aus den Units ins Assembler-Listing schreibt, die auch verwendet werden?
Dein Problem sollte sich doch mit Smart-Linking lösen lassen. Oder ist das bei AVR anders? Damit kenne ich mich absolut nicht aus.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Applikationsdesign
Ich nutze dafür Packages, die ich je nach Bedarf in dem Projekt einfüge - nicht in der IDE installiert! Auch alles, wie bei m.fuchs, per SVN (TortoiseSVN) gepflegt. Falls ein Fehler auftritt ist es unheimlich hilfreich, in der Historie nachzusehen, wobei dieser eingepflegt wurde und was der Grund warcharlytango hat geschrieben: ↑Sa 6. Feb 2021, 19:34Dazu gibt es sicher etliche Lösungsansätze.... wie löst ihr so ein Problem?
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Applikationsdesign
Sowas hätte ich auch gern.
Ich hab zum Beispiel für AVR embedded eine umfangreiche Mathe-Unit für die verschiedenen Typen und Berechnungen, die deutlich schneller und kleiner ist als was fpc mitbringt. Davon brauche ich aber immer nur einige und kopiere mir nur die ins Projekt. Es wäre halt schön, wenn der Compiler von sich aus nicht verwendete Prozeduren / Funktionen nicht mit reinkompiliert.
Auf dem PC ist mir das egal. Auf dem AVR entscheidet das über Sieg oder Niederlage.
Ich hab zum Beispiel für AVR embedded eine umfangreiche Mathe-Unit für die verschiedenen Typen und Berechnungen, die deutlich schneller und kleiner ist als was fpc mitbringt. Davon brauche ich aber immer nur einige und kopiere mir nur die ins Projekt. Es wäre halt schön, wenn der Compiler von sich aus nicht verwendete Prozeduren / Funktionen nicht mit reinkompiliert.
Auf dem PC ist mir das egal. Auf dem AVR entscheidet das über Sieg oder Niederlage.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Applikationsdesign
Dann kannst du das nur über bedingte Kompilierung auflösen, wenn es sich über die Optimierung des Compilers/Linkers nicht auflösen lässt.Timm Thaler hat geschrieben: ↑So 7. Feb 2021, 20:18Es wäre halt schön, wenn der Compiler von sich aus nicht verwendete Prozeduren / Funktionen nicht mit reinkompiliert.
Auf dem PC ist mir das egal. Auf dem AVR entscheidet das über Sieg oder Niederlage.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 830
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Applikationsdesign
Nein, da dies nicht die Aufgabe des Compilers ist, sondern des Linkers. Die Units werden an sich unabhängig kompiliert (von Abhängigkeiten durch die uses-Bereiche mal abgesehen) und der Compiler kann noch gar nicht wissen, ob nicht Funktion X vielleicht von einer anderen Unit verwendet wird, die er noch nicht mal im Ansatz angefangen hat zu kompilieren.Timm Thaler hat geschrieben: ↑So 7. Feb 2021, 01:57Für AVR Embedded interessiert mich das schon: Gibt es eine Möglichkeit, dass der Compiler nur die Funktionen aus den Units ins Assembler-Listing schreibt, die auch verwendet werden?
FPC Compiler Entwickler
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Applikationsdesign
erstmal Danke an @m.fuchs
Bin erstaunt wie schnell der Thread in eine ganz ander Richtung abgleitet
..gespannt ob da noch was kommt
Bin erstaunt wie schnell der Thread in eine ganz ander Richtung abgleitet
..gespannt ob da noch was kommt