2009-12-02 8 views
8

Veo que algunos programadores agregan código que, después de todo, no hace nada útil. Por ejemplo (C#):¿Es aceptable tener un código inútil?

[Serializable] 
class Foo { 
    // ... 
    string SerializeMe() { 
     return new XmlSerializer(typeof(this)).Serialize(this).ToString(); // serialize to xml (syntax wrong, not important here) 
    } 
} 

La clase está marcado como serializable, pero la única manera es serializado es por medio de XmlSerialization, que no requiere que el atributo de clase en absoluto.

Personalmente odio este tipo de código inútil, pero lo veo con bastante frecuencia y tengo curiosidad sobre lo que otros piensan al respecto. ¿No es esto un defecto tan serio después de todo? ¿Es una práctica común en la industria? ¿O es simplemente malo y debería eliminarse sin importar nada?

Respuesta

4

¿Se requiere un mínimo esfuerzo para leer ese código adicional (inútil, como usted agregó)?

En caso afirmativo (y creo que es así), entonces no debería estar en el código. Código como este está contaminado con fragmentos extra que no son útiles, están ahí "por las dudas".
La "refactorización posterior" de estas cosas puede ser dolorosa, después de 6 o 12 meses, ¿quién va a recordar si realmente se usó?

0

Es pensar que el significado de inútil es que no puede y no se utilizará. También creo que una puerta abierta es muy abierta.

+0

sidenote: Código comentando, o atribuir sin función, no siempre es inútil;) – Ropstah

+1

Puedo hacer y hacer cosas inútiles todo el tiempo, como discutir con la esposa ... –

+0

Esto no es inútil ya que hace que usted o ella produzcan hormonas a las que usted, ella o los dos son adictos. – Ropstah

1

En un proyecto comercial, diría que no, especialmente si alguien puede desmontarlo para leer y luego tiene un momento WTF.

En un proyecto doméstico, seguro que por qué no, a menudo guardo algunos fragmentos para su uso posterior.

+1

-1 Te aconsejo que guardes los fragmentos en un complemento de fragmento o control de fuente. –

+1

Aparte de que es un proyecto personal y, como tal, puede hacer lo que quiera con él. –

+0

De cualquier forma, debe usar el control de fuente y no debería estar registrado;) –

1

Bueno, no puedo comentar esta pieza de código en particular sin conocer su historial, pero personalmente sigo estrictamente una regla de no tener nada en el código a menos que realmente lo necesite. O al menos saber que puede ser útil algún día para algo que ya tengo en mente.

10

Mi regla de oro,

Si no es usado de deshacerse de él.

Todos los comentarios excedentes, atributos son solo ruido y ayudan a que su código sea ilegible. Si se dejan allí, fomentan más código excedente en su código base. Entonces quítalo.

18

Good Source Control significa que se debe eliminar el código inútil o el código que ya no se requiere. Siempre se puede recuperar desde el control de origen en una fecha posterior.

+0

Estoy de acuerdo, ese también es mi punto de vista. ¡También ayuda cuando compara versiones anteriores del mismo archivo porque ve lo que cambió! Puede decir "oh, dejamos de admitir la serialización desde la versión xxx", por ejemplo. Entonces agrega documentación implícita. –

5

Intento seguir el principio YAGNI, así que esto también me molesta.

1

Esto es un código incorrecto.

El código incorrecto es una práctica común.

Dicho esto, a veces no vale la pena el esfuerzo de cambiar cosas que no están "rotas".

+0

Estoy completamente en desacuerdo. Son actitudes como esa que mantienen a los insectos encerrados en el código fuente durante décadas por temor a tocar el "código sagrado". ¿Qué pasa si tomé su novela favorita y le puse graffiti por todas partes? ¿Te gustaría leer esa novela? –

1

Parecería que la perfección se logra no cuando no se puede agregar más, pero cuando no se puede eliminar más.— Antoine de Saint-Exupéry

+0

Modificación de una cita de Antoine de Saint-Exupéry, un diseñador de aviones que escribió un maravilloso libro para niños. Algo así como "Perfecciones no viene cuando ...". –

+1

Felicidades, el tiempo de codificación se acaba de triplicar y quienquiera que se encargue de usted se enfurecerá. – Graviton

+0

Gracias a Civilization IV (y Leonard Nimoy) sé que la cita original es (traducción del francés): Parece que la perfección se logra no cuando no se puede agregar más, pero cuando no se puede eliminar más. - Antoine de Saint-Exupery (1900 - 1944) – Dolphin

4

Realmente no me gusta nada.

Porque paso un tiempo valioso tratando de descubrir por qué está allí. Asumiendo que si está ahí, está ahí por una razón, y si no veo el motivo, entonces existe la posibilidad de que me esté perdiendo algo importante que deba entender antes de empezar a jugar con el código. Me irrita cuando me doy cuenta de que acabo de perder una hora tratando de entender por qué, o qué, está haciendo un fragmento de código, que fue dejado allí por un desarrollador demasiado perezoso para volver y eliminarlo.

0

Si hay un plan activo para usar esta función adicional, a continuación, guardarlo en.

Si sabe que nunca será utilizado, o si ese plan dejó de ser relevante hace 6 meses, y luego tire de ella. Lo comentaría primero, luego lo eliminaría completamente más tarde.

Estoy a punto de restructurar una gran cantidad de variables que eran públicas pero que realmente solo necesitan protección o privacidad, simplemente porque no tienen sentido desde el punto de vista de API exponerse, eso y nada se usa ellos.

2

El código de una sola línea inútil puede y debe eliminarse.

El código inútil que llevó tiempo para escribir puede y debe eliminarse ... pero las personas a cargo tienden a sentirse mareadas por esto. Tal vez la mejor solución es tener un proyecto ProbablyUseless But WhoKnows donde todos puedan verificar el código inútil que podría usarse nuevamente en dos o tres años. Si nada más, de esta manera las personas no tienen que sentirse nerviosas por eliminarlo.

(Sí, en teoría, se puede obtener fuera de control de código fuente, pero el viejo código de borrado de control de código fuente no es exactamente altamente visible.)

Cuestiones relacionadas