Bill Moran <wmoran@potentialtech.com> writes:
> In OO programming, the generally accepted rule is that a program shouldn't
> access class values directly, but the class should have methods to set
> and retrieve the data. This allows internal representations to change
> without affecting the public API of the class. It also allows data
> validation to occur, if needed.
Note that this is largely a C++ rule. In C++ accessing class members is very
different and much less flexible than using class methods. Other OO languages
are not universally so hobbled.
> I'm just wondering how far this rule of thumb could/should be extended to
> databases? I mean, you could say: "Nobody does a direct INSERT, but always
> calls a stored procedure that stores the result." I don't know how much
> this might break the mindset of the client developer.
This is a popular old-school database approach. Personally I find it
incredibly annoying, but I can see its advantages as well. But to me stored
procedures just don't seem like nearly a powerful enough abstraction tool to
make them worth all the pain this approach entails.
--
greg