¿Cuál es el mejor nombre para un método que devuelve un valor booleano?
IsSupportContentType
o
CanSupportContentType
naming
naming-standards
Mediador
fuente
fuente
IsSupportedContentType
ser gramaticalmente correcto. (a menos que "tipo de contenido de soporte" actúe como un sustantivo, lo que parece poco probable)supportsContentType
? El siguiente es totalmente legible:if (abc.supportsContentType("text/html"))
. "puede soportar" implica que existen otras condiciones para soportar el tipo de contenido.Respuestas:
Es vs puede
De acuerdo con las recomendaciones de la convención de nomenclatura de Microsoft , tanto "Es" como "Puede" están bien (y también lo es "Tiene") como prefijo para un booleano.
En inglés simple, "Is" se usaría para identificar algo sobre el tipo en sí, no lo que puede hacer. Por ejemplo,
IsFixed
,IsDerivedFrom
,IsNullable
se pueden encontrar en tipos y métodos CLR. En todos estos casos, "Is" es seguido por un adjetivo .Mientras tanto, "puede" indica más claramente una capacidad, por ejemplo
CanEdit
,CanRead
,CanSeek
. En cada uno de estos casos, can es seguido por un verbo .Como "Soporte" es un verbo, creo que en su caso
CanSupportContentType
es mejor.Alternativa más corta
Por otro lado, las convenciones dicen que el prefijo es opcional. Además, es un poco cursi incluir el tipo de argumento en el nombre del método, ya que un desarrollador puede ver el tipo de argumento en intellisense. Así que podrías nombrar tu método
Supports
y definirlo así:... que es más corto y aún comunica claramente el propósito. Lo llamarías así:
O como compromiso, tal vez esto sea lo mejor:
fuente
if ( someClass.Supports(contentType) )
hasSupportedContentType
std::vector::empty()
. Solo por su nombre, ¿vacía el vector? ¿O devuelve si el vector está vacío? En realidad, la última, ya que la primera tarea la realizastd::vector::clear()
. Pero, en general, debe leer los documentos para estar seguro. Como un ejemplo opuesto, Qt'sQVector
es más fácil de entender a este respecto, ya que su método para verificar el vacío esQVector::isEmpty()
.Vale la pena mencionar que el prefijo " debería " también se puede utilizar. De acuerdo con las pautas de Apple , no solo " can " y " should ", los verbos modales en general se pueden usar para nombrar funciones que devuelven boolean. No puedo ver mucho uso de " will " pero " should " es bueno para los ganchos de consulta, como se ve en reactjs:
fuente
WillCloseConnection
?is...
pero usamosshould...
en algunos nombres de argumentos de función, lugares donde el booleano indica a qué se supone que la función cambia las cosas . Si una función puede opcionalmente cerrar un documento, llamando al parámetro de control queisClosed
sería preciso (que no está cerrado todavía ) y así podríamos utilizarshouldClose
para indicar que esto es lo que se supone que la función de hacer. (Ejemplo arbitrario; probablemente no tendríamos una función como esta, particularmente porque cerrar un documento debería ser lo suficientemente pesado como para tener una llamada dedicada.)will...
está reservado para funciones asincrónicas que devuelven una promesa; Si la función descrita en mi comentario anterior es síncrona, el usowill...
sería inconsistente con nuestro nombre.