Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] statische klassen immer sinnvoll ?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] statische klassen immer sinnvoll ?

    Hi,

    ich habe vor kurzem das Grundgerüst meines Frameworks fertiggestellt und habe zu testzwecken einmal meine Basis-klassen in statische Klassen geändert. Eine höhere Performance war schon zu spüren ...

    Meine Frage ist nun, wo macht eine statische klasse sinn? ... oder fast schon wo macht eine normale Klasse sinn? ...

    Kann man aus allen Klassen bei denen man sich sicher ist das sie nur einmal erzeugt werden, eine statische klasse basteln? ... und die klassen die mehrmals erzeugt werden können, als normale Klasse erstellen?

    Oder wie seht ihr das?

    Gruß Codercrush
    Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
    Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.


  • #2
    Ich find die Frage komisch. Den statisch und nicht statisch sind zwei Paar Schuhe! Sie lösen andere Probleme und von daher stellt sich die Frage gar nicht.

    Kommentar


    • #3
      Ich glaube du hast statische Klassen nicht ganz verstanden...

      Kommentar


      • #4
        Ich glaube du hast statische Klassen nicht ganz verstanden...
        mmh ... glaub ich irgendwie doch vllt hast du ja recht ...

        Ich find die Frage komisch. Den statisch und nicht statisch sind zwei Paar Schuhe! Sie lösen andere Probleme und von daher stellt sich die Frage gar nicht.
        mit is schon klar das statisch und nicht statisch nicht das selbe ist ...

        vllt hab ich mich nich ganz verständlich ausgedrückt ...

        ... meine frage ist einfach nur ... soll ich Klassen die nur einmal erzeugt werden, generell als Statische Klasse oder sie als Singleton also nicht statisch programmieren ?
        Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
        Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.

        Kommentar


        • #5
          Das hängt ganz vom konkreten Fall ab.

          Kommentar


          • #6
            Es gibt viele Klassen die nur einmal erzeugt werden aber theoretisch mehrfach vorhanden sein könnten/sollten/müssten. In dem Fall ist es dann natürlich extrem ungünstig die als statische Klassen zu implementieren. Ich denke es gibt nur sehr wenige Anwendungsfälle wo man wirklich sicher gehen kann das man nur eine einzige Instanz der Klasse benötigt.

            Kommentar


            • #7
              Es gibt viele Klassen die nur einmal erzeugt werden aber theoretisch mehrfach vorhanden sein könnten/sollten/müssten. In dem Fall ist es dann natürlich extrem ungünstig die als statische Klassen zu implementieren. Ich denke es gibt nur sehr wenige Anwendungsfälle wo man wirklich sicher gehen kann das man nur eine einzige Instanz der Klasse benötigt.
              In meinem Fall sind es halt meine Basis-Klassen, wie z.B. die Datenbank, die Seite an sich, die Konfiguration, die Session usw. ...

              ... also läufts wohl darauf hinaus ... wenn ich mir 99% prozent sicher bin das ich die Klasse nur einmal brauche, kann ich sie statisch machen ...
              Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
              Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.

              Kommentar


              • #8
                Nein auch dann nicht, es kommt auf den Anwendungszweck drauf an. Datenbank z.b. geht gar nicht weil du vlt. mal eine zweite DB anzapfen möchtest. Konfiguration auch nicht denn was ist wenn du mehrere Konfigurationen haben möchtest? Oder Session, was ist wenn du deine Session noch irgendwo anders speichern möchtest?

                Kommentar


                • #9
                  mmh ...

                  Datenbank z.b. geht gar nicht weil du vlt. mal eine zweite DB anzapfen möchtest
                  geht auch ohne von der Datenbank 2 Instanzen zu haben ... also zumindest in mysql weiß ich das ...

                  Konfiguration auch nicht denn was ist wenn du mehrere Konfigurationen haben möchtest?
                  Für mein Framework brauchst du nicht mehrere Konfigurationsklassen ...

                  was ist wenn du deine Session noch irgendwo anders speichern möchtest?
                  Dann ändert man in meinem Framework die Speicher routine der sessions^^ ...

                  ... sorry aber da seh ich noch keinen richtigen grund ...
                  Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
                  Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.

                  Kommentar


                  • #10
                    Ich sehe in diesem Beitrag keine Vorteile genannt, aber jede Menge „wird schon nicht vorkommen“.
                    ... also läufts wohl darauf hinaus ... wenn ich mir 99% prozent sicher bin das ich die Klasse nur einmal brauche, kann ich sie statisch machen ...
                    Sorry, Objektorientierung und statische Verwendung von Methoden sind zwei völlig verschiedene Paradigmen. Statics sind so gensehen nur namensraumbasierte prozedurale Prinzipien, wärend Objekte eine echte Kapselung bieten, als Blackbox fungieren, die in einer Variable gehalten werden oder bsp. als Funktionsparameter dienen können. Für mich wird OOP erst richtig im Zusammenspiel mehrerer Objekte sinnvoll, was bspw. bestimmte Pattern, Typehinting u.ä. erlaubt. Statische Methoden sind meist nur wenig elegante Krücken.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      @nikosch ...

                      ... ok ... das war ne antwort

                      ... Klingt einleuchtend

                      ... thx für euer bemühen
                      Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
                      Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.

                      Kommentar


                      • #12
                        Du fragst doch bei prozeduraler Programmierung auch nicht:

                        "Soll ich bei Werten bei denen ich mir zu 99% sicher bin,
                        daß sie sich nicht ändern eine Konstante nehmen ?
                        Oder besser doch ne Variable ?
                        Wann machen Konstanten überhaupt Sinn ?"
                        Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                        Kommentar


                        • #13
                          Gelungener Vergleich.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Interessanter Thread. Statische Methoden werden denke ich mal hauptsächlich benutzt, um das Singleton-Pattern realisieren zu können. Ich verwende auch relativ häufig das Registry Pattern ( = statische Klasse) für config-Files, um überall auf Config-Elemente zugreifen zu können.

                            Kommentar


                            • #15
                              - Verwaltung von Objekt-Instanzen im globalen Variablenraum
                              - Anbieten von Hilfsfunktionen mit hohem kontextuellen Bezug zur Klasse aber ohne spezifischen Objektbezug im globalen Funktionsraum
                              - globale Initialisierung/Konfiguration von Klassen als Objekt-Defaults

                              Diese drei Punkte fallen mit ad hoc als sinnvolle Anwendungsfälle ein.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X