Ankündigung

Einklappen
Keine Ankündigung bisher.

Typ bei jeder Methode prüfen

Einklappen

Neue Werbung 2019

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

  • #31
    Zitat von Neither
    Kann - muss aber nicht. Es heißt ja auch nicht, dass eine Typprüfung in jedem Fall sinnentleert sein muss
    Eine Typprüfung in _jedem_ Fall vorzunehmen ist hingegen so sinnvoll wie eine generelle Gabe von Antibiotikum für jeden der zum Arzt geht.
    Wenn es dir in deinem Beitrag primär um die Nuance ging, dass man nicht unter allen Umständen in jeder Methode auf den passenden Datentypen prüfen muss, stimme ich schon zu.

    Ich verstehe deine Formulierungen aber teilweise auch so, dass du derartige Prüfungen für ein „unzulässiges“ Übernehmen von Konzepten aus anderen Sprachen hältst. Das sehe ich (nicht zuletzt aus pragmatischen Gründen) anders, auch wenn PHP die Sprache ist, die sie ist.

    Will ich vom Prinzip gar nicht widersprechen. Das Problem geht aber jetzt erst los: Du machst eine Typprüfung auf den gesamten positiven Zahlbenbereich von int. Dein System - ich konstruriere jetzt einfach weiter - darf aber nur int > 0 und int < 9.999 verwenden. Du musst - natürlich - eine Logik entwerfen. Das Typsystem lässt Dich hier schon im Stich.

    Ergebnis: Overhead ohne einen Gewinn an Sicherheit.
    Eine Prüfung auf einen (primitiven) Datentypen ist eine Prüfung auf einen Datentypen – nicht mehr, aber auch nicht weniger.

    Nein, das ist eben PHP. Kenne die Regeln, lerne damit zu leben - lerne es zu lieben und vor allem zu Deinem Vorteil zu nutzen. Bau aber nicht Sprachkonstrukte aus anderen Sprachen nach.
    Vielleicht mal anders angefangen:

    Es wird grundsätzlich so oder so eine Strategie benötigt, mit Werten umzugehen, die im falschen Datentypen übergeben werden. PHP versucht zwar im Zweifel auch von allein, sich das alles passend zurechtzudingsen, aber da passiert genau das, was durch strikte Typprüfungen vermieden werden kann: Jede Funktion macht im Grunde irgendwas. Das ist komplett chaotisch.

    ...also verlagerst Du doch nur eine in jedem Fall (über die Typumwandlung hinaus) notwendige Logik in vielleicht 10 oder 20 aufrufende Stellen. Das ist wenig effektiv und noch weniger sinnvoll.
    Falls du dich damit wieder auf das „zwischen 0 und 9.999“ beziehst: So was gehört selbstverständlich in die aufgerufene Methode.

    Möglicherweise reden wir da aneinander vorbei. Ein is_int ersetzt natürlich keinen Range-Check oder dergleichen.

    Kommentar


    • #32
      Zitat von mermshaus Beitrag anzeigen
      Wenn es dir in deinem Beitrag primär um die Nuance ging, dass man nicht unter allen Umständen in jeder Methode auf den passenden Datentypen prüfen muss, stimme ich schon zu.

      Ich verstehe deine Formulierungen aber teilweise auch so, dass du derartige Prüfungen für ein „unzulässiges“ Übernehmen von Konzepten aus anderen Sprachen hältst. Das sehe ich (nicht zuletzt aus pragmatischen Gründen) anders, auch wenn PHP die Sprache ist, die sie ist.
      Nein, ich glaube im Endeffekt liegen wir auf einer Linie. Typ-Prüfungen generell in PHP als Grundsatz machen zu wollen, sehe ich tatsächlich als ein unsinniges Übernehmen an. Und ich bin auch sehr vorsichtig (bzw. kritisch) wann eine Typprüfung (alleine) überhaupt Sinn macht.

      Es ist aber gar nichts gegen eine Typprüfung zu sagen wenn es eben im jeweiligen Kontext sinnvoll ist. Das mache ich auch manchmal, ist aber bei mir der Einzelfall oder oft nur ein Teil einer umfangreicheren logischen Prüfung.

      Vielleicht habe ich das schon zu sehr als advocatus diaboli zum Ausdruck gebracht


      Zitat von mermshaus Beitrag anzeigen
      Eine Prüfung auf einen (primitiven) Datentypen ist eine Prüfung auf einen Datentypen – nicht mehr, aber auch nicht weniger.
      (...)
      Full ack - auch zu dem Rest Deines Posts!

      Kommentar

      Lädt...
      X