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
Seite 12 von 25   « Erste     2101112 131422     Letzte » 
Benutzerbild von stahli
stahli
Registriert seit: 26. Nov 2003
Ich bin dabei, ein Tool aufzubauen, das Units sortiert und Code ergänzt.

Es ist quasi eine Klassenvervollständigung, Codeformatierung und Codesortierung in einem.

Hier mal ein aktueller Zwischenstand als Video: https://youtu.be/cfKa3wuoEd0

Eine direkte Codeformatierung (Einrückung) habe ich noch nicht drin, will das aber auch noch ergänzen. Die anderen Features gehen für mich aber vor.

Die Abkürzung "prop" könnte man auch mit "property" ausschreiben lassen. Ebenso sind optional andere Voreinstellungen möglich, wenn dies gewünscht würde. Ich bin zunächst erst einmal von meinen Wünschen ausgegangen.

Ich würde das später sehr gern kommerziell anbieten, wenn es Nachfrage gibt.
Für öffentliche Tests ist es noch etwas früh. Dazu muss ich noch einiges ausbauen und ausbessern.
Sofern jemand Erfahrungen mit den OTA hat und daran mitarbeiten möchte, dann gebt Bescheid...



Ich hatte dazu schon einen Thread, der sich aber speziell auf die Interface-Unterstützung bezogen hatte. Da das Tool aber Units allgemein bearbeitet habe ich hier einen neuen Thread eröffnet.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
 
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#111
  Alt 6. Apr 2020, 22:40
Hallo,

was haltet Ihr von einer Kennzeichnung der Klassen und ggf. Klassensektionen im Implementationsteil?

Die Klassendeklarationen werden entsprechend geordnet und in verschiedene Sektionen aufgeteilt.
Später erfolgen auch noch Unterteilungen nach eingebundenen Interfaces (z.B. "public //: IMyIntf" für die Properties und "protected //: IMyIntf" für die Getter und Setter).
Das macht der Optimizer alles automatisch und ist m.E. sehr übersichtlich.


Im Implementationsteil bin ich mir jedoch nicht so ganz sicher. Die Klassen so auffällig auszuzeichnen finde ich schon sinnvoll.
Aber bei den Sektionen sollten vielleicht nur die Interface-Sektionen explizit ausgezeichnet werden?
Sollte die Sortierung dann dort vielleicht sogar abweichend zur Interface-Deklaration sein?
Ich kann natürlich auch wieder mehrere Optionen anbieten.
Was würdet Ihr bevorzugen?


PS: Das standardmäßige "{ TMyClass }" der Delphi-IDE könnte automatisch umgewandelt werden. Das wäre technisch kein Problem.
Miniaturansicht angehängter Grafiken
06-04-_2020_22-27-23.jpg   06-04-_2020_22-25-48.jpg  

Geändert von stahli ( 6. Apr 2020 um 22:45 Uhr)
  Mit Zitat antworten Zitat
DasWolf

 
Delphi 10.1 Berlin Professional
 
#112
  Alt 7. Apr 2020, 13:58
Hallo,

was haltet Ihr von einer Kennzeichnung der Klassen und ggf. Klassensektionen im Implementationsteil?


Stichwort "Regionen".

Das zweite Bild ist echt grausam anzusehen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#113
  Alt 7. Apr 2020, 16:58
Bei Zugriffrechten in Klassen wird von Abschnitten gesprochen. Daher hatte ich von Sektionen gesprochen.

Oder meinst Du, ich solle Regionen vorsehen, die man zuklappen kann?
Das fände ich unpraktisch, da man sich dann immer einen Wolf klappen müsste.


Optisch fand ich das auch im ersten Moment sehr hässlich. ABER:
Inzwischen finde ich das gar nicht so schlecht. Man hat quasi unmittelbar die Struktur der Klassendeklaration nochmal im Implementationsteil abgebildet und weiß ständig, wo man sich genau (auch mit welchen Zugriffsrechten) befindet.
Wenn man z.B. eine neue Prozedur in so einem gekennzeichneten Bereich schreibt, dann kann der Optimizer diese auch im passenden Bereich der Deklaration erzeugen. (Das könnte sogar bis in eine Interfacedeklaration weiter gereicht werden wenn man sich in einem "Interface-Abschnitt" befindet - ggf. auch erst nach Rückfrage).

Ich finde es inzwischen gar nicht mehr so sinnvoll, einen riesigen Implementationsteil mit jeder Menge Klassenimplementationen zu haben. Aber ist halt nun mal so Delphi, da kann man nix dran ändern.
Nun geht es darum, diesen Teil möglichst strukturiert zu gestalten (bzw. automatisiert gestalten zu lassen).

Man kann zwar das Codebeispiel optisch unschön finden, es aber dennoch (wie ich) für praktisch halten...

Oder man kann dem gar nichts abgewinnen oder man findet das sogar stylisch!?.
Fest gemeißelt ist ja noch gar nichts. Daher wollte ich gern Meinungen und Vorschläge einholen.
Vielleicht kristallisieren sich ja ein paar machbare und sinnvolle Varianten heraus...?

Geändert von stahli ( 7. Apr 2020 um 17:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#114
  Alt 20. Apr 2020, 22:34
Mal eine neue Test-Exe.
Jetzt erkennt man die Verschiebungen der Blöcke, was ggf. die Übersichtlichkeit erhöht (wenn man die Änderungen einmal genauer nachvollziehen möchte).

Jetzt werde ich mich endlich mit der Klassenvervollständigung befassen können.
Miniaturansicht angehängter Grafiken
20-04-_2020_22-14-49.jpg  
Angehängte Dateien
Dateityp: zip UnitOptimizer-Testversion4.zip (1,24 MB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#115
  Alt 25. Apr 2020, 22:14
Optimierung der Umbrüche bei mehreren Tabs in einer Zeile.
Jetzt werden alle gleichartigen Tabs eines Blockes identisch umgebrochen (im Beispiel alle "write" der zusammengehörigen Properties - auch wenn nur eines nicht auf eine Zeile passt).
Miniaturansicht angehängter Grafiken
25-04-_2020_22-04-57.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#116
  Alt 26. Apr 2020, 19:31
Testversion5 - einige kleine Problemchen bereinigt
Angehängte Dateien
Dateityp: zip UnitOptimizer-Testversion5.zip (1,24 MB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#117
  Alt 1. Mai 2020, 18:12
Hier mal einige Screenshots einiger neuer Formatierungen.

Die ersten 3 zeigen Ausrichtungen und Umbrüche an "Tabulatoren".
Getter und Setter werden z.B. auch untereinander ausgerichtet, wenn sie (vorläufig) auskommentiert sind. Wenn sie später gelöscht werden bleiben dort entsprechend Lücken bestehen.
Umbrüche z.B. von längeren Konstanten werden am "=" ausgerichtet.

Dann einige Beispiele von Ausrichtungen von ":=".
Das war ein Wunsch eines Testers und ich fand die Idee eigentlich fragwürdig - also habe nicht mit einem guten Ergebnis gerechnet.

Aber das gefällt mir jetzt RICHTIG GUT!

Ich werde das also so oder so ähnlich selbst nutzen und als Option mit einbauen.
Mich würde mal interessieren, was Ihr dazu sagt...

(Dass vor begin, else usw. bzw. nach then keine Zeilenumbrüche existieren, soll hier mal nicht das Thema sein. Die Einrückungen wären dann natürlich entsprechend auch wie abgebildet möglich.)
Miniaturansicht angehängter Grafiken
01-05-_2020_16-32-05.jpg   01-05-_2020_17-28-19.jpg   01-05-_2020_17-29-35.jpg   01-05-_2020_17-43-16.jpg   01-05-_2020_17-45-02.jpg  


Geändert von stahli ( 1. Mai 2020 um 18:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.4 Sydney
 
#118
  Alt 3. Mai 2020, 17:01
Ich habe mal eine Einrückung von Fluent-Interfaces umgesetzt: https://youtu.be/EKxBDecttOU (5 Min).

Sagt mir doch mal bitte, was Ihr davon haltet (insbesondere @Mavarik).

Nutzt das jemand und haltet Ihr die Umsetzung für tauglich?


EDIT: Das Einrücken unterhalb von Punkten habe ich doch noch realisiert (zwei neue Screenshots).
Es kann natürlich Fälle geben, in denen die Einrückung zu weit nach rechts reicht... !?
... Dann geht aber auch der Umbruch am ersten Punkt (Bild3).
Miniaturansicht angehängter Grafiken
04-05-_2020_00-22-42.jpg   04-05-_2020_01-56-10.jpg   04-05-_2020_02-03-23.jpg  

Geändert von stahli ( 4. Mai 2020 um 02:07 Uhr)
  Mit Zitat antworten Zitat
stifflersmom

 
Delphi 10.2 Tokyo Professional
 
#119
  Alt 3. Mai 2020, 18:14
Daumen hoch, mir gefallen die Formatierungen schon sehr gut.
Respekt!
  Mit Zitat antworten Zitat
HeZa

 
Delphi 10 Seattle Professional
 
#120
  Alt 4. Mai 2020, 07:04
Hallo Stahli,

das sieht hübsch aus.

Ich würde so allerdings niemals formatieren.

Ändert man z.B. den Klassennamen der Klasse mit dem Fluentinterface, würden sich unter Umständen sehr viele Units ändern wenn man diese Art der Formatierung konsequent anwendet.

Das sieht in der Versionsverwaltung immer schlecht aus (zum Glück kann wenigstens BeyondCompare Whitespace-Unterschiede ausblenden).

Bei ausgerichteten Zuweisungen, muss man für das Suchen aller Zuweisungen einer Variablen schon mit RegEx arbeiten.

Bei mir wird alles mit zwei Leerzeichen eingerückt und Zuweisungen (:=) haben immer ein Leerzeichen hinter dem Variablennamen. Habe ich mir nach dem Lesen von CodeComplete vor ..., boah, sind das echt schon Jahrzehnte, angewöhnt.

Ciao HeZa
  Mit Zitat antworten Zitat
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 11:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf