Dołączacie sufiks Async do metod asynchronicznych?
Tak
W pracy tak, bo się czepiają na review.
Tak normalnie, to nie.
Nie używam i jestem przeciwnikiem stosowania Async
w nazwach metod i całkiem niedawno z mojej inicjatywy w pracy wprowadziliśmy nową konwencję aby tego nie stosować, i powoli usuwać z istniejących metod w ramach scout rule które stosujemy. Główne powody są trzy:
- Suffix
Async
został wprowadzony przez Microsoftu w celu zachowania wstecznej kompatybilności. Po prostu dla metod synchronicznych wprowadzono odpowiedniki asynchroniczne, a ponieważ na podstawie zwracanego typu metody w C# nie można przeciążyć metody, to MS musiał coś wymyślić. - Wystarczy spojrzeć na to że metoda zwraca
Task
by wiedzieć że można ją wywołać asynchronicznie. - Nowe właściwości języka nie powinny rzutować na to jak nazywamy elementy naszego kodu. W przeciwnym razie za każdym razem kiedy wychodzi jakaś nowa, ważna cecha języka można by wprowadzać nową konwencję nazewnictwa. Np. można by sobie wymyślić że po wprowadzeniu w C#
Value Tuple
każda metoda zwracająca tenże typ powinna mieć suffixTuple
... Nie mówiąc już o tym że zawsze powtarzam że nazewnictwo w kodzie powinno odzwierciedlać domenę i procesy biznesowe, a więc pomijać technikalia chyba że to jest absolutnie niezbędne (bo np. metoda robi coś bardzo technicznego, co zazwyczaj znajdzie się w najniższych warstwach kodu infrastruktury).
Nie
Nie
Nie
somekind napisał(a):
W pracy tak, bo się czepiają na review.
Tak normalnie, to nie.
Tak samo
Kokoniłaj napisał(a):
Dołączacie sufiks Async do metod asynchronicznych?
Ja czytałem, że nie ma zasady i to zależy od przyjętej konwencji.
Kokoniłaj napisał(a):
Dołączacie sufiks Async do metod asynchronicznych?
Tak. W wielu różnych bibliotekach występuje taka konwencja. Przyjemniej mi się czyta tak napisany kod.
XardasLord napisał(a):
somekind napisał(a):
W pracy tak, bo się czepiają na review.
Tak normalnie, to nie.Tak samo
W kolejnym projekcie który rozpoczęliśmy przegadaliśmy sprawę i odeszliśmy od tej konwencji.
Ludzie, słuchajcie @Aventus bo dobrze prawi. Async w nazwach metod został dodany tylko dlatego, że async/await psuje sensowne reguły programowania i trzeba mieć dwie metody robiące to samo, jedną dla synchronicznej operacji a drugą dla asynchronicznej. A ponieważ C# nie pozwala na przeciążanie metod na podstawie zwracanego typu (ciekawostka: pozwala na to w jednym przypadku, czytelnik zechce podać przykład (ciekawostka 2: czytelnik zechce pokazać, jak wywołać taką metodę przez refleksję)), to trzeba robić taką patologię nazewniczą.