Hi,
The issue of complex static initializers and dependency order keeps coming up.
In reviewing the past discussions, there were a couple of suggestions:
1) separate static initializers into a block of code that runs after the class
is defined
2) use getters
I'm going to try #2. I'm not convinced #1 will work well with minifiers or
help us get the dependency order right.
Thoughts? Is there a case where getters won't work?
For:
public class Foo {
public static const bar:String =
ResourceManager.getInstance().getString("baz");
}
We currently generate:
Foo.bar = ResourceManager.getInstance().getString("baz");
And lots of other code tries to understand that the
goog.require("ResourceManager") is more important than other goog.requires in
the remove-circulars dependency calculation.
But if we generate:
Foo.get__bar = function() { return
ResourceManager.getInstance().getString("baz");};
Object.defineProperty(Foo, "bar", {get: Foo.get__bar});
Then I think no statics will get evaluated at load time.
Of course, I could be wrong...
-Alex