Buscalibre Continúa Operando. Ver Comunicado Coronavirus (COVID-19)

    portada Código Limpio
    Formato
    Libro físico
    Editorial
    Categoría
    Computadoras y tecnología
    Tema
    Programación
    Año
    2012
    Idioma
    Español
    N° páginas
    464
    Encuadernación
    Tapa blanda
    Isbn
    8441532109
    Isbn13
    9788441532106

    Código Limpio

    Robert C. Martin · Anaya Multimedia

    5 estrellas - de un total de 5 estrellas 5 opiniones
    Libro Nuevo

    $ 203.600

    $ 339.350

    Ahorras: $ 135.750

    40% descuento
    • Estado: Nuevo
    • Quedan 13 unidades
    Origen: España (Costos de importación incluídos en el precio)
    Se enviará desde nuestra bodega entre el jueves 08 de octubre y el martes 20 de octubre.
    Lo recibirás en cualquier lugar de Colombia entre 1 y 5 días hábiles luego del envío.

    Reseña del libro

    Cada año, se invierten innumerables horas y se pierden numerosos recursos debido a código mal escrito, ralentizando el desarrollo, disminuyendo la productividad, generando graves fallos e incluso pudiendo acabar con la organización o empresa. El reconocido experto de software Robert C. Martin, junto con sus colegas de Object Mentor, nos p sus óptimas técnicas y metodologías ágiles para limpiar el código sobre la marcha y crearlo de forma correcta, de este modo mejorará como programador. Esta obra se divide en tres partes. La primera describe los principios, patrones y prácticas para crear código limpio. La segunda incluye varios casos de estudio cuya complejidad va aumentando. Cada ejemplo es un ejercicio de limpieza y transformación de código con problemas. La tercera parte del libro contiene una lista de heurística y síntomas de código erróneo (smells) confeccionada al crear los casos prácticos. El resultado es una base de conocimientos que describe cómo pensamos cuando creamos, leemos y limpiamos código. Imprescindible para cualquier desarrollador, ingeniero de software, director de proyectos, jefe de equipo o analista de sistemas interesado en crear código de mejor calidad. ¡El libro que todo programador debe leer!PrólogoIntroducciónSobre la imagen de cubierta1. Código limpioHágase el códigoCódigo incorrectoEl coste total de un desastreEl gran cambio de diseñoActitudEl enigma¿El arte del código limpio?Concepto de código limpioEscuelas de pensamientoSomos autoresLa regla del Boy ScoutPrecuela y principiosConclusiónBibliografía2. Nombres con sentidoIntroducciónUsar nombres que revelen las intencionesEvitar la desinformaciónRealizar distinciones con sentidoUsar nombres que se puedan pronunciarUsar nombres que se puedan buscarEvitar codificacionesNotación húngaraPrefijos de miembrosInterfaces e implementacionesEvitar asignaciones mentalesNombres de clasesNombres de métodosNo se exceda con el atractivoUna palabra por conceptoNo haga juegos de palabrasUsar nombres de dominios de solucionesUsar nombres de dominios de problemasAñadir contexto con sentidoNo añadir contextos innecesariosConclusión3. FuncionesTamaño reducidoBloques y sangradoHacer una cosaSecciones en funcionesUn nivel de abstracción por funciónLeer código de arriba a abajo: la regla descendenteInstrucciones SwitchUsar nombres descriptivosArgumentos de funcionesFormas monádicas habitualesArgumentos de indicadorFunciones diádicasTriadasObjeto de argumentoListas de argumentosVerbos y palabras claveSin efectos secundariosArgumentos de salidaSeparación de consultas de comandoMejor excepciones que devolver códigos de errorExtraer bloques Try/CatchEl procesamiento de errores es una cosaEl imán de dependencias Error.javaNo repetirseProgramación estructuradaCómo crear este tipo de funcionesConclusiónSetupTeardownIncluderBibliografía4. ComentariosLos comentarios no compensan el código incorrectoExplicarse en el códigoComentarios de calidadComentarios legalesComentarios informativosExplicar la intenciónClarificaciónAdvertir de las consecuenciasComentarios TODOAmplificaciónJavadoc en API públicasComentarios incorrectosBalbucearComentarios redundantesComentarios confusosComentarios obligatoriosComentarios periódicosComentarios sobrantesComentarios sobrantes espeluznantesNo usar comentarios si se puede usar una función o una variableMarcadores de posiciónComentarios de llave de cierreAsignaciones y mencionesCódigo comentadoComentarios HTMLInformación no localDemasiada informaciónConexiones no evidentesEncabezados de funciónJavadocs en código no públicoEjemploBibliografía5. FormatoLa función del formatoFormato verticalLa metáfora del periódicoApertura vertical entre conceptosDensidad verticalDistancia verticalDeclaraciones de variablesVariables de instanciaFunciones dependientesAfinidad conceptualOrden verticalFormato horizontalApertura y densidad horizontalAlineación horizontalSangradoRomper el sangradoÁmbitos ficticiosReglas de equipoReglas de formato de Uncle Bob6. Objetos y estructuras de datosAbstracción de datosAntisimetría de datos y objetosLa ley de DemeterChoque de trenesHíbridosOcultar la estructuraObjetos de transferencia de datosRegistro activoConclusiónBibliografía7. Procesar erroresUsar excepciones en lugar de códigos devueltosCrear primero la instrucción try-catch-finallyUsar excepciones sin comprobarOfrecer contexto junto a las excepcionesDefinir clases de excepción de acuerdo a las necesidades del invocadorDefinir el flujo normalNo devolver NullNo pasar NullConclusiónBibliografía8. LímitesUtilizar código de tercerosExplorar y aprender límitesAprender log4jLas pruebas de aprendizaje son algo más que gratuitasUsar código que todavía no existeLímites limpiosBibliografía9. Pruebas de unidadLas tres leyes del DGPRealizar pruebas limpiasLas pruebas propician posibilidadesPruebas limpiasLenguaje de pruebas específico del dominioUn estándar dualUna afirmación por pruebaUn solo concepto por pruebaF.I.R.S.T.ConclusiónBibliografía10. ClasesOrganización de clasesEncapsulaciónLas clases deben ser de tamaño reducidoEl Principio de responsabilidad únicaCohesiónMantener resultados consistentes en muchas clases de tamaño reducidoOrganizar los cambiosAislarnos de los cambiosBibliografía11. SistemasCómo construir una ciudadSeparar la construcción de un sistema de su usoSeparar MainFactoríasInyectar dependenciasEvolucionarAspectos transversalesProxies de JavaEstructuras AOP Java purasAspectos de AspectJPruebas de unidad de la arquitectura del sistemaOptimizar la toma de decisionesUsar estándares cuando añadan un valor demostrableLos sistemas necesitan lenguajes específicos del dominioConclusiónBibliografía12. EmergenciaLimpieza a través de diseños emergentesPrimera regla del diseño sencillo: Ejecutar todas las pruebasReglas 2 a 4 del diseño sencillo: RefactorizarEliminar duplicadosExpresividadClases y métodos mínimosConclusiónBibliografía13. Concurrencia¿Por qué concurrencia?Mitos e imprecisionesDesafíosPrincipios de defensa de la concurrenciaPrincipio de responsabilidad única (SRP)Corolario: Limitar el ámbito de los datosCorolario: Usar copias de datosCorolario: Los procesos deben ser independientesConocer las bibliotecasColecciones compatibles con procesosConocer los modelos de ejecuciónProductor-ConsumidorLectores-EscritoresLa cena de los filosofosDependencias entre métodos sincronizadosReducir el tamaño de las secciones sincronizadasCrear código de cierre correcto es complicadoProbar código con procesosConsiderar los fallos como posibles problemas de los procesosConseguir que primero funcione el código sin procesosEl código con procesos se debe poder conectar a otros elementosEl código con procesos debe ser modificableEjecutar con más procesos que procesadoresEjecutar en diferentes plataformasDiseñar el código para probar y forzar fallosManualAutomáticaConclusiónBibliografía14. Refinamiento sucesivoImplementación de ArgsCómo se ha realizadoArgs: El primer borradorEntonces me detuveSobre el incrementalismoArgumentos de cadenaConclusión15. Aspectos internos de JUnitLa estructura JUnitConclusión16. Refactorización de SerialDatePrimero, conseguir que funcioneHacer que sea correctaConclusiónBibliografía17. Síntomas y heurísticaComentariosC1: Información inapropiadaC2: Comentario obsoletoC3: Comentario redundanteC4: Comentario mal escritoC5: Código comentadoEntornoE1: La generación requiere más de un pasoE2: Las pruebas requieren más de un pasoFuncionesF1: Demasiados argumentosF2: Argumentos de salidaF3: Argumentos de indicadorF4: Función muertaGeneralG1: Varios lenguajes en un archivo de códigoG2: Comportamiento evidente no implementadoG3: Comportamiento incorrecto en los límitesG4: Medidas de seguridad canceladasG5: DuplicaciónG6: Código en un nivel de abstracción incorrectoG7: Clases base que dependen de sus variantesG8: Exceso de informaciónG9: Código muertoG10: Separación verticalG11: IncoherenciaG12: DesordenG13: Conexiones artificialesG14: Envidia de las característicasG15: Argumentos de selectorG16: Intención desconocidaG17: Responsabilidad desubicadaG18: Elementos estáticos incorrectosG19: Usar variables explicativasG20: Los nombres de función deben indicar lo que hacenG21: Comprender el algoritmoG22: Convertir dependencias lógicas en físicasG23: Polimorfismo antes que If/Else o Switch/CaseG24: Seguir las convenciones estándarG25: Sustituir números mágicos por constantes con nombreG26: PrecisiónG27: Estructura sobre convenciónG28: Encapsular condicionalesG29: Evitar condicionales negativasG30: Las funciones solo deben hacer una cosaG31: Conexiones temporales ocultasG32: Evitar la arbitrariedadG33: Encapsular condiciones de límiteG34: Las funciones solo deben descender un nivel de abstracciónG35: Mantener los datos configurables en los niveles superioresG36: Evitar desplazamientos transitivosJavaJ1: Evitar extensas listas de importación mediante el uso de comodinesJ2: No heredar constantesJ3: Constantes frente a enumeracionesNombresN1: Elegir nombres descriptivosN2: Elegir nombres en el nivel correcto de abstracciónN3: Usar nomenclatura estándar siempre que sea posibleN4: Nombres inequívocosN5: Usar nombres extensos para ámbitos extensosN6: Evitar codificacionesN7: Los nombres deben describir efectos secundariosPruebas (Test)T1: Pruebas insuficientesT2: Usar una herramienta de coberturaT3: No ignorar pruebas trivialesT4: Una prueba ignorada es una pregunta sobre una ambigüedadT5: Probar condiciones de límiteT6: Probar de forma exhaustiva junto a los erroresT7: Los patrones de fallo son reveladoresT8: Los patrones de cobertura de pruebas pueden ser reveladoresT9: Las pruebas deben ser rápidasConclusiónBibliografíaApén A. Concurrencia IIEjemplo cliente/servidorEl servidorAñadir subprocesosObservaciones del servidorConclusiónPosibles rutas de ejecuciónNúmero de rutasUn examen más profundoConclusiónConocer su bibliotecaLa estructura ExecutorSoluciones no bloqueantesClases incompatibles con subprocesosLas dependencias entre métodos pueden afectar al código concurrenteTolerar el falloBloqueo basado en el clienteBoqueo basado en el servidorAumentar la producciónCálculo de producción de un solo subprocesoCálculo de producción con varios subprocesosBloqueo mutuoExclusión mutuaBloqueo y esperaNo expropiaciónEspera circularEvitar la exclusión mutuaEvitar bloqueo y esperaEvitar la expropiaciónEvitar la espera circularProbar código con múltiples subprocesosHerramientas para probar código basado en subprocesosConclusiónEjemplos de código completosCliente/Servidor sin subprocesosCliente/Servidor con alfabético

    Opiniones del libro

    Leonis Ocampo NievesMartes 15 de Septiembre, 2020

    "Excelente libro. Era lo que buscada desde hace un tiempo. Me ayudará mucho para mi carrera profesional"

    00
    Oliver PradaDomingo 23 de Agosto, 2020

    "Excelente todo seguro "

    00
    Fabián Soto AlvarezMiércoles 12 de Agosto, 2020

    "100% recomendado"

    00
    Alexys LozadaMartes 07 de Enero, 2020

    "Definitivamente hay que leer el libro para mejorar nuestra escritura de código. No importa que no apliques todo, la idea general te ayuda bastante a ordenar tus programas."

    00
    Mariano JuarezMiércoles 27 de Marzo, 2019

    "La biblia del programador!!! un libro que sin duda no te puede faltar si sos programador!! te ayuda muchisimo a ordenarte, a crear bien las variables, etc. sus ejemplos estan en Java y para mí es sin duda una compra que voy a disfrutar siempre!!! RECOMENDADO!!!"

    00

    ¿Leíste este libro? Inicia sesión para poder agregar tu propia evaluación.

    Ver más opiniones de clientes
    • 100% (5)
    • 0% (0)
    • 0% (0)
    • 0% (0)
    • 0% (0)

    Opiniones sobre Buscalibre

    Ver más opiniones de clientes