¿Cuál es el mejor nombre para un método que devuelve un valor booleano?
IsSupportContentType
o
CanSupportContentType
fuente
¿Cuál es el mejor nombre para un método que devuelve un valor booleano?
IsSupportContentType
o
CanSupportContentType
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í:
public bool Supports(System.Net.Mime.ContentType contentType)
... que es más corto y aún comunica claramente el propósito. Lo llamarías así:
ContentType contentType = new ContentType("text/plain");
var someClass = new MediatorsClass();
bool ok = someClass.Supports(contentType);
O como compromiso, tal vez esto sea lo mejor:
public bool CanSupport(System.Net.Mime.ContentType contentType)
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 realiza std::vector::clear()
. Pero, en general, debe leer los documentos para estar seguro. Como un ejemplo opuesto, Qt's QVector
es más fácil de entender a este respecto, ya que su método para verificar el vacío es QVector::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:
shouldComponentUpdate: (newProps: any) => boolean
WillCloseConnection
?
is...
pero usamos should...
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 que isClosed
sería preciso (que no está cerrado todavía ) y así podríamos utilizar shouldClose
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 uso will...
sería inconsistente con nuestro nombre.
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.