Start with a base of
WhatIfInheritance concepts. Now when you mix the pasta in a C++ kitchen, apply the
CuriouslyRecurringTemplate pattern:
template< class Inheritme, class Payload >
struct
Spaghetti: public Inheritme
{
Payload m_aPayload;
...
};
When asked
why a Spaghetti generic requires two specific inputs, not one, the author will typically refer you to the excuses listed in the page "
WhatIfInheritance".
WaterFall &
JobSecurity lifecycles inspire this anti-pattern by convincing the "architect" programmer who fills the common code base up with them that only they are smart enough to know
how these classes expect to get re-used. And only they understand that systems like these cannot easily be retrofitted into existing code to upgrade it (
RefactorMercilessly), so the expense can only be paid for up front.
Other languages probably support similar needless complexities in these areas...
CategoryAntiPattern