[WCF] Enums vs strings - które lepsze

0

Czyli Enum lub string w DataContract/parametrze operacji. Krótko które i dlaczego.

Wg mnie Enum - silnie typowane, więc z góry ograniczone wartości, serializację human-readable da się zrobić za pomocą EnumMember
String - jak dla mnie powoduje lekki chaos ze względu na dowolność, przez co trzeba ręcznie sprawdzać wartość no i patrząc na interfejs g*wno wiemy co to tak naprawdę jest, musimy kopać w kodzie, nawet jak jest komentarz to i tak.

Pytam, bo robimy projekt od zera i chcemy postawić na jakąś konwencję i Team Leader chce postawić na stringi (bo łatwiej debuggowalne? wg mnie niczym się nie różni od Enum'ów o ile dobrze się wie jak się z nimi obchodzić), ja na Enum'y.

0

Tylko stringi! Java FTW!

Tak na poważnie, to masz rację, a TL jest sadystą, skoro chce Wam takie coś zgotować. Spytaj go, czy liczby i daty też będzie stringami wysyłał.

0

Jeśli to temat który dotyczy tylko C# to pomiń ten post.

W Javie / C++ / Delphi (mam wymieniać dalej?) jest tak:

  • String - elastycznie błąd przemyka między modułami, może nawet być jakiś czas niezauważony jak masz warunki w rodzaju "if (status != "rejected")"
  • Enum - wyłapujesz błąd w trakcie kompilacji, albo zaraz na deserializacji
0

String zamiast enumów? Jaka jest w ogóle korzyść z takiego rozwiązania, oprócz oczywiście ukrytych błędów, które mogą być ciężkie do wykrycia?

0

Nie bardzo rozumiem, co łatwiejszego w debugowaniu stringów, zamiast enum, chyba tylko łatwiej o powód do debugowania.
Trzeba tylko uważać przy serializacji na to, żeby nie zapisało np.: jako Inta. Cała reszta to same plusy.

2

Ktoś to zresztą już jakiś czas temu opisał jako jednostkę chorobową:
patrz "Stringly Typed" w https://blog.codinghorror.com/new-programming-jargon/

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