Ich kam ursprünglich aus PHP und Python, wechselte aber vor ca. 3 Jahren zu C#. Der Wechsel zur Primärentwicklung in einer stark typisierten Sprache wie C# war zugegebenermaßen eine Lernkurve. Manchmal kann es zu restriktiv wirken, besonders in Kombination mit der sehr starren C# - Vererbung. Stark typisierte Sprachen kaufen jedoch eine Reihe von Dingen.
Erstens und wahrscheinlich am wichtigsten ist Kompilierungszeit Fehler. Bei dynamischen Sprachen wie Python gibt es keinen Hinweis darauf, dass Sie den falschen Typ verwendet haben, bis die Anwendung ausgeführt wird und Sie eine Laufzeitausnahme erhalten. Mit einer stark typisierten Sprache wird die Anwendung nicht einmal erstellt, sodass Sie im Allgemeinen keine Timebombs in Ihrem Code haben.
Zweitens können stark typisierte Sprachen stark optimiert werden. Indem sichergestellt wird, dass jede Sache immer ein bestimmter Typ ist, kann der Compiler die Speicherzuweisung und den tatsächlich kompilierten Assemblercode optimieren.
Drittens ermutigen stark typisierte Sprache gute Programmierpraktiken. Während es stark einschränkend wirkt, erzwingen stark typisierte Sprachen eine Struktur in Ihrem Code, die in dynamischen Sprachen oft fehlen kann. Das heißt natürlich nicht, dass es nicht möglich ist, guten Code in einer dynamischen Sprache zu schreiben, aber wenn Entwickler sich nicht die Zeit oder die Aufmerksamkeit für das Detail nehmen wollen, können sie in einer dynamischen Sprache viel mehr Schaden anrichten als eine, die stark typisiert ist.
Das heißt, C# ist nicht alle stark typisiert. Nämlich das etwas abscheuliche dynamic
Keyword, das zu oft missbraucht wird, und MVC ermutigt fast zur Verwendung von Dynamics mit Dingen wie ViewBag
. Während dynamic
kann seinen Platz haben, würde ich empfehlen, es so viel wie möglich zu vermeiden, wie Sie im Wesentlichen alle Vorteile der Arbeit in einer stark typisierten Sprache wegwerfen.
Es gibt auch das Konzept der Generika. Sie verwenden wahrscheinlich Generika, ohne es zu merken, aber wenn Sie sich in Ihrer Programmierung übermäßig eingeschränkt fühlen, sollten Sie wahrscheinlich mehr in sie schauen und lernen, wie sie die Macht, die sie bringen, wirklich ausnutzen können. Es ist ein bisschen wie ein dynamischer Typ, aber es wird immer noch zur Kompilierungszeit gesetzt, damit Sie keinen der Vorteile verlieren, die mit sich bringen.
Angenommen, Sie sind mit Umbraco 7.4+, kann ich wirklich mit Modelsbuilder empfehlen. Es ist Teil des Umbraco-Kerns und gibt Ihnen stark typisierte Eigenschaften. Anstatt Model.GetPropertyValue ("aliasName") auszuführen, können Sie Model.AliasName ausführen. Das sieht bei Dynamiken sehr ähnlich aus, aber wenn Sie Visual Studio richtig konfigurieren, können Sie Intellisense verwenden. http: // 24 Tage.in/umbraco-cms/2016/getting-started-with-modelbuilder/ – Mark