Im Script "Appmenu.uc.js" eine Trennlinie im Submenü "Firefox Funktionen" einfügen, wie geht das?

  • Es gibt wohl ein paar Argumente dafür, die meisten laufen aber darauf hinaus, dass es angenehmer für den 'lazy' Entwickler ist, wenn man einfach in die neue Zeile ein weiteres Element hinzufügen kann .

    Das hat nicht viel mit Bequemlichkeit zu tun. Ich nannte ja bereits das Beispiel der Weiterverarbeitung von Daten, wo man teilweise nicht garantieren kann, welche Felder und in welcher Reihenfolge diese ankommen. Ein anderes gutes Argument nennt der von mir verlinkte MDN-Artikel, Stichwort Versionskontrolle, also Git und vergleichbare Systeme. Wenn du ein Element zu einem Array oder eine Eigenschaft zu einem Objekt hinzufügen möchtest, würde ohne Trailing Comma auch immer eine Zeile als verändert angezeigt werden, die in Wahrheit überhaupt keine funktionale Veränderung erhalten hat und wo nur nachträglich das Komma hinzugefügt werden musste, damit es keinen Syntax-Fehler gibt. Das bläht einerseits die Ansicht der Code-Unterschiede auf, hat aber auch noch eine viel nervigere Folge: Normalerweise kannst du sehen, wer eine Zeile zuletzt und in welchem Zusammenhang geändert hat. Wenn die letzte Änderung aber nur ein hinzugefügtes Komma ist, ist das wirklich keine relevante Information und verdeckt eine andere Information, die mit höchster Wahrscheinlichkeit sehr viel relevanter ist.

    Beispiel:

    Folgender Code ist die Ausgangslage:

    JavaScript
    const obj = {
      foo: 'abc',
      bar: 3
    }

    Nun wird eine weitere Eigenschaft hinzugefügt. Der Code sieht jetzt so aus:

    JavaScript
    const obj = {
      foo: 'abc',
      bar: 3,
      baz: true
    }

    Jetzt merkst du allerdings, dass bar doch 4 und nicht 3 sein müsste, und fragst dich, was die Motivation dahinter war, hier eine 3 zu schreiben. Vielleicht gab es dafür ja einen gewichtigen Grund. Also nutzt du das Blame-Feature des Versionskontrollsystems und schaust dir die letzte Änderung der Zeile bar: 3 an. Blöd: Die letzte Änderung ist das hinzugefügte Komma und nicht die Änderung, welche bar: 3 hinzugefügt hat, dessen Commit-Nachricht respektive verlinkter Issue idealerweise die Änderung ausführlich erklärt hat, vielleicht gab es dazu sogar eine umfangreiche Diskussion.

    Nun kannst du natürlich das Dateiprotokoll durchgehen und nach früheren Änderungen dieser Datei schauen. Allerdings ist die Änderung schon fünf Jahre her und die Datei (bloß an anderen Stellen) wurde in der Zwischenzeit 37 Mal bearbeitet. Es ist nicht so, dass du an die gewünschte Information nicht mehr kommen könntest, aber in diesem Beispiel hast du nun halt einen erheblichen Mehraufwand deswegen, weil du dir im schlechtesten Fall alle 37 Datei-Änderungen ansehen musst, bis du eben diese Änderung findest.

    Ich hoffe, das Beispiel leuchtet ein. :D Das ist jedenfalls ein wichtiger Grund, wieso das häufig als gute Praxis gesehen und in manchen Projekten sogar erzwungen wird. Selbst wenn man alleine am Code arbeitet, ist das schon hilfreich. Aber je mehr Leute am Code arbeiten, desto größer wird der Punkt natürlich, weil man sich vielleicht an eigene Änderungen noch erinnert, aber wenn es um fremden Code geht, dann manchmal eben doch ewas Kontext benötigt.

    Ja, aber aus der Sicht der Gegenwart ist es müßig zu sagen, dass es irgendwas heute nicht gegeben hätte, wenn früher andere Entscheidungen getroffen worden wären. Natürlich hätten wir dann andere Möglichkeiten, aktive Inhalte zu verarbeiten. Vielleicht bessere, vielleicht schlechtere...

    Du hattest ja JavaScript als Konzept, nicht als Sprache angesprochen. Deswegen hatte ich es auf die funktionale Ebene bezogen. ;) Klar, hätten wir nicht JavaScript, dann wohl etwas anderes. Und über JavaScript als Sprache kann man streiten. Aber letztlich sind Sprachen auch nur Werkzeuge und man muss eben nehmen, was da ist. :D

    PS: 'Rust' scheint auf dem Papier eine wirklich interessante Sprache zu sein. Die möchte ich mir auf jeden Fall mal anschauen...!

    Absolut empfehlenswert. Es hat Gründe, wieso Rust immer mehr eingesetzt wird und Rust seit Jahren durchgehend zur beliebtesten Sprache von den Stack Overflow-Nutzern gewählt wird. Ich find die Einstiegshürde vergleichsweise hoch, aber wenn man sieht, welches Ansehen Rust genießt, dann ist eine Beschäftigung damit definitiv gut investierte Zeit. Ich würde mich damit auch wieder gerne mehr beschäftigen, aber das ist von meiner beruflichen Tätigkeit her dann halt doch wieder so weit entfernt, dass ich einfach nicht die Zeit aufbringen kann, die ich investieren müsste, damit da auch ein praktischer Nutzen bei rauskommt.

    In diesem Sinne, noch einen schönen Tag,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, :)

    Ebenso!

  • So,

    zum Abschluss nochmal ein Screenshot des vorläufigen Endergebnis. Nachdem ich die ersten Teilbereiche in Javascripts verstanden habe, war die Anpassung kein wirkliches Problem mehr, sogar ein zusätzliches Submenü war somit kein Problem mehr. :)

    Ich Danke allen Helfern für ihr tolles Feedback, bitte weiter so. :thumbup: :)

    P.S.:

    Es muss mal wieder gesagt werden, das Camp ist ein wirklich tolles Forum. :)

    Es grüßt,

    Ralf

  • funktioniert das bei Dir?

    Nein.

    Aber wenn ich in Zeile 114 diesen Eintrag ändere

    Code
    command: "Services.appinfo.invalidateCachesOnRestart() || BrowserUtils.restartApplication();",

    zu

    Code
    command: "Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);",

    funktioniert es wieder per Linksklick auf den Eintrag.

  • Ich hatte das auch aktiviert, aber es funktionierte nicht, auch nach einem Neustart mit geleertem Scriptcache.

    Bei den Neustart-Skripten hatte sich mal eine Befehlszeile geändert. Suche mal im Appmenu-Skript nach name: 'Neustart',. Bei meiner Version ist das in Zeile 136. Darunter, bei mir in Zeile 137, muss Folgendes stehen:

    JavaScript
    command: "Services.appinfo.invalidateCachesOnRestart() || Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);",

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Bei meiner Version ist das in Zeile 136. Darunter, bei mir in Zeile 137, muss Folgendes stehen:

    So auch bei mir und mit Deiner Zeile funktioniert auch der Mittelmausige Klick, Dankeschön.

    Aber wenn ich in Zeile 114 diesen Eintrag ändere

    Auch Dir Dankeschön, würde auch funktionieren, aber ich habe die Version von milupo verwendet.

    Es grüßt,

    Ralf

  • Dankeschön.

    Gern geschehen.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Ja, gerade gesehen, hat sich überschnitten. Kannst du Beitrag #33 mal noch rüberschieben? Danke.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress