2016-04-11 8 views
2

Ich habe Sinn für eine Codebasis, die ich in meinem neuen Job gegeben wurde. Ich kann hier viele Anti-Muster sehen, einer von ihnen ist ein "Gott-Objekt", das eine Menge Dinge enthält und verschiedene Objekte, auf die es immer zugreifen kann. Das ist ein anderes Problem, meine Frage ist, über die Tatsache, dass einige Objekte zugreifen ihre Mitglieder mit ‚‘, andere tun es über [], zum BeispielUnterschied zwischen "foo.bar" und "foo ['bar']" in js

GOD.meow.woof()

in einer Quelldatei und

GOD['meow']["woof"]()

in einem anderen.

Ich kenne Javascript tief genug, um zu erkennen, dass es überhaupt keinen Unterschied gibt. Oder ist es da? git blame zeigt mir, dass beide Quellen von der gleichen Person geschrieben wurden, also hat es nichts mit Stil zu tun. Auf der einen Seite, was können Sie von einer Person erwarten, die nicht zögern, Gott Objekte zu erstellen, auf der anderen Seite vielleicht war er in einer Hektik und schließlich hatte keine Zeit, diese technischen Schulden zurückzuzahlen, werden wir nie kennt.

Ist es möglich, dass die letztgenannte Methode in irgendeiner Weise sicherer ist? Deine Meinungen sind willkommen, Leute, bevor ich meinen inneren Refactoring-Ninja starte.

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Objects_and_properties – Rayon

+0

Ich weiß alles, es ist Grundlagen von js, gibt es noch detailliertere Beschreibung davon: https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors. Die Frage ist: Ist alles, ist noch etwas anderes drin? Etwas tiefer? – shal

+1

Ein häufiger Grund: Es gibt einen Minifier (zum Beispiel Google Closure), der die zweite Form benötigt, um zu wissen, dass er die Namen "Miau" und "Wau" beibehalten muss. –

Antwort

2

Ein häufiger Grund: Es gibt einen Minifier, der die zweite Form benötigt, um zu wissen, dass er die Namen "meow" und "woof" beibehalten muss. Das ist besonders praktisch mit Google Closure.

Ansonsten gibt es keinen Grund, wie Sie bereits in den Dokumentationen gesehen haben (die Verwendung von Sonderzeichen und dynamischen Strings trifft in Ihrem Fall nicht zu).