Keine Fehler wegen Null oder Undefined mit Typescript

Jeder Javascript Programmierer ist bestimmt schon mal über den Laufzeitfehler undefined is not a function oder auch Cannot read property ‚length‘ of null gestolpert. Der Fehler tritt immer dann auf, wenn man mit einem Wert etwas machen möchte (z.B. als Funktion aufrufen oder auf die length Property zugreifen), der Wert dann aber undefined oder null ist. Auch Java oder C# Programmier kennen dieses Problem unter dem Name NullPointerException oder NullReferenceException, und in C oder C++ gibt es das Problem natürlich auch, hier stürzt das Programm gleich ab.

Die Idee einer speziellen null-Referenz, die überall anstelle einer „echten“ Referenz verwendet werden kann, geht auf Tony Hoare und ALGOL in den 1960er Jahren zurück. Tony Hoare nannte seine Erfindung in der Retrospektive den „billion dollar mistake“, da die dadurch entstehenden Laufzeitfehler sehr häufig die Ursache von Bugs sind und somit hohe Kosten verursachen.

Interessanterweise haben statisch getypte, funktionale Programmiersprachen diesen „billion dollar mistake“ nicht wiederholt. So gibt es z.B. in Haskell den Typ Maybe, der die Abwesenheit eines Werts explizit im Typsystem repräsentiert.

Aber auch in Sprachen wie Javascript hat man die Notwendigkeit erkannt, statisch erkennen zu wollen, ob Werte null oder undefined sein können. So ist in Typescript, ein statisch getypter Javascript-Dialekt, seit einiger Zeit die strictNullChecks Option verfügbar. Wir werden in diesem Artikel sehen, wie man mit dieser Option Laufzeitfehler vermeiden kann, welche weiteren sinnvollen Optionen es zur Fehlervermeidung gibt, wie man die strictNullChecks Option für eine große Codebasis inkrementell einführen kann und ob man zwischen null und undefined unterscheiden sollte.

Weiterlesen...

Schulungen Funktionale Software-Architektur

Ausnahmsweise erlauben wir uns in diesem Blog etwas Eigenwerbung: Im Juli führen wir offene Schulungen zur funktionalen Software-Architektur in verschiedenen deutschen Städten durch:

Weiterlesen...

Sommer-BOB Spezial am 21. August in Berlin

Sommer-BOB 2019

Gerade erst ist die Winter-BOB vorbei (Nachlese demnächst hier), steht schon die nächste vor der Tür: Dieses Jahr veranstalten wir einmalig eine Sommer-BOB Spezial, und zwar am 21. August 2019 in Berlin, diesmal im Scandic Hotel Potsdamer Platz.

Wie immer geht es bei der BOB um Techniken und Technologien, die das Beste im jeweiligen Bereich repräsentieren, das es für Entwicklerinnen gibt. Jenseits des Mainstreams schlummern oft mächtige Werkzeuge, die Produktivität und Freude an der Softwareentwicklung steigern können, von denen aber viele Entwickler noch zu wenig wissen.

Anlass für die Sommer-BOB ist die International Conference on Functional Programming, die größte Forschungskonferenz zur funktionalen Programmierung, in vom 18.-23. August in Berlin stattfindet, ebenfalls im Scandic. BOB-Teilnehmer können sich am 21.8. auch ICFP-Talks ansehen und umgekehrt.

Weiterlesen...

Test-ABC mit Elixir

In der Regel schreibt niemand gerne Tests. Es ist einfacher mit etwas Selbstsicherheit zu behaupten, dass man das Programm gleich richtig schreibt und sich Tests sparen kann.

Weit gefehlt, wie wir alle wissen. Tests werden überall benötigt. Wir schauen uns heute die Möglichkeit an, mit der jungen Sprache Elixir Tests zu schreiben. Elixir basiert auf der Erlang Virtual Machine und bietet uns mit Mix und ExUnit ein sehr gutes Tooling, um einfach, übersichtlich und schnell Tests formulieren und ausführen zu können.
Weiterlesen...

Uhrwerk Freie Monade: Hinter den Kulissen

Im Artikel „Freie Monaden oder: Wie ich lernte, die Unabhängigkeit zu lieben“ wurde gezeigt, wie freie Monaden eingesetzt werden können, um die Ausführung eines Programmes von dessen Beschreibung zu entkoppeln. In diesem Folgeartikel werden wir in einfachem Scala die freie Monade algebraisch konstruieren. Dabei wird erneut deutlich, dass die Formulierung von Operationen als Daten dabei hilft, über Probleme strukturiert nachdenken zu können.

Weiterlesen...