Tagged Python
Properties in the D programming language
Posted on by Idorobots
Just to evangelize D a little and increase my code/crap ratio, let's pretend we develop a library in C++ that contains this class:
class SomeMetaVariables {
public:
std::string foo;
bool bar;
};
// ... Somewhere in the client code:
SomeMetaVariables baz;
baz.foo = "foo";
baz.bar = true;
Our library is quite successful and many people are using SomeMetaVariables
despite its obvious flaws. Now, say we get many requests for additional functionality, for example: "Make bar
true
only when foo
is set to "foo" and other way arround." "Well, ok." - we say and commit this new version of SomeMetaVariables
:
class SomeMetaVariables {
std::string foo;
bool bar;
public:
std::string getFoo() {
return foo;
}
std::string setFoo(std::string newFoo) {
foo = newFoo;
bar = (foo == "foo");
return foo;
}
bool getBar() {
return bar;
}
bool setBar(bool newBar) {
bar = newBar;
foo = bar ? "foo" : "";
return bar;
}
};
We implemented the requested feature, but SomeMetaVariables
' interface has changed... "But why are you mad clients? You asked for it!" - cries the C++ developer.