Jak byście nazwali metodę, która pobiera identyfikatory użytkowników mogących zrobić X? Coś w stylu GetIdsOfUsersThatCanDoX byłoby ok? Mam problem z tym, kiedy użyć liczby pojedynczej a kiedy mnogiej. I w ogóle może można jakoś prościej nazwać tę metodę?
Przetłumaczenie nazwy metody na angielski
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gdańsk
- Postów: 647
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4883
Niech serwis będzie miało w nazwie X a metoda niech nazywa się GetUsers
- Rejestracja: dni
- Ostatnio: dni
- Postów: 10230
To pewnie zależy w jakiej klasie jest taka metoda.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gdańsk
- Postów: 647
Może w sumie za bardzo patrzę na nazwy metod pod kątem typów zwrotnych, ale metoda IEnumerable<int> GetUsers() zwracająca idki jakoś mi dziwnie wygląda :/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
A czy jest możliwe zastosowanie jakiejś konwencji? Czy w danej klasie, w danym module, w danym projekcie, w danym języku programowania/technologii są jakieś konwencje, co do których podejrzewałbyś, że mają zastosowanie do nazwy tej metody?
- Rejestracja: dni
- Ostatnio: dni
Wydaje mi się, że taka metoda narusza zasadę mówiącą, że funkcja powinna robić jedną konkretną rzecz. Tutaj mamy do czynienia z trzema czynnościami — wybraniem użytkowników według wzorca, implementacji konkretnego wzorca i pobrania ID użytkownika. Jak dla mnie, należy zacząć od metody selectUsers, która pobiera funkcję testującą w parametrze; funkcja ta zwraca listę obiektów użytkownika, z których można pobrać ID. W pseudokodzie to będzie tak:
base.selectUsers(user -> user.canDo(x)).map(user -> user.getId());
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gdańsk
- Postów: 647
Hmm, ale ze względów wydajnościowych chyba trzeba czasami tę zasadę SRP złamać. selectUsers(user -> user.canDo(x)) wygląda, jakbyśmy pobierali z bazy danych wszystkie encje i potem na każdej encji wywoływali metodę filtrującą. No chyba, że jakieś języki mają biblioteki umożliwiające translację czegoś takiego na SQL.
I wiem, że pobieranie samych idków zamiast pełnych encji często nie ma sensu, ale pytam o kwestie językowe :P
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: U krasnoludów - pod górą
- Postów: 4714
IEnumerable<UserId> findCertificateSigners(...)
findDocumentAuthors(...)
itp.
To, że to user, czy userid to możesz mieć w typie. Wiec nie trzeba powtarzać i podkreślać.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 3573
No własnie, wystarczy że zwrócisz np. Traversable<UserId> i będzie wiadomo że to id usera a nie User ;)
- Rejestracja: dni
- Ostatnio: dni
@nobody01: To już zależy od języka i stopnia optymalizacji, który chcesz zastosować. W Common Lispie masz makra, dzięki czemu możesz przetłumaczyć daną składnię na SQL w czasie kompilacji. W Javie, trzeba by chyba konstruować takie zapytania w czasie działania programu. Tylko kto używa Javy jeśli tak zależy mu na wydajności? Kto w ogóle potrzebuje takich optymalizacji w dzisiejszych czasach?
- Rejestracja: dni
- Ostatnio: dni
@nobody01:
nobody01 napisał(a):
Jak byście nazwali metodę, która pobiera identyfikatory użytkowników mogących zrobić X? Coś w stylu GetIdsOfUsersThatCanDoX byłoby ok?
GetUsersWithXPriviledge albo GetUsersWithXAccess