It's not even constrained to OOP, take C for instance: why it is that all functions are not exported in a shared library? Are they nefariously hiding code they don't want you to see? No, it's just that they are minimizing the interface between components, which is a concept as old as modular programming itself.
It makes change easier to contain and allows one to reason over large systems.
This is a good thing. Hiding implementation details is a good thing. Using closures to implement private functions in javascript is not bad. It's advocated in "Javascript, the good parts", as a pattern.
Should one try and write javascript as if it were java? No, and overuse of this pattern leads to a bunch of boiler plate. One usually tries to remain state-less and write deterministic, side-effect free functions that do not depend on closed variables.
Is it handy tool in some cases to implement DRY? Yes. Should it be considered harmful? No.
Comments
Every so often I hear about a frustrated programmer complain about not being able to access private or otherwise inaccessible methods.
Could that code be useful? Sure, but that's not the point.
Information hiding is one of the core concepts in OOP:
http://en.wikipedia.org/wiki/Information_hiding
It's not even constrained to OOP, take C for instance: why it is that all functions are not exported in a shared library? Are they nefariously hiding code they don't want you to see? No, it's just that they are minimizing the interface between components, which is a concept as old as modular programming itself.
It makes change easier to contain and allows one to reason over large systems.
This is a good thing. Hiding implementation details is a good thing. Using closures to implement private functions in javascript is not bad. It's advocated in "Javascript, the good parts", as a pattern.
Should one try and write javascript as if it were java? No, and overuse of this pattern leads to a bunch of boiler plate. One usually tries to remain state-less and write deterministic, side-effect free functions that do not depend on closed variables.
Is it handy tool in some cases to implement DRY? Yes. Should it be considered harmful? No.