Jaka jest lepsza nazwa metody zwracającej wartość logiczną?
IsSupportContentType
lub
CanSupportContentType
naming
naming-standards
Mediator
źródło
źródło
IsSupportedContentType
być poprawna gramatycznie. (chyba że „typ zawartości wsparcia” działa jak rzeczownik, co wydaje się mało prawdopodobne)supportsContentType
? Poniżej zamieszczona jest całkowicie czytelny:if (abc.supportsContentType("text/html"))
. „może obsługiwać” oznacza, że istnieją dodatkowe warunki do obsługi typu zawartości.Odpowiedzi:
Czy vs.
Zgodnie z zaleceniami konwencji nazewnictwa Microsoft zarówno „Is”, jak i „Can” są OK (podobnie jak „Has”) jako przedrostek logiczny.
W prostym języku angielskim, „Is” byłoby użyte do zidentyfikowania czegoś na temat samego typu, a nie tego, co może zrobić. Na przykład
IsFixed
,IsDerivedFrom
,IsNullable
można je znaleźć w CLR typów i metod. We wszystkich tych przypadkach po „Is” następuje przymiotnik .Tymczasem, „może” bardziej wyraźnie wskazuje na możliwość, na przykład
CanEdit
,CanRead
,CanSeek
. W każdym z tych przypadków po może występować czasownik .Ponieważ „Wsparcie” jest czasownikiem, myślę, że w twoim przypadku
CanSupportContentType
jest to lepsze.Krótsza alternatywa
Z drugiej strony konwencje mówią, że przedrostek jest opcjonalny. Co więcej, umieszczenie typu argumentu w nazwie metody jest trochę tandetne, ponieważ programista może zobaczyć typ argumentu w inteligencji. Więc mógł tylko wymienić metodę
Supports
i zdefiniować ją tak:... który jest krótszy i nadal jasno określa cel. Nazwałbyś to tak:
A może jako kompromis najlepiej:
źródło
if ( someClass.Supports(contentType) )
hasSupportedContentType
std::vector::empty()
. Czy z samej nazwy opróżnia wektor? A może zwraca, czy wektor jest pusty? Właściwie to drugie, ponieważ pierwsze zadanie wykonujestd::vector::clear()
. Ale ogólnie musisz przeczytać dokumenty, aby się upewnić. Jako przeciwny przykład, QtQVector
jest łatwiejsze do zrozumienia w tym względzie, ponieważ jest to metoda sprawdzania pustkiQVector::isEmpty()
.Warto wspomnieć, że można również użyć prefiksu „ powinien ”. Zgodnie z wytycznymi Apple , nie tylko „ można ” i „ należy ”, czasowniki modalne w ogóle mogą być używane do nazwania funkcji zwracających wartość logiczną. Nie widzę wielu zastosowań „ woli ”, ale „ powinien ” jest miły dla haczyków pytających o porady, jak widać w reakjs:
źródło
WillCloseConnection
?is...
ale używamyshould...
w niektórych nazwach argumentów funkcji miejsc, w których wartość logiczna wskazuje, na co funkcja ma zmienić rzeczy . Jeśli funkcja może opcjonalnie zamknąć dokument, wywołanie parametru control, któryisClosed
byłby dokładny (nie jest jeszcze zamknięty ), a więc użylibyśmyshouldClose
do wskazania, że właśnie to funkcja ma zrobić. (Przykład arbitralny; prawdopodobnie nie mielibyśmy takiej funkcji, zwłaszcza że zamknięcie dokumentu powinno być wystarczająco ciężkie, aby mieć dedykowane połączenie).will...
jest zarezerwowany dla funkcji asynchronicznych, które zwracają obietnicę; jeśli funkcja opisana w moim poprzednim komentarzu jest synchroniczna, użyciewill...
byłoby niezgodne z naszym nazewnictwem.