Wyobraźmy sobie jakiś element biznesowy
class MagazynFilter {
const string DefaultowyMagazyn = "Firma";
string magazyn;
MagazynFilter() {
magazyn = "";
}
}
natomiast wielokrotnie podczas użycia sprawdzamy, np
MagazynFilter filter;
if( filter.magazyn !=DefaultowyMagazyn )
print("Magazyn: ""+ filter.magazyn);
Chodzi mi o to, że pole ma dwie ciekawe semantycznie wartości: uzyskaną w konstruktorze (pustą), i pewną wybraną (oczywiscie też inne, ale o nic nic ciekawego nie mówimy)
i żeby napisać
if ( ! Utils.IsDefalt(filer.magazyn) )
print(...)
Na gruncie Javy /C# można to zadekalrować atrybutem / adnotacją
class MagazynFilter {
@DefalutValue(DefaultowyMagazyn)
string magazyn;
...
}
}
Czy moje myślenie jest totalnie odjechane, czy czasem ktoś myślał w ten sposób?
Świadomie mieszam Javę w C#, chodzi mi o ideę projektową a nie implementację (z tą by poradził choćby refleksją)