jak zapewnić unikalność property na poziomie kompilacji?

0

cześć
tworzę sobie interfejs, jednym z jego pół jest kod
ten kod to string

obiekt ma kod - ma też inne pola, ale kod musi byc unikalny
podczas procesu wysyłane są te kody - oraz są zapisywane w logach

może być to GUID ale traci się wtedy opisowość
może być Dictionary, Set + testy - ale wiadomo, jak cos można zapomnieć gdzies dodać to sie zapomni i to juz jest niewygodne

może Atrybut?

0

A może funkcja skrótu i olać potencjalne kolizje?
Do logów zwykle to wystarcza.

2

Nie zapewnisz unikalności wartości właściwości instancji klasy na etapie kompilacji, bo instancje są tworzone runtime.
Co docelowo chcesz osiągnąć?

0
jakubek napisał(a):

może być to GUID ale traci się wtedy opisowość

To może potrzebujesz dwa kody? GUID i kod opisowy?

może być Dictionary, Set + testy - ale wiadomo, jak cos można zapomnieć gdzies dodać to sie zapomni i to juz jest niewygodne

Nic nie zrozumiałem, ale ja jestem Javovcem a hobbistycznie Haskellowcem więc nie czuję się z tym źle

1

Ale jak na poziomie kompilacji? Na poziomie kompilacji tego nie zrobisz. Nie słyszałem o czymś takim jak SQLowe unique contraint dla atrybutów/instancji obiektów w językach, z którymi miałem styczność.

Najbliższe temu, co chcesz osiągnąć, byłoby przypisywanie nowego GUID / UUID każdej instancji w runtime. Możesz to schować jako default w konstruktorze / builderze / fabryce i nie ruszać poza np. testami dla kolizji, o ile czujesz że zabolą. Istnieje ryzyko wystąpienia kolizji (w końcu pula możliwych UUID-ków jest skończona), w praktyce jeśli nie będziesz ich trzymać nie wiadomo ile, to ryzyko jest bardzo małe. Jak nie jesteś pewien, policz sobie ze wzorów lub sprawdź w kalkulatorach online.

1 użytkowników online, w tym zalogowanych: 0, gości: 1