2009-03-03 7 views
6

El otro día estaba revisando nuestro código y me encontré con un nombre de clase IdempotentObject No sabía lo que esto significaba en ese momento, así que pregunté si era un nombre mal elegido. Descubrí quién lo escribió y le pregunté al desarrollador por qué lo había llamado tan confuso. Se sorprendió de que no supiera lo que significaba y me dijo que era un nombre bien elegido porque el objeto es Idempotente.¿Dónde dibujamos la línea con vocabulario al nombrar?

Por un lado veo un argumento para mantenerlo simple y hacer que todos entiendan lo que es todo en la primera lectura. Por otro lado, tenemos la idea de que debemos nombrar las cosas con precisión y si no conoce el significado, búsquelo.

¿Cuál es mejor, más preciso o más fácil de entender de un vistazo?

+0

Si no te gustaba IdempotentObject, qué nombre se propone sustituirlo por? –

+0

No propuse un cambio, lo busqué y le pregunté por qué lo usaba. El otro desarrollador sugirió que * AlwaysTrueObject * sería un reemplazo, lo hemos dejado como * IdempotentObject * en la actualidad. –

+1

LogicalConstructConsistingOfBothCodeAndDataForWhichAllOperationsAreDefinedAndImplementedSuchThatNoMatterHowManyTimesTheyAreInvokedTheEndResultWillBeTheSameAsThatResultingFromASingleInvokation – Shog9

Respuesta

14

Sin ánimo de ofender, pero cualquier persona con un título CS o que espera ejercer en el campo debe reconocer el término "Idempotente" como un significado específico en informática incluso si no conoce el término y tiene que buscarlo arriba.

Por otro lado, no creo que los objetos tengan la palabra "Objeto" en el nombre, eso es redundante.

Ahora, si se llamara "IdempotentDataAccessor" o algo que sea preciso y descriptivo, eso sería bueno.

+0

Creo que la parte del "Objeto" fue solo un poco de anonimización. Probablemente fue algo así como IdempotentMap o IdempotentBook. Mi mayor problema es que la idempotencia se aplica a las funciones, no a los objetos. –

+0

No, era el objeto –

+0

Nombrar una clase "Objeto" es feo. ¡Deberías golpearlo por * esa * parte del nombre! – Shog9

8

Preciso es más importante. El desarrollador inicial o podría haber dejado un comentario después para explicar la denominación si no es un término que se puede encontrar fácilmente en un diccionario o que el público conoce.

+0

muy en desacuerdo - el escritor no debe ser forzado a adivinar si los futuros lectores entenderán términos estándar en CS, la respuesta automática de OP es incorrecta – annakata

+0

En este caso, un comentario sería tonto pero puedo ver otros casos donde el desarrollador inicial usa un vocabulario que necesita explicación. –

+0

Esto puede sonar tonto pero como inglés es mi segundo idioma, tuve que buscar 'idempotent'. Acepto que en este caso particular, dependiendo de la audiencia (es decir, de habla inglesa), el comentario puede no estar justificado. En principio, la clase debe ser comentada para explicar su propósito y responsabilidades. –

4

Recomendaría restringir nombres a uno que esté dentro del dominio del problema. Idempotent sería aceptable para una aplicación matemática de alto nivel. Preferiría usar otro nombre si esta fuera una aplicación de contabilidad.

Los comentarios pueden ser útiles en algunos casos, pero prefiero cambiar los nombres.

+0

idempotent es un término ampliamente utilizado en CS. incluso los programadores de aplicaciones contables deberían conocer su literatura. – Javier

1

Bueno, eso es muy subjetivo. Tal vez para el tipo que escribió la clase el nombre fue muy fácil de entender. Es muy difícil determinar qué vocabulario es fácil o difícil de entender porque las personas que leen el código pueden tener diferentes antecedentes.

5

"No sabía lo que esto significaba en el momento , así que decidí que era un nombre mal elegido."

Tiene su problema. Si no sabes lo que significa algo, la respuesta correcta es averiguarlo.

+0

Lo hice, quise decir que no sabía cuando lo leí. –

+0

Lo sé, y el seguimiento "... así que decidí" es donde esto es un problema. No puede tomar decisiones cuando no está en posesión de los hechos. – annakata

+0

Eso no salió bien, tu derecho a tomar decisiones desinformadas. –

2

No se me ocurre ninguna otra forma concisa de describir la idempotencia. No creo que esto sea un problema, ya que idempotence es un término muy utilizado en interfaces RESTful, y las descripciones claras son fáciles de encontrar en una búsqueda en Google.

3

Como desarrollador, está acostumbrado a ver códigos, a notar una característica de un idioma o biblioteca con la que no está familiarizado, buscarlos e incorporarlos en su propio uso de ese idioma.

Esto no es diferente.

No obligue a otros a evitar las características conocidas de C#, ¿por qué lo haría para el inglés o cualquier otro idioma?

Búscalo, apúntalo. Si lo usa depende de usted, pero no restrinja el uso de los demás. Usted tiene una referencia.

-Adam

Cuestiones relacionadas