AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte UnitOptimizer

UnitOptimizer

Ein Thema von stahli · begonnen am 25. Mai 2018 · letzter Beitrag vom 31. Okt 2021
Antwort Antwort
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: UnitOptimizer

  Alt 14. Sep 2021, 13:28
Was ginge, ist dass ein Tool sich die erste Schreibweise (=Deklaration) in einer Unit merkt und die dann überall verwendet.
So wie der integrierte Delphi Formatter?
Oder der in GExperts, ja.

Was mich daran erinnert, dass ich mal schauen wollte, ob einige der Bugs im Delphi Formatter (ich meine ich hätte 3 gemeldet) endlich behoben wurden.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: UnitOptimizer

  Alt 14. Sep 2021, 13:46
Die Optionen kannte ich so jetzt gar nicht.

Aber das würde nicht auf Klassenmember o.ä. angewendet - oder?
(Ich kann jetzt gar nicht konkret sagen, wann Delphi Schreibweisen korrigiert und wann nicht.)
... Panel1.font.name -> Panel1.Font.Name

Dazu müsste ja immer die Deklaration gesucht und die dortige Schreibweise abgeglichen werden.
Nach meinem Verständnis muss dazu das Projekt kompiliert sein und eine Verbindung zu den Codeteilen (Unit X, Zeile Y, Zeichen Xvon ... Xbis) vorliegen. Richtig?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#3

AW: UnitOptimizer

  Alt 14. Sep 2021, 14:36
Dazu müsste ja immer die Deklaration gesucht und die dortige Schreibweise abgeglichen werden.
Nein, da steht ja nur As first occurence und nicht As declaration und der Formatter arbeitet ja nicht wie ein Compiler. Ich glaube auch nicht, dass das dateiübergreifend funktioniert, denn der Formatter bekommt ja entweder den markierten Code-Abschnitt oder die gesamte Unit. Aber das kann man ja gerne mal durch ausprobieren herausfinden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.948 Beiträge
 
Delphi 12 Athens
 
#4

AW: UnitOptimizer

  Alt 14. Sep 2021, 16:05
Nach meinem Verständnis muss dazu das Projekt kompiliert sein und eine Verbindung zu den Codeteilen (Unit X, Zeile Y, Zeichen Xvon ... Xbis) vorliegen. Richtig?
So schlau ist der Formatter nicht, aber das braucht er auch gar nicht zu sein. Denn mir fällt kein einziges Beispiel ein, in dem es sinnvoll ist, ein ganzes Wort kontextabhängig anders zu schreiben.

Ich verwende ja den Formatter und bis jetzt war ich mit der Formatierung in Standardeinstellungen sehr zufrieden, wobei ohnehin nur sehr wenig überhaupt noch geändert wird, da ich ohnehin direkt "normal" schreibe. Das schließt auch Groß- und Kleinschreibung ein. Hier im Forum schreibe ich ja auch (meistens hoffe ich ) korrektes Deutsch.

Bei fremden Quelltexten ist es durchaus angenehm, wenn ich nur die ersten Vorkommnisse korrigieren muss und die Groß- und Kleinschreibung danach automatisch angeglichen wird.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (14. Sep 2021 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: UnitOptimizer

  Alt 14. Sep 2021, 16:47
Mit meiner Frage meinte ich eher das Refactoring.

Dazu muss der Compiler die verschiedenen binären Objekte (z.B. eine globale Variable "X") kennen und alle Codestellen in allen Units, die diese Variable benutzen.
Wenn ich ein Refactoring aufrufe und "X" in "XX" umbenenne, dürfte das nicht möglich sein, wenn das Projekt nicht kompiliert bzw. kompilierbar ist...
Ich denke mal, das dürfte so richtig sein.

Jetzt eine (vielleicht zu akademische?) Frage:

Ich hatte die Vorstellung, Umbenennungen in einem Interface auch in anderen Units (auch anderen Projekten) nachzuholen. Macht das überhaupt Sinn und wie würde man das aktuell händeln?

Mal ein Beispiel:

Ich habe zentral abgelegt eine Unit mit einem Interface und einer Property X.
Das Interface wird in 2 Projektgruppen verwendet.
Projektgruppe1 hatte es eingeführt. In Projektgruppe2 wurde die zentrale (selbe) Unit auch eingebunden und das Interface für neue Klassen benutzt.
In Projektgruppe2 werden neue Methoden und Properties in dem Interface deklariert. In Projektgruppe1 brauche ich nur meine Klassenvervollständigung starten und alle neuen Methoden und Properties werden in allen Klassen, die das Interface verwenden automatisch ergänzt (zumindest als Templates).

Soweit kein Problem, das sollte so funktionieren.


Jetzt die vermutlich akademische Frage:

Wenn ich innerhalb der Projektgruppe1 das Property X umbenenne in XX (und das in allen Klassen der Projektgruppe1 über ein Refactoring angepasst wird - sofern mir das irgendwann gelingen sollte), wie würde man in der Projektgruppe2 damit umgehen? Bzw. wie würde man das tun ohne mein Tool?

Die Projektgruppe2 wäre ja jetzt nicht mehr kompilierbar, da dort die Klassen (mit Property X) nicht der Deklaration des aktuellen Interfaces (mit Property XX) entsprechen. Ein Refactoring dürfte in dem Moment generell nicht mehr möglich sein.

Man wird also alle Codestellen suchen und händisch anpassen müssen. Mein Optimizer könnte dies ggf. in den Deklarationen und innerhalb der Getter und Setter automatisch übernehmen, nicht aber für die bisherigen Verwendungen von .X (die jetzt .XX heißen müssen) außerhalb der Getter und Setter.

Das ist sicherlich auch kein Standardfall, dass man Properties von Interfaces umbenennt, die in unterschiedlichen Projekten verwendet werden aber hatte jemand schon mal so etwas bzw. eine Meinung bzw. Umgang dafür?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: UnitOptimizer

  Alt 18. Sep 2021, 19:41
Mit meiner Frage meinte ich eher das Refactoring.

Dazu muss der Compiler die verschiedenen binären Objekte (z.B. eine globale Variable "X") kennen und alle Codestellen in allen Units, die diese Variable benutzen.
Wenn ich ein Refactoring aufrufe und "X" in "XX" umbenenne, dürfte das nicht möglich sein, wenn das Projekt nicht kompiliert bzw. kompilierbar ist...
Ich denke mal, das dürfte so richtig sein.
Doch, das funktioniert durchaus, wenn auch in Grenzen:

Delphi-Quellcode:
function bla(_x: Integer): Extended;
begin
  // fiktive Formel kopiert von woanders, wo x verwendet wurde:
  Result := x * 5 - pi;
end;
In dem Fall kann man problemlos die Variable x in _x umbenennen lassen, obwohl der Code wegen der nicht deklarierten Variablen x nicht compiliert.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: UnitOptimizer

  Alt 18. Sep 2021, 19:51
Ok danke. Das muss ich dann mal später genauer untersuchen wenn es mir überhaupt mal gelingen sollte, ein Refactoring über die OTA anzustoßen.

In dem Fall könnte ich über eine eine einzelne Anweisung wohl innerhalb eines Projektes gleich zeitig ein Property eines Interfaces umbenennen incl. automatisch Getter und Stter anpassen und die Änderung auch in alle benutzenden Klassen durchschleifen (dort auch incl. privatem Feld).
Wenn ich ein Refactoring grundsätzlich aufrufen kann, dann sollte das so machbar sein.

Ob die Anpassung dann auch in einem anderen externen Projeklt möglich ist, wäre dann eben nochmal zusätzlich zu klären (wenn die Anforderung überhaupt als interessant erachtet würde).


PS: Zu meiner Entschuldigung ... wenn ich in der Woche tagsüber schreibe habe ich i.d.R. kein Delphi verfügbar und jetzt am Wochenende versuche ich mich erst mal um die aktuelleren Dinge zu kümmern. Daher kommen sicher manchmal etwas komische Fragen von mir.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: UnitOptimizer

  Alt 19. Sep 2021, 22:22
Der Umzug nach D.11 und Anpassung des Installers gingen bis hierher recht problemlos.
Miniaturansicht angehängter Grafiken
19-09-_2021_23-09-21.jpg  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: UnitOptimizer

  Alt 18. Sep 2021, 19:36
Nach meinem Verständnis muss dazu das Projekt kompiliert sein und eine Verbindung zu den Codeteilen (Unit X, Zeile Y, Zeichen Xvon ... Xbis) vorliegen. Richtig?
So schlau ist der Formatter nicht, aber das braucht er auch gar nicht zu sein. Denn mir fällt kein einziges Beispiel ein, in dem es sinnvoll ist, ein ganzes Wort kontextabhängig anders zu schreiben.
Spaßig ist es aber bei einzelnen Buchstaben:

x vs X und y vs Y -> gibt es mehrfach in unterschiedlichen Schreibeweisen in der RTL/VCL und diversen Bibliotheken

i vs I -> will man nie groß schreiben
l vs L -> will man nie klein schreiben
o vs O -> will man nie groß schreiben

Und dann gibt es da noch message vs. Message und natürlich private vs. Private und ähnliches, was aber wohl seltener vorkommt.
Thomas Mueller

Geändert von dummzeuch (18. Sep 2021 um 19:43 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

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 01:21 Uhr.
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