Every language has its negatives.¬† English its awkward spelling;¬† French its impossible-to-acquire ‚Äúchanson‚ÄĚ; and Japanese its multiple alphabets.
And C#?¬†¬† What about it? It has no preprocessor macros!¬† And unlike the natural languages, C# lacks the excuse of having acquired this flaw by accident.¬† Designed with guidance from ancestor languages ‚Äď C, Java, FORTRAN, C# corrected their flaws in many areas.
But as is often the case with remakes ‚Äď think Psycho and Breathless ‚Äď the baby gets thrown out with the bath water.¬† In this case the designers of C# wanted to avoid the bad coding practices of preprocessor macros ‚Ä¶ by eliminating them altogether!
Yup, what Hutus did to the Tutsis, the CUP (Turks) to Armenians, the Nazis to Jews, Mao to free-thinkers and so on, that was the solution the C# designers came up with.¬† The final solution.¬† That is so 20th century.
So now we have our Microsoft apps packed with long-winded, hard-to-read monstrosities like this:
public short ContactMethodTypeId
if (_contactMethodTypeId != value)
//_oldcontactmethodtypeid = _contactMethodTypeId;
_contactMethodTypeId = value;
In previous generations we could have just replaced all those lines with something as short as ‚Äúqprop ContactMethodtypeId‚ÄĚ.
Faster development.¬† Easier maintenance.