Sobre limpieza de código

kraneok

Hola quería exponer una pregunta.
¿ Os pasa a vosotros que a veces no veis vuestro código limpio y claro ?, ¿ como lo solucionáis ?, ¿ creéis a veces que alguien lo haría mejor ?

Un saludo.

r2d2rigo

http://www.amazon.com/The-Readable-Code-Dustin-Boswell/dp/0596802293/ref=sr_1_8?ie=UTF8&qid=1353491922&sr=8-8&keywords=clean+code
http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073/ref=sr_1_2?ie=UTF8&qid=1353491922&sr=8-2&keywords=clean+code

Y si usas visual studio, extension FxCop.

3 respuestas
bLero

Mejor que los 2 que te ha puesto el de arriba tienes:

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Es del mismo autor (Robert Cecil) que el segundo que te ha puesto #2 pero más completo.

P.D. Creo que hay una edición en Español también, aunque mucho más cara.

C

#1, este es el 2º que te ha puesto #2 en español. Me lo pillé este verano y está interesante. Uno de los libros que más recomendaría a programadores de todos los niveles:

http://www.amazon.es/C%C3%B3digo-Limpio-desarrollo-software-Programacion/dp/8441532109

1 respuesta
bLero

#4

Ese es el que he puesto yo. El 2º que ha puesto #2 es del mismo autor pero una versión más light.

elkaoD

#1 cuidado, no es lo mismo limpieza de código que limpieza en la arquitectura.

Esto es código sucio:

int conPurEaNISource; // ¿qué significa esta variable?

Por otro lado, la limpieza en la arquitectura llega un nivel más allá, hasta la organización de este código.

La primera es fácil de solucionar: sé más explícito, no te cobran por línea ni por carácter. El código se escribe una vez y lee 100. Usa comentarios cuando lo necesites... y un largo etcétera.

La segunda se soluciona aprendiendo patrones.

Y ambas están interrelacionadas.

1 respuesta
kraneok

#6 Mas bien me refiero a que cuando el código ya se complica demasiado por el tema clases, etc, lo veo sucio.

3 respuestas
bLero

#7

Ese libro trata sobre eso. Cómo escribir código legible, bien sangrado, etc, y por otro lado también habla sobre el diseño a más alto nivel (patrones). Para mi es un must para cualquier programador.

kraneok

#7 Vale gracias, voy a ir buscando mas cosas y a ver por qué me decanto xd.

elkaoD

#7 entonces te refieres a arquitectura.

Aprende patrones, patrones... y un poco de patrones ;)

xMarston

Debería ir leyendo algo así porque tanto en PHP como en JavaScript soy un auténtico desastre, no creo que sea muy entendible para los demás lo que programo.

bornex

#7 Yo aprendí a fuerza de palos, jajaja, mi profesor te quitaba puntos por mal sangrado, o por poner espacios en blanco mal puestos.

La verdad que la limpieza es esencial, hay gente que parece que programa ofuscado sin darse cuenta xD

1 respuesta
elkaoD

#12 por mal sangrado lo veo lógico. Lo de los espacios en blanco ya no, porque va en gustos.

¿Cuál de estas dos es correcta?

if (a == b)

if ( a == b )

Ninguna (o ambas.)

Es como el tema de las llaves...

if (a == b) {
  ....
}

if (a == b)
{
  ....
}
2 respuestas
B

#13: A mí la segunda ( a == b ) me hace sangrar los ojos, pero es cosa mía xDD

3 1 respuesta
cabron

#14

En ese caso a mi también me parece feo al haber solo dos operandos, pero cuando tienes condiciones complejas con varios paréntesis anidados a veces ayuda separar con espacios en plan ( ( () ) ) para ver más claro donde empieza y acaba cada cosa, pero también es cierto que evaluar una condición compleja en un condicional no suele ser la mejor de las ideas, y en ese caso la primera opción debería ser mirar como simplificar la expresión. Si es realmente complicado y no hay posibilidad de simplificar lo mejor es hacer una función y dejarlo en plan: if(calcularCosa())

1
sasher

#13 En teoría lo de las llaves, la primera forma hace referencia a Java y la segunda a C++.

2 respuestas
elkaoD

#16 en realidad depende del libro que te leas xD No hay ningún argumento objetivo para asociar una a un lenguaje u otro.

1 respuesta
neil90

#1 #16 #17 http://en.wikipedia.org/wiki/Indent_style

1

Usuarios habituales

  • neil90
  • elkaoD
  • sasher
  • cabron
  • kraneok
  • bLero
  • r2d2rigo