SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
Desarrollo	de	software	en	un	entorno	real
¡  ¿Cuántos	programáis?	
¡  ¿Muy	bien?	
¡  ¿Por	qué?
¡  We	deliver	working	software	on	time	
Steve	McConnell	– Code	Complete	
¡  Deliver	working	software	frequently,		
from	a	couple	of	weeks	to	a	couple	of	months,	with	a	preference	to	the	shorter	timescale.		
Agile	development.	Principle	#3
…nuestro	código	debe	estar		
preparado	para	ello
¡  Legibilidad	
¡  Comprensibilidad	
¡  Mantenibilidad	
¡  Reusabilidad	
¡  Testeabilidad
Desarrollamos		
a	tiempo		
software	que		
funciona
¡  Nuestro	cerebro	es	limitado	y	nuestra	
memoria	RAM	escasa	
¡  El	problema/modelo/negocio	es	complicado,	
que	el	software	no	lo	haga	peor	aún	
¡  “No	me	hagas	pensar”	–	Stephen	Krug
¡  “When	I	wrote	this,	only	God	and	I	understood	wh	
¡  at	I	was	doing.	Now,	God	only	knows.”	
	
Karl	Weierstrass	/	Johann	Richter	/	Cualquier	programador
¡  Nombres	apropiados	
¡  Funciones	claras	
¡  Comentarios	que	aporten	
¡  Formato	
¡  Excepciones,	pruebas	unitarias,	sistemas,	
clases,	concurrencia,	refactoring
¡  Claros	
¡  Descriptivos	
¡  Sin	abreviaturas	
¡  Consistentes	
¡  Sin	prefijos
¡  <20	líneas	
¡  Nombres	apropiados	
¡  Anidamiento	mínimo	
¡  Una	sola	función	
¡  Sin	efectos	secundarios	
¡  Niveles	de	abstracción	descendente	
¡  <3	parámetros	(y	sólo	de	entrada)
¡  Que	aporten	información	
¡  El	(buen)	código	se	“autocomenta”	
¡  Explicación	de	intención	
¡  No	redundantes	
¡  Sin	código	comentado	
¡  Sin	referencias	a	los	cambios	(Ctrl	de	versiones)	
¡  No	sustituyen	a	un	buen	nombre
¡  Ficheros	pequeños	
¡  Nombres	apropiados	
¡  Con	leer	la	parte	de	arriba	es	suficiente	
¡  No	rompas	el	interlineado	
¡  …
¡  Excepciones,	pruebas	unitarias,	sistemas,	
clases,	concurrencia,	refactoring
1.  Use	only	one	level	of	indentation	per	method.	
2.  Don’t	use	the	else	keyword.	
3.  Wrap	all	primitives	and	strings.	
4.  Use	only	one	dot	per	line.	
5.  Don’t	abbreviate.	
6.  Keep	all	entities	small.	
7.  Don’use	any	classes	with	more	than	two	
instance	variables.	
8.  Use	first-class	collections.	
9.  Don’t	use	any	getters/setters/properties.
¡  Hay	versiones	para	muchos	lenguajes	
¡  En	algunos	alguna	regla	puede	no	aplicar	
¡  Gracias	a	William	Durand	
http://williamdurand.fr/2013/06/03/object-calisthenics/
1.  Use	only	one	level	of	indentation	per	method.	
2.  Don’t	use	the	else	keyword.	
3.  Wrap	all	primitives	and	strings.	
4.  Use	only	one	dot	per	line.	
5.  Don’t	abbreviate.	
6.  Keep	all	entities	small.	
7.  Don’use	any	classes	with	more	than	two	instance	variables.	
8.  Use	first-class	collections.	
9.  Don’t	use	any	getters/setters/properties.
¿Por	qué	abrevias?	
§  “Lo	escribo	mucho”	
▪  Duplicación	de	código	
▪  Usa	un	IDE	
§  “Es	que	el	método	hace	todo	eso”	
▪  Single	Responsability	Principle	
§  “Es	que	no	encuentro	un	nombre	mejor”	
▪  ¡Ay,	amigo!
¡  50	líneas	por	clase	
¡  10	clases	por	paquete	
¡  Máximo	de	caracteres	por	linea
¡  Regla	comprometida	
¡  Dos	tipos	de	clases:	
§  Las	que	gestionan	el	estado	de	una	variable	
§  Las	que	coordinan	dos	variables	
¡  Fomenta	la	alta	cohesión	y	la	encapsulación
¡  Si	un	miembro	de	una	clase	es	una	colección	
de	elementos,	debe	ser	el	único	miembro	de	
la	clase	
¡  Debe	estar	encargada	de	gestionar	la	
colección
¡  Tell,	don’t	ask	
¡  Las	decisiones	sobre	el	estado	del	objeto	
deben	ser	hechas	dentro	del	objeto
Soluciones	temporales	permanentes		
	 	 	 	 	-	Stackoverflow
¡  Lenguaje	ubicuo	
¡  ¿Traduzco	los	términos	del	dominio?
Premature	optimization	is	the	root	of	all	evil	
	 	 	 	Donald	Knuth
¡  The	real	problem	is	that	programmers	have	
spent	far	too	much	time	worrying	about	
efficiency	in	the	wrong	places	and	at	the	
wrong	times;	premature	optimization	is	the	
root	of	all	evil	(or	at	least	most	of	it)	in	
programming.	
	 	 	 	Donald	Knuth
¡  Object	Calisthenics	– Jeff	Bay		
in	ThoughtWorks	Anthology	by	ThoughtWorks	
https://pragprog.com/book/twa/thoughtworks-
anthology	
https://www.cs.helsinki.fi/u/luontola/tdd-2009/ext/
ObjectCalisthenics.pdf	
¡  Clean	Code	–	Robert	C.	Martin	
¡  Object	Calisthenics	– Will	Durand	
http://williamdurand.fr/2013/06/03/object-
calisthenics/	
¡  Your	code	sucks,	let’s	fix	it	– Rafael	Dohms	
https://www.slideshare.net/rdohms/your-code-sucks-
lets-fix-it-15471808

Más contenido relacionado

Similar a Aprender a programar cuando sabes programar

Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Cesar Acosta
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programmingguest123148
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programmingguest123148
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programmingguest82ea27
 
Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaManuel Rubio
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programmingguest82ea27
 
Extreme programming (1)
Extreme programming (1)Extreme programming (1)
Extreme programming (1)Enrique Polo
 
PulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlosPulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlosNino Dafonte
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadJose Antonio Jimenez Bisbe
 

Similar a Aprender a programar cuando sabes programar (20)

Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 
Alternativas metodológicas
Alternativas metodológicasAlternativas metodológicas
Alternativas metodológicas
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
 
Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la Práctica
 
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3   Extreme ProgrammingSeminario MetodologíAs áGiles Y Xp, Tema 3   Extreme Programming
Seminario MetodologíAs áGiles Y Xp, Tema 3 Extreme Programming
 
Las habilidades sociales del programador
Las habilidades sociales del programadorLas habilidades sociales del programador
Las habilidades sociales del programador
 
Metodos agiles
Metodos agilesMetodos agiles
Metodos agiles
 
Programación Extrema - XP
Programación Extrema - XPProgramación Extrema - XP
Programación Extrema - XP
 
Extreme programming (1)
Extreme programming (1)Extreme programming (1)
Extreme programming (1)
 
Esto es ingeniería inversa
Esto es ingeniería inversaEsto es ingeniería inversa
Esto es ingeniería inversa
 
El arte de programar
El arte de programarEl arte de programar
El arte de programar
 
Programación Extrema (XP)
Programación Extrema (XP)Programación Extrema (XP)
Programación Extrema (XP)
 
PulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlosPulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlos
 
Clase 5
Clase 5Clase 5
Clase 5
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de Calidad
 
Programmer visions
Programmer visionsProgrammer visions
Programmer visions
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 

Aprender a programar cuando sabes programar