SOLID principals in D
FromAnotherPlanet
guyfromanotherplanet. at guyfromanotherplanet.com
Sat Jun 16 19:24:58 UTC 2018
On Saturday, 16 June 2018 at 19:20:30 UTC, FromAnotherPlanet
wrote:
> Hi, I come from a C# background and have been looking at D. How
> well does D implement solid principals? I've grown to really
> enjoy the SOLID style.
>
> For those unfamiliar, SOLID is an acronym for:
>
> - Single purpose: Meaning every unit of code (whether it's a
> function or class) should only
> have one reason to change.
>
> - Open/Close principal: Things should be open to extension but
> closed to modification. The example I like to use is some sort
> of IConverter object. Things can implement IConverter, but if
> you need a new way to 'convert' things, you don't extend an
> existing object, but instead create a new class that implements
> IConverter.
>
> - Liskov substitution principle: Essentially says if I have a
> method/function that takes a base class, then the behavior of
> that method shouldn't change when passing in derived objects. I
> think the term people like to use is whether or not you use a
> base/derived class it shouldn't effect the 'correctness' of the
> program.
>
Also if there is any good literature that explains the 'D' way of
going about these principals or even how it enhances them that
would be helpful.
> - Interface segregation principal: Essentially breaking the
> program up into smaller interfaces. Sometimes only consistent
> of one or two methods/properties (can feed into 'S' of SOLID
> quite nicely).
>
> - Dependency inversion principle: Things should depend on
> abstractions not concretions. Strongly enables dependency
> injection.
>
> D seems to have all of the features *required* to make this
> happen, but I guess the real question is the last two, and more
> specifically the last one.
More information about the Digitalmars-d
mailing list