Wiem, że są tu już pewne pytania, które są ściśle związane z tym tematem, ale żadne z nich nie przyjmuje Ubiquitous Language jako punktu wyjścia, więc myślę, że uzasadnia to pytanie.
Dla tych, którzy nie wiedzą: język wszechobecny to koncepcja zdefiniowania języka (zarówno w mowie, jak i piśmie), który jest w równym stopniu używany przez programistów i ekspertów domeny, aby uniknąć niespójności i niewłaściwej komunikacji z powodu problemów z tłumaczeniem i nieporozumień. Zobaczysz tę samą terminologię w kodzie, rozmowy między członkami zespołu, specyfikacje funkcjonalne i tak dalej.
Zastanawiałem się więc, jak radzić sobie z językiem wszechobecnym w domenach innych niż angielski.
Osobiście zdecydowanie wolę pisanie kodu programowania w języku angielskim całkowicie, w tym komentarze, ale oczywiście z wyłączeniem stałych i zasobów.
Jednak w domenie innej niż angielska jestem zmuszony podjąć decyzję, aby:
- Napisz kod odzwierciedlający wszechobecny język w języku naturalnym domeny.
- Przetłumacz język wszechobecny na angielski i przestań komunikować się w naturalnym języku domeny.
- Zdefiniuj tabelę, która określa, w jaki sposób język wszechobecny tłumaczy się na angielski.
Oto kilka moich przemyśleń opartych na tych opcjach:
1) Mam silną niechęć do kodu mieszanego, tzn. Kodowania przy użyciu nazw typów / członków / zmiennych itp., Które nie są językiem angielskim. Większość języków programowania w dużym stopniu „oddycha” angielskim, a większość literatury technicznej, nazwy wzorów itp. Są również w języku angielskim. Dlatego w większości przypadków po prostu nie ma możliwości pisania kodu całkowicie w języku innym niż angielski, więc i tak kończysz na mieszanych językach.
2) Zmusi to ekspertów z dziedziny do rozpoczęcia myślenia i mówienia w angielskim odpowiedniku UL, co prawdopodobnie nie przyjdzie im naturalnie, a zatem znacznie utrudni komunikację.
3) W tym przypadku programiści komunikują się ze specjalistami ds. Domeny w swoim ojczystym języku, podczas gdy programiści komunikują się ze sobą w języku angielskim, a co najważniejsze, piszą kod przy użyciu angielskiego tłumaczenia UL.
Jestem pewien, że nie chcę iść na pierwszą opcję i myślę, że opcja 3 jest znacznie lepsza niż opcja 2. Co myślisz? Czy brakuje mi innych opcji?
AKTUALIZACJA
Dzisiaj, około rok później, po codziennym rozwiązywaniu tego problemu, muszę powiedzieć, że opcja 3 zadziałała dla mnie całkiem dobrze.
Nie było to tak nudne, jak się początkowo obawiałem, a tłumaczenie w czasie rzeczywistym podczas rozmowy z klientem również nie stanowiło problemu.
Na podstawie mojego doświadczenia uznałem również, że są to następujące zalety.
- Tłumaczenie UL powoduje, że zwracasz większą uwagę na definiowanie UL, a nawet samej domeny, szczególnie gdy nie wiesz, jak przetłumaczyć termin i musisz zacząć przeglądać słowniki itp. To spowodowało, że ponownie przemyślałem decyzje dotyczące modelowania domen kilka razy.
- Pomaga pogłębić znajomość języka angielskiego.
- Oczywiście, twój kod jest o wiele przyjemniejszy dla oka, niż oszałamiająca obsceniczność.