Delphi-PRAXiS
Seite 4 von 7   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   UnitOptimizer (https://www.delphipraxis.net/196493-unitoptimizer.html)

jaenicke 4. Mai 2020 06:24

AW: UnitOptimizer
 
Zitat:

Zitat von HeZa (Beitrag 1463536)
Bei ausgerichteten Zuweisungen, muss man für das Suchen aller Zuweisungen einer Variablen schon mit RegEx arbeiten.

Oh ja, das war bei altem Code bei uns in der Firma auch ein Problem. Heute kann man überall ganz normal suchen, weil wir das überall korrigiert haben.

DenkDirNix 4. Mai 2020 08:16

AW: UnitOptimizer
 
Ich hoffe, das wird hier nicht als unpassende Werbung angesehen, aber u.a. für das rein Syntax-orientierte Finden von Zuweisungen eignet sich schon der derzeitige Stand meines aktuellen Entwicklungs-Projektes https://www.delphipraxis.net/204052-...ml#post1462457

stahli 4. Mai 2020 11:01

AW: UnitOptimizer
 
Die zwei genannten Probleme sind tatsächlich nachteilig.

Zur Codeverwaltung kann ich nichts sagen. Damit komme ich so oder so nicht klar.
Ich sichere die Quellen zwar in Github aber wenn es mal ein Problem gibt hat mir das bisher nicht geholfen.
Bin halt ein alter Sack ohne Ahnung. :-/

Die Suche funktioniert natürlich auch schlechter durch die unterschiedlich vielen Leerzeichen.
@jaenicke, was habt Ihr da wie konfiguriert?

Ich möchte z.B.

Code:
xyz := 123;
xyz :=    123;
xyz:=123;
xyz:=  123;
finden.

Ab liebsten durch die Suche von:
Code:
xyz := 123;
oder noch besser von
Code:
xyz:=123;
Bei der Suche müssten wohl im ersten (einfacheren) Fall die Leerzeichen so maskiert werden, dass 0, 1 oder mehrere Leerzeichen akzeptiert werden.
Im zweiten Fall müsste wohl erst eine Funktion bestimmte Leerzeichen (hier vor und nach ":=") einfügen und dann suchen.
Oder man akzeptiert einfach zwischen ALLEN Zeichen ein Leerzeichen...

Kann man so etwas konfigurieren, ohne das bei jedem Suchvorgang einstellen zu müssen? Das wäre super!

jaenicke 4. Mai 2020 11:05

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1463568)
Ich möchte z.B.

Code:
xyz := 123;
xyz :=    123;
xyz:=123;
xyz:=  123;
finden.

Ab liebsten durch die Suche von:
Code:
xyz := 123;

Wenn du das Häkchen bei regulären Ausdrücken setzt, kannst du die normal in der Suche verwenden, sprich:
Code:
xyz[ ]*:=[ ]*123
Also einfach nur xyz, eine beliebige Anzahl Leerzeichen, ...

Zitat:

Zitat von stahli (Beitrag 1463568)
Kann man so etwas konfigurieren, ohne das bei jedem Suchvorgang einstellen zu müssen? Das wäre super!

Nein, von daher wäre es sinnvoller ein solches Plenking schlicht nicht zu machen statt hinterher nach Lösungen dafür zu suchen. ;-)

stahli 4. Mai 2020 11:27

AW: UnitOptimizer
 
Ähh, jetzt bin ich überrascht...

Du hattest doch oben geschrieben:

Zitat:

Zitat von jaenicke (Beitrag 1463537)
Zitat:

Zitat von HeZa (Beitrag 1463536)
Bei ausgerichteten Zuweisungen, muss man für das Suchen aller Zuweisungen einer Variablen schon mit RegEx arbeiten.

Oh ja, das war bei altem Code bei uns in der Firma auch ein Problem. Heute kann man überall ganz normal suchen, weil wir das überall korrigiert haben.

Ich hatte das so verstanden (und kann auch nichts anderes heraus lesen), dass Ihr eine Lösung habt, um ganz normal zu suchen (trotz Einrückungen und Dank einer Konfiguration).


Ok, dann meintest Du vermutlich, normale Suche bei angewählter Regulär-Checkbox und Maskierung von Leerzeichen im Suchfeld? Das wäre dann aber keine normale Suche aus meiner Sicht...!?


Auf eine solche Codeformatierung zu verzichten, weil Delphi keine passende Suchfunktion anbietet, finde ich allerdings nicht nachvollziehbar.
Dafür kann sich doch eine Lösung finden lassen. Unabhängig von meinem Formatter würde es möglich sein und ja Sinn machen, dass Emba eine Suchoption "Leerzeichen und Umbrüche ignorieren" sowie vielleicht "Klammern ignorieren" anbietet. Das hätte ich früher auch schon öfters für sinnvoll gehalten.
Evtl. könnte man auch eine eigene Suchfunktion implementieren, die so einen regulären Ausdruck automatisch verwendet.
Also Lösungen sehe ich da durchaus.


Wenn das Suchproblem nicht bestehen würde (bzw. gelöst wäre), würdest Du dann eine solche Formatierung sinnvoll finden?


Natürlich kann ich im Optimizer auch eine Option anbieten, dass solche Einrückungen abgesehen vom linken Zeilenbeginn nicht erfolgen sollen. Das wäre technisch gesehen nur eine Auslassen der Funktion "AusrichtungDerVirtuellenTabulatorenUntereinander" . Das würde das Suchproblem sofort vermeiden. Ich finde eine solche Formatierung aber sehr hilfreich.

jaenicke 4. Mai 2020 11:40

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1463576)
Wenn das Suchproblem nicht bestehen würde (bzw. gelöst wäre), würdest Du dann eine solche Formatierung sinnvoll finden?

Ich persönlich finde es unübersichtlicher, aber das ist eben sehr subjektiv.

Zitat:

Zitat von stahli (Beitrag 1463576)
Ich hatte das so verstanden (und kann auch nichts anderes heraus lesen), dass Ihr eine Lösung habt, um ganz normal zu suchen (trotz Einrückungen und Dank einer Konfiguration).

Nein, die Lösung war die Standard-Formatierung zu verwenden und eben alles nach und nach dahingehend zu formatieren. ;-)

Der Quelltext ist so auch für mich deutlich besser lesbar, weil es einfach immer genauso formatiert ist wie die meisten Codesnippets im Internet und auch die RTL- und VCL-Quelltexte selbst. Exotische Formatierungen sind ja zum Glück deutlich in der Minderheit.

Aber letztlich jage ich im Zweifelsfall zuerst den Formatter von Delphi drüber, wenn Quelltext anders formatiert ist. Von daher stört mich das wenig, ich muss es ja nicht so lesen.

Ein weiterer Vorteil ist, dass man nicht Änderungen im Repository sieht, weil jemand anders formatiert, sondern nur die echten Änderungen. Und die Differenzansicht funktioniert dann auch viel besser, sprich ist übersichtlicher, wenn nicht noch Leerzeichen mehr oder weniger dazwischen hängen.
Ja, solche Änderungen kann man ausblenden, aber das ändert nichts daran, dass technisch unnötige Änderungen im Repository landen.

Bei uns wird jede einzelne Änderung vor dem Einchecken noch einmal geprüft um nicht Debugcode oder unbeabsichtigte Änderungen einzuchecken. Da sind verschiedene Formatierungen nur hinderlich. Und dazu kommt, dass das Mergen weniger Konflikte verursacht, wenn alle gleich formatieren.

Das erreicht man aber natürlich auch, wenn alle die gleiche eigene Formatierung verwenden (z.B. mit deinem Tool). Ich kenne allerdings kein Team, bei dem alle eine solche verwenden, das sind meistens eher nur einzelne Entwickler.

stahli 4. Mai 2020 11:55

AW: UnitOptimizer
 
Ok, kann man natürlich so sehen.

Ich finde den Code mit "Tabulatoren" übersichtlicher und attraktiver. Ist natürlich Geschmacksache und und im Optimizer optional auch abwählbar.

Wichtig ist natürlich, dass die gewünschte Formatierung IMMER AUF KNOPFDRUCK erreichbar ist.
Von händischen Formatierungen halte ich nichts. Bisher habe ich immer die die Standardformatierung genutzt, auch wenn sie mir nicht ganz gefallen hat.



Mal zur Suche:

Eine generelle Änderung der Suchfunktion würde auch Suchen über Umbrüche ermöglichen.
Wenn man z.B. "Vorname, Nachname, Alter" sucht, weil man die irgendwo als Parameter verwendet hat, dann wäre doch eigentlich schön, wenn die IDE eine Codezeile auch findet, wenn vor "Alter" ein Zeilenumbruch eingefügt ist weil die maximale Zeilenlänge sonst überschritten wird.

Noch cooler wäre wenn der Suchbegriff auch so etwas wie:
Delphi-Quellcode:
procedure SetPerson(const Vorname, Nachname: String; const Alter: Integer);

oder
Delphi-Quellcode:
procedure SetPerson(const aVorname, aNachname: String; const aAlter: Integer);

findet.

Ich glaube, ich habe gerade Blut geleckt.... :stupid:

HeZa 4. Mai 2020 14:14

AW: UnitOptimizer
 
Für solche Suchen verwende ich DocFetcher.

Dafür exportiere ich täglich alle Source-Repositories und alle Datenbankstrukturen, Trigger, Stored Procedures (IBExpert sei Dank), lass noch ein Tool darüber laufen, dass mir die SQLs aus allen DFM- und FastReport-Dateien extrahiert (um diese komischen Sonderzeichen und Umbrüche loszuwerden).

Vorteile:
* Die Suche darüber ist dann sehr schnell, die Antwort dauert immer nur 1-2 Sekunden.
* Man kann zwei Wörter suchen die bis zu x Wörtern auseinander liegen.

Nachteile:
* Ist eine Wortsuche (* wird allerdings unterstützt), Sonderzeichen wie , := ; " werden nicht gefunden
* Es ist immer der Stand vom Morgen des aktuellen Tages

Vermissen möchte ich das trotzdem nicht mehr.

Ciao HeZa

stahli 5. Mai 2020 01:57

AW: UnitOptimizer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal eine kleine Testsuche gebastelt... https://youtu.be/LzHs3a2NSZc :stupid:

Das ist noch recht provisorisch und unansehnlich aber die Funktionalität finde ich schon mal cool.

Was haltet Ihr davon?

Hat jemand Lust, daran mit zu arbeiten?
Ich kann mir vorstellen, dass das sehr nützlich werden kann.


(Jetzt muss ich mal noch einen kleinen Nachtspaziergang machen, um die Kopfschmerzen raus zu laufen und ein wenig runter zu kommen. Kennt Ihr sicher auch nach Doppelschicht am Rechner... ;-) )

jaenicke 5. Mai 2020 05:46

AW: UnitOptimizer
 
Eine nützliche Codesuche zu bauen ist gar nicht so einfach, da viele Optionen berücksichtigt werden sollten. Zum Beispiel in welchem Unitabschnitt man suchen möchte und ob in Code, Strings oder Kommentaren oder auch ob auch in Formulardateien gesucht werden soll.
Wie ich auf diese Liste komme? Dies ist in den GExperts in der Grep-Suche umgesetzt.

Ich selbst finde Regular Expressions flexibler als eine solche manuelle spezielle Suche.

Wenn du eine solche Suche implementieren möchtest, würde ich es aber im Code der GExperts tun und das Ergebnis an Thomas schicken. Wenn das gut funktioniert, nehme ich an, dass er es dann in seine Releases integrieren würde.
Das hätte den Vorteil, dass die IDE-Integration und die Ergebnisdarstellung schon sehr gut vorhanden sind.

stahli 8. Mai 2020 16:32

AW: UnitOptimizer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Suchfunktion weiter ausgebaut und schon ziemlich komfortabel... https://youtu.be/bmfGo_2uvgI
Ich bin allerdings bei meinem Ansatz geblieben und strebe da eine Integration in meinen Optimizer an.

Was haltet Ihr davon?
(Von jaenicke weiß ich es ja schon. :freak:)

jaenicke 8. Mai 2020 23:16

AW: UnitOptimizer
 
Das sieht von der Anzeige der Suchergebnisse ja ganz gut aus. Wenn der Rest auch etwas moderner aussähe und man das ganze in die IDE eindocken könnte, wäre das schon eine gute Umsetzung.

Zitat:

Zitat von stahli (Beitrag 1464060)
Was haltet Ihr davon?
(Von jaenicke weiß ich es ja schon. :freak:)

Ich brauche es nicht, aber das heißt nicht, dass ich es deswegen schlecht finde. ;-)

Uwe Raabe 9. Mai 2020 09:48

AW: UnitOptimizer
 
Zitat:

Zitat von jaenicke (Beitrag 1463580)
Nein, die Lösung war die Standard-Formatierung zu verwenden und eben alles nach und nach dahingehend zu formatieren.

Das haben wir vor ein paar Jahren bei einer 2 Mio. Zeilen großen Codebasis mal über die Kommandozeile gemacht. Seitdem ist das alles viel entspannter und einfacher geworden. Wenn über Jahre viele Entwickler mit unterschiedlichen Formatierungspräferenzen am Code arbeiten, tut ein solcher Hausputz manchmal Wunder.

stahli 9. Mai 2020 12:21

AW: UnitOptimizer
 
@jaenicke

Das frei schwebende positionierbare Suchformular war zunächst natürlich eine Testlösung und geplant, das später einzubetten.

Allerdings finde ich das jetzt so DEUTLICH komfortabler. Das Suchformular muss ja nicht ständig offen sein. Allerdings sollte es leicht erreichbar sein und auch genügend Platz bieten.

Daher ist es eigentlich sinnvoller, es nicht in die IDE einzubetten. Möglich wäre das sicherlich, aber letztlich m.E. nur nachteilig.

Schöner machen kann man es ja noch (ich wüsste nur nicht wie genau).


@Uwe

Eine einheitliche Formatierung ist natürlich sinnvoll und es muss komplett auf Knopfdruck erledigt werden. Die Frage ist nur, was mal als "Standard" ansieht.
Der Compiler dürfte zwischen der originalen Standardformatierung von Delphi und der Formatierung durch den UO keinen wesentlichen Unterschied feststellen.
Es sind ja (abgesehen von den weichen Zeilenumbrüchen) nur Zeilen verschoben und Leerzeichen eingefügt bzw. gelöscht.

Abgesehen von einigen Kinderkrankheiten kann ich zumindest keine Probleme feststellen.

Mit Mio Codezeilen habe ich natürlich keine Erfahrungen.

Uwe Raabe 9. Mai 2020 12:50

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1464100)
Eine einheitliche Formatierung ist natürlich sinnvoll. Die Frage ist nur, was mal als "Standard" ansieht.

Das ist - wie so oft - sicher Geschmackssache. Nur kommt man in einem Team nicht sehr weit, wenn jeder seinen eigenen Geschmack favorisiert. Daher legt man einen Style-Guide fest, der von dem verwendeten Formatierer (in unserem Fall dem Delphi eigenen) unterstützt wird. Wenn sich dann dieser Style-Guide noch weitestgehend an dem von Delphi orientiert, hat man auch keinen Bruch zwischen eigenem Code und den Delphi-Units, was dem schnellen Lesen und Erfassen sehr zugute kommt. Wenn ich mir überlege, wie viel Zeit ich mit dem Lesen von Code verbringe, summiert sich jede eingesparte Zehntel-Sekunde zu einer erklecklichen Zeitspanne auf. Ich wundere mich immer wieder über jeden, der diesen Vorteil zugunsten einer Vorliebe für eine eigene Formatierung verspielt.

Wenn man, wie ich, bei verschiedenen Kunden mit unterschiedlichen Style-Guides arbeiten muss, bleibt es natürlich nicht aus, daß man immer mal wieder was anders macht als vorgegeben. So verwende ich aus alter Gewohnheit immer mal wieder (eigentlich recht oft) das Hanging Begin (Zeilenumbrüche vor Begin in Steueranweisungen = Nein). Das lässt sich mit einem beherzten Ctrl-D aber recht schnell bereinigen.

Idealerweise wird vor jedem Check-In automatisch eine entsprechende Formatierung durchgeführt. Das sorgt dann auch für saubere Diffs in den ChangeSets.

dummzeuch 9. Mai 2020 14:22

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1464100)
Der Compiler dürfte zwischen der originalen Standardformatierung von Delphi und der Formatierung durch den UO keinen wesentlichen Unterschied feststellen.
Es sind ja (abgesehen von den weichen Zeilenumbrüchen) nur Zeilen verschoben und Leerzeichen eingefügt bzw. gelöscht.

Abgesehen von einigen Kinderkrankheiten kann ich zumindest keine Probleme feststellen.

Mit Mio Codezeilen habe ich natürlich keine Erfahrungen.

Falls Du mal weinen willst: Ich kann Dir zum Testen die Unit-Tests des GExperts Code Formatters empfehlen. Zu finden im Subversion Repository auf Sourceforge. Die meisten davon habe ich hinbekommen, aber an einigen knabbere ich noch. (Einige schafft der Code Formatter von Delphi auch nicht.)

stahli 9. Mai 2020 18:49

AW: UnitOptimizer
 
@dummzeuch

Danke. Ich habe sie mir mal geladen.
3 Abbrüche hatte ich. Die sind jetzt bereinigt.
Ich muss mir die Ergebnisse aber mal noch konkret durchsehen, ob diese "korrekt" sind.
Ist natürlich auch immer die Frage, was man unter korrekt versteht.
Da spielt ja auch immer der persönliche Geschmack hinein - bzw. welche unterschiedlichen Ergebnisse die einzelnen Optionen bringen...

Die testfile_LargeFile.pas braucht 13 Sekunden. 27.000 Zeilen in einer Unit sind ja aber sicherlich auch eher ungewöhnlich. Vielleicht lässt sich das auch noch etwas beschleunigen.
Mein Optimizer geht übrigens nicht nur strikt vorwärts durch die Zeilen und verschiebt die Wörter sondern zerlegt alles und baut das neu zusammen, um die Reihenfolge des Implementationsteils an den Interfaceteil anzugleichen. Das dauert dann halt etwas bei so großen Units.

Das aktuelle Ergebnis ist da aber definitiv auch noch nicht in Ordnung.
Das Problem muss ich noch in Ruhe analysieren.

Ein aktuelles Problem ist mit Sicherheit, dass der Optimizer zwischen echtem Kommentar und Auskommentierungen unterscheidet.
Durch diese Unterscheidungen kann er Kommentare besser im Quelltext einbinden oder z.B. mit Methoden zusammen verschieben.
Delphi-Quellcode:
{
procedure TestXYZ;
begin
end;
}

procedure TestB;
begin
end;

{:
  Das ist die Prozedur Test.
  Author: StahliSoft
:}
procedure TestA;
begin
end;
Wenn die Prozedur TestA verschoben wird, dann bindet der Optimizer zuvor den darüber befinden echten Kommentar ( {: ... ) an die Methode und verschiebt diesen mit.
Den Block mit TestXYZ versteht er dagegen als Code und bindet diesen nicht an TestB.

Ich kann natürlich eine Option "KeineUmsortierungDesQuelltextes" oder "KommentarImmerAlsEchtenKommentarAnsehen" anbieten.

Aber erst mal muss ich mir die aktuellen Ergebnisse und Probleme mal genauer ansehen...

(Wo scheitern z.B. Du und der Code-Formatter von Delphi? Hast Du direkt mal ein Beispiel zur Hand? (gern auch per Mail))


@Uwe

Ich sehe schon einen Unterschied darin, ein eigenes Projekt zu entwickeln und in anderen Units etwas nachzulesen.
Wenn ich mit einer eigenen Formatierung gut zurecht komme, kann ich ja dennoch anders formatierten Code lesen und verstehen.
Den Hauptaspekt würde ich aber auf das eigene Projekt legen.

Das Wichtigste ist: Formatieren auf Knopfdruck!

Einrücken und Umbrüche von Hand zu schreiben würde ich unbedingt vermeiden wollen.
Daher habe ich immer Ctrl-D benutzt, auch wenn mir das Ergebnis an vielen Stellen nicht wirklich gefallen hat.

Das "hanging begin" habe ich auch noch in der Planung (wird nicht schwierig, habe nur andere dringendere Optionen in Arbeit). Ich habe das auch schon bei einem Tester gesehen und hätte nicht gedacht, dass diese Formatierung verbreitet sein könnte...
Aktuell behält der UO den Code bei wie er gegeben ist. Also "begin" bleibt hinter "then" oder in der neuen Zeile stehen. Als Option will ich anbieten, eine von beiden Varianten "erzwingen" zu können.


Daher mal:


@all

Wer nutzt die Formatierung "hanging begin", also, dass begin nicht in einer neuen Zeile steht oder für wen käme das nie in Frage?
Delphi-Quellcode:
if x then begin
  y := 0;
  z := 0;
end;

jaenicke 9. Mai 2020 19:54

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1464132)
Wer nutzt die Formatierung "hanging begin", also, dass begin nicht in einer neuen Zeile steht oder für wen käme das nie in Frage?

Ich halte mich an Regel, dass man nicht mehrere Befehle in einer Zeile hintereinander hängen sollte, damit man nicht etwas davon übersieht und damit es weniger Probleme mit Versionsverwaltungen gibt. Und daher gehört auch das begin in eine eigene Zeile.

Beim Mergen gibt es nämlich ansonsten auch gerne mal "schöne" Ergebnisse, wenn nämlich beim automatischen Mergen das begin hinten in der Zeile entfernt wird, aber das end nicht. Diese Dinge kann man zwar dann korrigieren, aber besser ist es das begin in eine eigene Zeile zu schreiben, damit es beim Mergen auch separat behandelt wird.

Denn anders als der Delphi-Compiler handelt ein Merging-Tool nicht unbedingt semantisch korrekt... da ist es dann in Bezug auf das Ergebnis nicht egal wo das begin steht.

dummzeuch 9. Mai 2020 20:43

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1464132)
Die testfile_LargeFile.pas braucht 13 Sekunden. 27.000 Zeilen in einer Unit sind ja aber sicherlich auch eher ungewöhnlich.

Deshalb habe ich es auch in den Unittests. Der originale DelForEx (auf dem der von GExperts aufbaut) brauchte dafür Ewigkeiten. Das war eine meiner ersten Verbesserungen. Jetzt ist es weniger als eine Sekunde.

Zitat:

Zitat von stahli (Beitrag 1464132)
(Wo scheitern z.B. Du und der Code-Formatter von Delphi? Hast Du direkt mal ein Beispiel zur Hand? (gern auch per Mail))

Der von GExperts scheitert vor allem an einigen Generics, siehe die Bug-Reports

Der von Delphi scheiterte bereits an so Sachen wie Variant Records (zumindest beim letzten Mal, als ich es versucht habe, es gibt einen QC-Report von mir dazu). Es gab noch weitere Fehler, aber die sind inzwischen wohl teilweise behoben. Ich benutze ihn aber eigentlich nicht, weil er lange zu fehlerhaft dafür war, deshalb habe ich keinen Überblick, was er kann/nicht kann.

Apropos: GExperts erlaubt es Bereiche von der Formatierung auszunehmen:
Delphi-Quellcode:
{(*}
hier; nicht; formatieren;{*)}
Das geht IIRC bei Delphi nicht, d.h. man ist dem Formatter ausgeliefert.

Zitat:

Zitat von stahli (Beitrag 1464132)
Wer nutzt die Formatierung "hanging begin", also, dass begin nicht in einer neuen Zeile steht

Hier, wo der Finger leuchtet! Ich halte nichts davon, fuer begin/end eine eigene Zeile zu verschwenden. Ich formatiere immer so (bzw. lasse formatieren):

Delphi-Quellcode:
if bla then begin
  blub;
end else begin
  Trallala;
end;

jaenicke 9. Mai 2020 22:21

AW: UnitOptimizer
 
Zitat:

Zitat von dummzeuch (Beitrag 1464142)
Der von Delphi scheiterte bereits an so Sachen wie Variant Records (zumindest beim letzten Mal, als ich es versucht habe, es gibt einen QC-Report von mir dazu). Es gab noch weitere Fehler, aber die sind inzwischen wohl teilweise behoben. Ich benutze ihn aber eigentlich nicht, weil er lange zu fehlerhaft dafür war, deshalb habe ich keinen Überblick, was er kann/nicht kann.

Aktuell (10.3) fällt mir nichts mehr ein was dort wirklich falsch formatiert wird. Variable Records wie in der Unit testfile_VariantExtendedRecord.pas sehen vollkommen in Ordnung aus, und auch die testfile_LargeFile.pas sieht auf den ersten Blick gut aus und ist in ca. 2 Sekunden formatiert.

Harry Stahl 10. Mai 2020 14:22

AW: UnitOptimizer
 
Zitat:

Zitat von dummzeuch (Beitrag 1464142)
Zitat:

Zitat von stahli (Beitrag 1464132)
Die testfile_LargeFile.pas braucht 13 Sekunden. 27.000 Zeilen in einer Unit sind ja aber sicherlich auch eher ungewöhnlich.

Zitat:

Zitat von stahli (Beitrag 1464132)
Wer nutzt die Formatierung "hanging begin", also, dass begin nicht in einer neuen Zeile steht

Hier, wo der Finger leuchtet! Ich halte nichts davon, fuer begin/end eine eigene Zeile zu verschwenden. Ich formatiere immer so (bzw. lasse formatieren):

Delphi-Quellcode:
if bla then begin
  blub;
end else begin
  Trallala;
end;


Ich formatier das auch so wie Dummzeuch.

dummzeuch 10. Mai 2020 16:34

AW: UnitOptimizer
 
Zitat:

Zitat von jaenicke (Beitrag 1464151)
Zitat:

Zitat von dummzeuch (Beitrag 1464142)
Der von Delphi scheiterte bereits an so Sachen wie Variant Records (zumindest beim letzten Mal, als ich es versucht habe, es gibt einen QC-Report von mir dazu). Es gab noch weitere Fehler, aber die sind inzwischen wohl teilweise behoben. Ich benutze ihn aber eigentlich nicht, weil er lange zu fehlerhaft dafür war, deshalb habe ich keinen Überblick, was er kann/nicht kann.

Aktuell (10.3) fällt mir nichts mehr ein was dort wirklich falsch formatiert wird. Variable Records wie in der Unit testfile_VariantExtendedRecord.pas sehen vollkommen in Ordnung aus

Das hier war mein qc-Report:

https://quality.embarcadero.com/browse/RSP-18273

Bezog sich anscheinend noch auf 10.2.

Aber wie ich schon schrieb: Ich benutze den Formatter nur sporadisch und 10.3 quasi gar nicht.

Edit: Der Fehler ist auch in 10.3.3 noch da. Ergebnis:



Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Test: record a: Integer;
  b: Double;
end;
dt1:
record dt: tdatetime;
s:
string;
end;

begin

end;

stifflersmom 10. Mai 2020 17:01

AW: UnitOptimizer
 
Delphi-Quellcode:
if blPausenBrotzuAlt Then Begin
... Niemals

immer so

Delphi-Quellcode:
if blPausenBrotLecker Then
 Begin
  if blLättaAlsAufschnitt Then
   Exit;
 End;

API 10. Mai 2020 17:32

AW: UnitOptimizer
 
Zitat:

Zitat von stifflersmom (Beitrag 1464201)
Delphi-Quellcode:
if blPausenBrotzuAlt Then Begin
... Niemals


Genau, das tut einfach weg in den Augen.
Zudem sind die Delphi Sources auch nicht so formatiert.
Da ist es seltsam, wenn man den eigenen Source Code anders formatiert. Aber jedem das seine....

Uwe Raabe 10. Mai 2020 18:39

AW: UnitOptimizer
 
Zitat:

Zitat von API (Beitrag 1464203)
Genau, das tut einfach weg in den Augen.

Das sagt wohl jeder zu einer Formatierung, die nicht der von ihm präferierten entspricht. Es ist aber schon ein Stück weit auffällig, wie Entwickler gerade in diesem Punkt eine gewisse Egozentrik aufweisen.

Wichtig ist, daß man sich einigt (oder einer das festlegt) und alle sich daran halten. Von Vorteil ist es, wenn dieses daran halten durch einen Formatierer erzwungen werden kann. Da wohl jeder irgendwie mit den Delphi-Sourcen zu tun haben wird, kann es auch von Vorteil sein, wenn man sich an diesem Standard orientiert.

Am Ende muss aber jeder selbst wissen, wie er seinen Code formatiert - und damit leben, daß andere das vehement kritisieren werden.

jaenicke 10. Mai 2020 19:21

AW: UnitOptimizer
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1464206)
Es ist aber schon ein Stück weit auffällig, wie Entwickler gerade in diesem Punkt eine gewisse Egozentrik aufweisen.

Der Zahn wurde bei uns an der Uni gezogen (vielen der Anwesenden zumindest), weil schlicht verschiedene Formatierungen durch objektive Kriterien (Verständniszeit, Auswirkungen auf Merging usw., ...) analysiert wurden.

Seitdem halte ich mich selbst an den offiziellen Styleguide. Vorher habe ich auch z.B. das begin an das Ende der Zeile geschrieben. Aber Regeln wie eben "ein Befehl pro Zeile" wurden dort dann auch noch genauer begründet und mit harten Zahlen untermauert, so dass ich dann für mich persönlich erkannt habe, dass es für mich sinnvoller ist die Vorteile der offiziellen Formatierung mitzunehmen statt viel Zeit in eine eigene Formatierung zu stecken.
Und seit ich das ganze beruflich mache, stellt sich die Frage gar nicht mehr. Da hätte ich für eine eigene Formatierung schlicht keine Zeit mehr.

Aber die Frage nach eigener Formatierung, Dark Mode, Windows Themes, ... ist ja nichts Neues und es wird nie einen gemeinsamen Nenner geben. Von daher sollte es in Teams eben Vorgaben geben und ansonsten ist es gut, dass sich da im Grunde jeder austoben kann wie er möchte. Man sollte sich nur die eigene Flexibilität zumindest so weit bewahren, dass man mit anderen Formatierungen in fremden Quelltexten gut leben kann...

Bei Tools wie dem UnitOptimizer ist daher im Grunde die wichtigste Funktionalität eine möglichst hohe Flexibilität. Das sieht man ja auch an den Einstellungen des internen Formatters oder auch anderer Formatter: Es gibt dort dutzende bis hunderte Einstellungen, damit man die diversen unterschiedlichen Vorstellungen nach Möglichkeit abbilden kann um so optimal zu unterstützen.

Bei uns habe ich entsprechende Vorgaben schriftlich festgehalten wie der Formatter eingestellt werden soll (im Grunde alles auf Standard, nur die Zeilenlänge auf 130 Zeichen) und in den Installationsskripten habe ich diese Einstellungen auch direkt eingebaut. So arbeitet jeder im Team normalerweise mit der gleichen Formatierung.

stahli 17. Mai 2020 00:28

AW: UnitOptimizer
 
Suchfunktion weiter ausgebaut: https://youtu.be/1-vMXMATwcA :-)

API 17. Mai 2020 06:37

AW: UnitOptimizer
 
Kann man das Tool auch herunterladen (Beta oder so)? (habe jetzt nicht alle 11 Seiten durchgelesen).
Wenn man es ausprobieren kann ist es einfacher, ein Feedback zu geben.

stahli 17. Mai 2020 08:52

AW: UnitOptimizer
 
Es fehlen noch mehrere Features und vor allem gibt es auch noch einige ernsthafte Probleme.

Sobald ein stabiler und benutzbarer Stand erreicht ist werde ich hier Tester suchen.
Das wäre jetzt jedoch jetzt noch nicht verantwortbar. Ich hoffe mal, dass ich im Sommer soweit bin.


(Ich hatte zwar schon frühere Testversionen zur Verfügung gestellt, aber jetzt warte ich lieber doch ab, bis das Tool wirklich hilfreich und einsetzbar ist.)

stifflersmom 17. Mai 2020 11:29

AW: UnitOptimizer
 
Das Darstellen der Zeilennumern in den Suchbegriffen halte ich für äußerst nützlich und bin froh, dass Gexperts das schon macht.

API 17. Mai 2020 12:41

AW: UnitOptimizer
 
Zitat:

Zitat von stifflersmom (Beitrag 1464721)
Das Darstellen der Zeilennumern in den Suchbegriffen halte ich für äußerst nützlich und bin froh, dass Gexperts das schon macht.

Ja, das wäre nützlich. So kann man sich besser orientieren, wo der Suchbegriff vorkommt (Anfang, Mitte, Ende des Source Codes)

stahli 17. Mai 2020 12:52

AW: UnitOptimizer
 
Ok. Mache ich mit.

Aviator 17. Mai 2020 13:33

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1464726)
Ok. Mache ich mit.

Ich würde es als Option einbauen. Also abschaltbar wenn gewünscht, aber Default eingeschaltet.

jaenicke 17. Mai 2020 23:06

AW: UnitOptimizer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von stahli (Beitrag 1464708)
Suchfunktion weiter ausgebaut: https://youtu.be/1-vMXMATwcA :-)

Vielleicht verstehst du mich bezüglich gedockt besser, wenn ich einfach mal meinen Desktop zeige. Das Bild ist zwar 4 Jahre alt, aber so ähnlich sieht er auch heute noch aus:

Anhang 52524

Und da mache ich dann eine Grep-Suche und benutze die auch z.B. als Inhaltsverzeichnis um zwischen verschiedenen Codeabschnitten zu wechseln, die ich zu einem Thema gerade bearbeite.

stahli 18. Mai 2020 09:18

AW: UnitOptimizer
 
Was hast Du denn für einen Bildschirm?

Ich kann mir das mit dem eindocken ja mal anschauen (Farboptionen natürlich sowieso auch noch).

Wenn man sehr viel Platz übrig hat könnte man natürlich das Suchformular immer eingedockt offen lassen.

jaenicke 18. Mai 2020 10:05

AW: UnitOptimizer
 
Zitat:

Zitat von stahli (Beitrag 1464758)
Was hast Du denn für einen Bildschirm?

27 Zoll auf 4k, damit auch mehr drauf passt. Denn es bringt ja nichts, wenn ich einen großen Monitor habe und trotzdem nur Full HD verwende. So kann ich im Debug-Desktop z.B. die Haltepunktliste oder auch die Assembleransicht ständig eingeblendet lassen, wodurch ich dort auch mal nebenbei hinschauen kann oder schneller die Haltepunkte aktivieren oder deaktivieren.

stahli 19. Mai 2020 01:07

AW: UnitOptimizer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Was, schon 2 Uhr!? Dann muss ich bald zur Arbeit... :-(

Also einige Punkte habe ich schon geschafft:
- F3 und Shift-F3
- Zeilennummern (später optional)
- Wort an Cursor bzw. Markierung (auch über Linebreak hinweg) suchen

Als nächstes soll folgen:
- einige Korrekturen
- suchen ab Cursor
- Highlighting im Codeeditor
- Suchen&Ersetzen

jaenicke 19. Mai 2020 06:50

AW: UnitOptimizer
 
Ob ich eine solche Suche jemals brauchen werde, weiß ich noch nicht, aber es sieht jedenfalls echt gut aus (abgesehen vom Dark Mode :P).

stahli 19. Mai 2020 11:23

AW: UnitOptimizer
 
Freut mich schon mal. :-)

Ich habe jetzt (da es so langsam real benutzbar wird) gemerkt, dass ich unbedingt auch eine Schnellsuche brauche, also "ab hier in der aktuellen Unit suchen ohne ein großes Formular auf zu machen".

Das wird dann schon grundsätzliche Ähnlichkeiten haben zur originalen Delphi-Suche, aber doch mit wesentlichen Unterschieden.

Mit Ctrl-F wird man ein minimales Suchformular für die Schnellsuche erhalten (vermutlich auch eingedockt).
Mit Shift-Ctrl-F bekommt man das komplett große externe Formular.

Allerdings wird in beiden Fällen die gleiche Suche verwendet werden, so dass man direkt zwischen beiden Darstellungen und verkürzten oder vollständigen Suchoptionen wechseln kann.

Die Schnellsuche hätte dann (wenn ich das so hin bekomme) große Ähnlichkeit zur originalen Schnellsuche, aber die Möglichkeit der unscharfen Suche und Ausklammerung von Kommentaren oder Stringkonstanten.

Die Komplettsuche bereitet die Treffer zusätzlich besser auf und ermöglicht Suchen&Ersetzen.

stifflersmom 19. Mai 2020 11:30

AW: UnitOptimizer
 
Das sieht echt super aus.

Ein Frage zwischendurch:
Ist es möglich, eine Art "sublime" für Arme zu integrieren?

Ich träume davon, dass alle Vorkommen einer Suche im Quelltext hervorgehoben werden und dass mann dann auch noch diese Treffer direkt und alle auf einmal verändern kann, ohne dass man extra Suchen&Ersetzen benutzen müsste.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.
Seite 4 von 7   « Erste     234 56     Letzte »    

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