SlideShare una empresa de Scribd logo
Funciones!
Capítulo 3 – Clean Code
Funciones
 El objetivo de este capítulo es
básicamente distinguir entre las
buenas y malas prácticas a la hora
de escribir funciones.
 Las funciones son la primera línea
de organización en cualquier
programa.
Tamaño
 Reglas para crear funciones óptimas, limpias y claras:
1. Debe ser corta.
2. Debe ser aún más corta.
 Esto permite que la revisión sea mucho más transparente y más eficientes.
Además de que es más entendible para cualquier desarrollador que tuviera
que hacer soporte sobre dicha función.
 Se recomienda escribir funciones entre de máximo 20-30 líneas, lo ideal es
una función de no más de 5 líneas.
Bloques y Sangría
 Los bloques que contengan expresiones if, else, while deben ser idealmente
de una sola línea, la cual sería la llamada a otra función.
 Mantener una sangría de 1 nivel, máximo 2. Esto hace a la función mucho más
fácil de leer y de entender
Hacer una sola cosa!
 En ocasiones es difícil discernir entre cuando una cosa es solo una o varias.
Por ejemplo: Implementar un login en un aplicativo.
 Lo más recomendable es llevar todo a un nivel de abstracción. Cómo hacerlo?.
Una forma de saber si una función está haciendo una sola cosa es ver si
puedes extraer otra función a partir de ella, es decir, si puedes aislar otra
funcionalidad con un nombre en particular.
 Mantener un solo nivel de abstracción.
Usar Nombres Descriptivos
 Facilita la lectura de código y lo hace más entendible al desarrollador.
 Es preferible usar nombres largos y descriptivos que cortos y enigmáticos.
 Ser consistente con los nombres
Argumentos
 El número ideal de argumentos para una función es cero. (niladic)
 1 argumento (monadic): writeField(name)
 2 argumentos (dyadic): writeField(output-Stream, name)
Point(x,y)
 3 argumentos (triadic):
makeCircle(double x, double y, double r)  makeCircle(Point center, double r)
 4 o más argumentos (polyadic). Estos requieren un justificación especial para ser
usados, deben ser evitados.
 En la medida de lo posible usar funciones que contengan solo un argumento pues
facilita el entendimiento de la misma. En caso de tener que enviar más de un
argumento, evaluar la posibilidad de enviarlo encapsulado en un objeto o una
estructura.
Argumentos
 Evitar no-retornos en funciones las cuales su objetivo sea transformar un
objeto, pues puede ser confuso.
 Void pintarDibujo(Dibujo)  Dibujo Pintar(Dibujo)
 Evitar los argumentos bandera es un error enorme de diseño y es una clara
señal de que la función no hace sólo una cosa, es decir, opera en función del
valor en la bandera.
Conclusiones
 En este capitulo se habló de la importancia de la funciones y del hecho de
que estén bien estructuradas y cumplan ciertas características que las hacen
legibles, fáciles de entender, fácil de hacerles mantenimiento y ajustes.
 Entre estas características recordemos las principales:
 Que sean pequeñas
 Que hagan una sola cosa
 Que estén bien nombradas
 Que reciban la menor cantidad de argumentos posibles

Más contenido relacionado

La actualidad más candente

Capítulo 8 breaking down giant expressions
Capítulo 8  breaking down giant expressionsCapítulo 8  breaking down giant expressions
Capítulo 8 breaking down giant expressions
Pablo Andrés Wolff Velásquez
 
Presentación pseudocódigo
Presentación pseudocódigoPresentación pseudocódigo
Presentación pseudocódigo
Student
 
Pseudocodigo ferro
Pseudocodigo ferroPseudocodigo ferro
Pseudocodigo ferro
Romina Vázquez
 
tipos de datos abstractos
tipos de datos abstractostipos de datos abstractos
tipos de datos abstractos
Vane
 
5 tdas
5 tdas5 tdas
5 tdas
Hernan Ullon
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
APILUZ1
 
Trabajo 2
Trabajo 2Trabajo 2
Trabajo 2
Yuli Pico
 
Algoritmos, pseudocodigos y diagramas de flujo
Algoritmos, pseudocodigos y diagramas de flujoAlgoritmos, pseudocodigos y diagramas de flujo
Algoritmos, pseudocodigos y diagramas de flujo
Maria Valenzuela
 
Trabajo de thali infor
Trabajo de thali inforTrabajo de thali infor
Trabajo de thali infor
Thalia Diaz
 
PROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADAPROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADA
TeDy j Sanchez
 
5 Tdas
5 Tdas5 Tdas
12 PHP. Lineas de comentario
12 PHP. Lineas de comentario12 PHP. Lineas de comentario
12 PHP. Lineas de comentario
José M. Padilla
 
Presentacion PseudocóDigo
Presentacion PseudocóDigoPresentacion PseudocóDigo
Presentacion PseudocóDigo
Marco Antonio
 
Melendez
MelendezMelendez
Action scrip 3,0
Action scrip 3,0Action scrip 3,0
Action scrip 3,0
Sneider76
 
Conceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje deConceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje de
'Felipe Lozada
 
Introducción a los algoritmos y programación 1
Introducción a los algoritmos y programación   1Introducción a los algoritmos y programación   1
Introducción a los algoritmos y programación 1
Jeckson Loza
 

La actualidad más candente (17)

Capítulo 8 breaking down giant expressions
Capítulo 8  breaking down giant expressionsCapítulo 8  breaking down giant expressions
Capítulo 8 breaking down giant expressions
 
Presentación pseudocódigo
Presentación pseudocódigoPresentación pseudocódigo
Presentación pseudocódigo
 
Pseudocodigo ferro
Pseudocodigo ferroPseudocodigo ferro
Pseudocodigo ferro
 
tipos de datos abstractos
tipos de datos abstractostipos de datos abstractos
tipos de datos abstractos
 
5 tdas
5 tdas5 tdas
5 tdas
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Trabajo 2
Trabajo 2Trabajo 2
Trabajo 2
 
Algoritmos, pseudocodigos y diagramas de flujo
Algoritmos, pseudocodigos y diagramas de flujoAlgoritmos, pseudocodigos y diagramas de flujo
Algoritmos, pseudocodigos y diagramas de flujo
 
Trabajo de thali infor
Trabajo de thali inforTrabajo de thali infor
Trabajo de thali infor
 
PROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADAPROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADA
 
5 Tdas
5 Tdas5 Tdas
5 Tdas
 
12 PHP. Lineas de comentario
12 PHP. Lineas de comentario12 PHP. Lineas de comentario
12 PHP. Lineas de comentario
 
Presentacion PseudocóDigo
Presentacion PseudocóDigoPresentacion PseudocóDigo
Presentacion PseudocóDigo
 
Melendez
MelendezMelendez
Melendez
 
Action scrip 3,0
Action scrip 3,0Action scrip 3,0
Action scrip 3,0
 
Conceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje deConceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje de
 
Introducción a los algoritmos y programación 1
Introducción a los algoritmos y programación   1Introducción a los algoritmos y programación   1
Introducción a los algoritmos y programación 1
 

Similar a Funciones

Compendio de clean code (robert c. martin)
Compendio de clean code (robert c. martin)Compendio de clean code (robert c. martin)
Compendio de clean code (robert c. martin)
Nombre Apellidos
 
Funciones y módulos en Python
Funciones y módulos en PythonFunciones y módulos en Python
Funciones y módulos en Python
Ramiro Estigarribia Canese
 
Informatica
InformaticaInformatica
Tap04 poo
Tap04 pooTap04 poo
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
Isai Vazquez
 
ALP Unidad 4: Programación modular
ALP Unidad 4: Programación modularALP Unidad 4: Programación modular
ALP Unidad 4: Programación modular
Franklin Parrales Bravo
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
Bryangio2002
 
Introduccion actionscript
Introduccion actionscriptIntroduccion actionscript
Introduccion actionscript
Myriam Victoria Sierra Cortes
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
Jose Gallardo
 
Ventajas de usar funciones en php
Ventajas de usar funciones en phpVentajas de usar funciones en php
Ventajas de usar funciones en php
Giovanny Cuadros
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
flaquita_dany
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
Abraham Zamudio
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
Mariannis Ortega
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
Mariannis Ortega
 
Cuida tu código: Clean Code
Cuida tu código: Clean CodeCuida tu código: Clean Code
Cuida tu código: Clean Code
Jesus Maria Escudero Justel
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programación
claudia polo jaraba
 
Frameworks de templates y xml
Frameworks de templates y xmlFrameworks de templates y xml
Frameworks de templates y xml
roger gustavo saravia aramayo
 
12 programacion modular
12 programacion modular12 programacion modular
12 programacion modular
Shadai Black
 
12 programacion modular
12 programacion modular12 programacion modular
12 programacion modular
Laura Cruz
 
Guia1 pii
Guia1 piiGuia1 pii
Guia1 pii
Thays Parra
 

Similar a Funciones (20)

Compendio de clean code (robert c. martin)
Compendio de clean code (robert c. martin)Compendio de clean code (robert c. martin)
Compendio de clean code (robert c. martin)
 
Funciones y módulos en Python
Funciones y módulos en PythonFunciones y módulos en Python
Funciones y módulos en Python
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
 
ALP Unidad 4: Programación modular
ALP Unidad 4: Programación modularALP Unidad 4: Programación modular
ALP Unidad 4: Programación modular
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Introduccion actionscript
Introduccion actionscriptIntroduccion actionscript
Introduccion actionscript
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
Ventajas de usar funciones en php
Ventajas de usar funciones en phpVentajas de usar funciones en php
Ventajas de usar funciones en php
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Cuida tu código: Clean Code
Cuida tu código: Clean CodeCuida tu código: Clean Code
Cuida tu código: Clean Code
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programación
 
Frameworks de templates y xml
Frameworks de templates y xmlFrameworks de templates y xml
Frameworks de templates y xml
 
12 programacion modular
12 programacion modular12 programacion modular
12 programacion modular
 
12 programacion modular
12 programacion modular12 programacion modular
12 programacion modular
 
Guia1 pii
Guia1 piiGuia1 pii
Guia1 pii
 

Último

LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIOLINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
AaronPleitez
 
Plan Emergencia solicitado en obras de construccion
Plan Emergencia  solicitado en obras de construccionPlan Emergencia  solicitado en obras de construccion
Plan Emergencia solicitado en obras de construccion
christianllacchasand
 
INTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdfINTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdf
YulEz1
 
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
hugowagner811
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
DilmerCarranza
 
resumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TIresumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TI
riveroarlett5b
 
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllllANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
eliassalascolonia43
 
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdfREPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
IrapuatoCmovamos
 
Plan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdfPlan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdf
agustincarranza11
 
Presentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptxPresentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptx
eleandroth
 
Informe fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docxInforme fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docx
mirimerlos5
 
04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos
MarcoPolo545324
 
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
darkskills2011
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
GustavoTello19
 
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptxUGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
Mayra798665
 

Último (15)

LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIOLINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
 
Plan Emergencia solicitado en obras de construccion
Plan Emergencia  solicitado en obras de construccionPlan Emergencia  solicitado en obras de construccion
Plan Emergencia solicitado en obras de construccion
 
INTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdfINTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdf
 
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
 
resumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TIresumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TI
 
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllllANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
 
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdfREPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
 
Plan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdfPlan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdf
 
Presentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptxPresentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptx
 
Informe fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docxInforme fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docx
 
04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos
 
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
 
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptxUGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
 

Funciones

  • 2. Funciones  El objetivo de este capítulo es básicamente distinguir entre las buenas y malas prácticas a la hora de escribir funciones.  Las funciones son la primera línea de organización en cualquier programa.
  • 3.
  • 4. Tamaño  Reglas para crear funciones óptimas, limpias y claras: 1. Debe ser corta. 2. Debe ser aún más corta.  Esto permite que la revisión sea mucho más transparente y más eficientes. Además de que es más entendible para cualquier desarrollador que tuviera que hacer soporte sobre dicha función.  Se recomienda escribir funciones entre de máximo 20-30 líneas, lo ideal es una función de no más de 5 líneas.
  • 5. Bloques y Sangría  Los bloques que contengan expresiones if, else, while deben ser idealmente de una sola línea, la cual sería la llamada a otra función.  Mantener una sangría de 1 nivel, máximo 2. Esto hace a la función mucho más fácil de leer y de entender
  • 6. Hacer una sola cosa!  En ocasiones es difícil discernir entre cuando una cosa es solo una o varias. Por ejemplo: Implementar un login en un aplicativo.  Lo más recomendable es llevar todo a un nivel de abstracción. Cómo hacerlo?. Una forma de saber si una función está haciendo una sola cosa es ver si puedes extraer otra función a partir de ella, es decir, si puedes aislar otra funcionalidad con un nombre en particular.  Mantener un solo nivel de abstracción.
  • 7. Usar Nombres Descriptivos  Facilita la lectura de código y lo hace más entendible al desarrollador.  Es preferible usar nombres largos y descriptivos que cortos y enigmáticos.  Ser consistente con los nombres
  • 8. Argumentos  El número ideal de argumentos para una función es cero. (niladic)  1 argumento (monadic): writeField(name)  2 argumentos (dyadic): writeField(output-Stream, name) Point(x,y)  3 argumentos (triadic): makeCircle(double x, double y, double r)  makeCircle(Point center, double r)  4 o más argumentos (polyadic). Estos requieren un justificación especial para ser usados, deben ser evitados.  En la medida de lo posible usar funciones que contengan solo un argumento pues facilita el entendimiento de la misma. En caso de tener que enviar más de un argumento, evaluar la posibilidad de enviarlo encapsulado en un objeto o una estructura.
  • 9. Argumentos  Evitar no-retornos en funciones las cuales su objetivo sea transformar un objeto, pues puede ser confuso.  Void pintarDibujo(Dibujo)  Dibujo Pintar(Dibujo)  Evitar los argumentos bandera es un error enorme de diseño y es una clara señal de que la función no hace sólo una cosa, es decir, opera en función del valor en la bandera.
  • 10. Conclusiones  En este capitulo se habló de la importancia de la funciones y del hecho de que estén bien estructuradas y cumplan ciertas características que las hacen legibles, fáciles de entender, fácil de hacerles mantenimiento y ajustes.  Entre estas características recordemos las principales:  Que sean pequeñas  Que hagan una sola cosa  Que estén bien nombradas  Que reciban la menor cantidad de argumentos posibles