2017-02-21 2 views
1

Ich bin ein Web-Entwickler, der derzeit mvc3 Rasierer und Umbraco verwendet, um Web-Anwendungen zu erstellen. Ich war lange nicht mehr in diesem Job und bin von der Verwendung von dynamischen zu stark typisierten Elementen übergegangen, um Standards zu folgen.Dynamisch vs stark typisierte Elemente

Ich habe nie wirklich einen Grund gegeben, und online zu suchen, es scheint klar, dass es viel einfacher zu folgen und Debug-Set-Typ Variablen, aber ich bin verwirrt über die Verwendung in Funktionen.

Zum Beispiel, wenn ich Umbraco Content verwende, habe ich jetzt zu 1Umbraco.TypedContent1 gewechselt. Ich rate, dass es eine stark typisierte Variable zurückgibt, aber gibt es andere Vorteile als das Debuggen?

+0

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

Antwort

4

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.

+0

Eine sehr klare Antwort, sehr geschätzt :) –

1

Zusätzlich zu den Dingen, die Chris erwähnt, gibt es auch einen Leistungsvorteil, da die dynamische API in Umbraco langsamer ist als die stark typisierte.

+0

Gut zu wissen :) –

Verwandte Themen