<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mundo Geek &#187; codigo</title>
	<atom:link href="http://mundogeek.net/etiqueta/codigo/feed/" rel="self" type="application/rss+xml" />
	<link>http://mundogeek.net</link>
	<description>Mundo geek, bitácora sobre todo lo geek: software, gadgets, tecnología, internet, ...</description>
	<lastBuildDate>Wed, 08 Feb 2012 16:09:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Limpiar el baño</title>
		<link>http://mundogeek.net/archivos/2011/11/10/limpiar-el-bano/</link>
		<comments>http://mundogeek.net/archivos/2011/11/10/limpiar-el-bano/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 18:44:08 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[citas]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=7425</guid>
		<description><![CDATA[Comentar tu código es como limpiar el cuarto de baño. Nunca quieres hacerlo, pero resulta en una experiencia más agradable para ti y para todos tus invitados. ~ Ryan Campbell]]></description>
			<content:encoded><![CDATA[<blockquote><p>Comentar tu código es como limpiar el cuarto de baño. Nunca quieres hacerlo, pero resulta en una experiencia más agradable para ti y para todos tus invitados.</p>
<p>~ Ryan Campbell</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2011/11/10/limpiar-el-bano/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Variables globales</title>
		<link>http://mundogeek.net/archivos/2011/07/12/variables-globales/</link>
		<comments>http://mundogeek.net/archivos/2011/07/12/variables-globales/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 15:03:38 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[globales]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[variables]]></category>
		<category><![CDATA[variables globales]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=7088</guid>
		<description><![CDATA[Una de las primeras cosas que se aprende al empezar a programar es que las variables globales son malvadas. Son casi tan despreciables como el infame goto, y (casi) nunca existen razones justificadas para utilizarlas. Martin Fowler lo expresa muy bien en su &#8220;Patterns of Enterprise Application Architecture&#8221; cuando dice que &#8220;cualquier variable global es [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las primeras cosas que se aprende al empezar a programar es que <strong>las variables globales son malvadas</strong>. Son casi tan despreciables como el infame <code>goto</code>, y (casi) nunca existen razones justificadas para utilizarlas. Martin Fowler lo expresa muy bien en su &#8220;<a href="http://www.amazon.co.uk/gp/product/0321127420/ref=as_li_ss_tl?ie=UTF8&#038;tag=mundogeek-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0321127420">Patterns of Enterprise Application Architecture</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=&#038;l=as2&#038;o=2&#038;a=0321127420" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />&#8221; cuando dice que <cite>&#8220;cualquier variable global es siempre culpable hasta que se demuestre lo contrario&#8221;</cite>. Pero, ¿por qué son tan odiadas las variables globales? ¿realmente son perjudiciales? ¿o se trata sólo de un odio irracional por parte de los puristas?<span id="more-7088"></span></p>
<p>Las dos formas más comunes de proporcionar una dependencia a una función son, por un lado, los parámetros de la función:</p>
<pre name="code" class="php">function insertarItem($db, $item) {
	// Haz algo
	// ...

	$db-&gt;insertar($item);

	// Haz más algo
	// ...
}</pre>
<p>y por otra parte, cualquier tipo de mecanismo de acceso global con el que contemos en el lenguaje (variables globales, patrón Singleton, etc). En este ejemplo en PHP utilizamos la palabra clave <code>global</code> para crear una variable local con una referencia a la variable global.</p>
<pre name="code" class="php">function insertarItem($item) {
	// Haz algo
	// ...

	global $db;
	$db->insertar($item);

	// Haz más algo
	// ...
}</pre>
<p>En principio podría parecer que no hay mucha diferencia entre ambos ejemplos. Nada más lejos de la realidad.</p>
<p>El primer problema con el que nos encontramos es que las variables globales ocultan las dependencias, y transportan la información de un lado a otro por arte de magia. Imagina que quieres utilizar la función <code>insertarItem</code> dentro de un año. Podrías pensar que puedes usarla de esta forma:</p>
<pre name="code" class="php">insertarItem($item);</pre>
<p>cuando, de hecho, la función puede estar esperando que hagas esto:</p>
<pre name="code" class="php">
$GLOBALS['db'] = new Db('localhost', 'mibbdd', 'usuario', 'pass');
$_SESSION['permisos'] = new Usuario()-&lt;permisos();
insertarItem($item);</pre>
<p>¿Cómo podrías saberlo sin tener que leer todo el código?</p>
<p>Otro problema es que es terriblemente difícil seguir sus cambios. Es posible que en algún momento crees otra variable global con el mismo nombre, y termines sobre escribiendo su valor sin percatarte, lo cuál generaría errores de lo más esotérico y de lo más difícil de depurar.</p>
<p>Las variables globales son malvadas por, al menos, 6 razones relacionadas:</p>
<ol>
<li>El código es más difícil de entender</li>
<li>El código es más difícil de depurar</li>
<li>El código es más difícil de testear</li>
<li>El código es más difícil de mantener</li>
<li>El código es más difícil de reutilizar</li>
<li>Las variables globales matan gatitos</li>
</ol>
<p>A pesar de todo puede tentarte usar variables globales para no tener que pasar el objeto <code>$db</code> a todas y cada una de las funciones que puedan necesitarlo, por ejemplo, y todas las funciones que llamen a funciones que puedan necesitarlo. En ese caso, en lugar de una colección de funciones con usos relacionados, puedes utilizar clases, y pasar la dependencia al objeto utilizando el constructor. Otras opciones son el uso de los patrones Abstract Factory, Service Locator o, mucho mejor, la inyección de dependencias (Dependency Injection, también llamado Inversion of Control).</p>
<p>Ojo, porque el patrón Singleton NO es una solución adecuada a este problema. Sí, es uno de los patrones explicados en <a href="http://mundogeek.net/archivos/2010/02/04/10-libros-miticos-sobre-programacion-que-todo-desarrollador-deberia-leer/" tile="10 libros míticos sobre programación que todo desarrollador debería leer">Design patterns: elements of reusable object-oriented software</a>, uno de los 10 libros míticos que todo programador debería leer, pero se suele abusar de él utilizándolo simplemente como una especie de variable global glorificada. Así las cosas, existen multitud de artículos que desaconsejan su utilización, e incluso Google desarrolló en su día un pequeño <a href="http://code.google.com/p/google-singleton-detector/">script para detectar el uso de singletons</a> y poder eliminarlos.</p>
<link type="text/css" rel="stylesheet" href="http://mundogeek.net/sh/css/SyntaxHighlighter.css"></link>
<script language="javascript" src="http://mundogeek.net/sh/js/shCore.js"></script><script language="javascript" src="http://mundogeek.net/sh/js/shBrushPhp.js"></script><script language="javascript">dp.SyntaxHighlighter.ClipboardSwf = 'http://mundogeek.net/sh//flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2011/07/12/variables-globales/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Clean Code</title>
		<link>http://mundogeek.net/archivos/2011/07/09/clean-code/</link>
		<comments>http://mundogeek.net/archivos/2011/07/09/clean-code/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 08:46:52 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[criticas]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[libros]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=7069</guid>
		<description><![CDATA[Clean Code Calificación: Autor: Robert C. Martin Año: 2008Editorial: Prentice HallNo me gusta recurrir a los argumentos de autoridad, pero creo que es conveniente comenzar esta reseña explicando que el autor principal del libro del que os hablo hoy, Clean Code, o Código Limpio, es Robert C. Martin, a.k.a Uncle Bob, experto en desarrollo de [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mundogeek.net/wp-content/clean-code.png" alt="Clean Code" align="left" style="margin-right:1em"/><a href="http://www.amazon.co.uk/gp/product/0132350882/ref=as_li_ss_tl?ie=UTF8&#038;tag=mundogeek-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0132350882">Clean Code</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=&#038;l=as2&#038;o=2&#038;a=0132350882" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br />
Calificación: <img src="http://mundogeek.net/wp-content/themes/mg5/excelente.png"/><br />Autor: Robert C. Martin<br />
Año: 2008<br />Editorial: Prentice Hall<br clear="all"/><br />No me gusta recurrir a los argumentos de autoridad, pero creo que es conveniente comenzar esta reseña explicando que el autor principal del libro del que os hablo hoy, <strong>Clean Code</strong>, o Código Limpio, es Robert C. Martin, a.k.a Uncle Bob, experto en desarrollo de software, miembro fundador de la Agile Alliance, primer presidente de la asociación y coautor del Manifiesto Ágil. Hechas las presentaciones, pasemos a hablar del libro.<span id="more-7069"></span></p>
<p>Clean Code se estructura alrededor de una idea básica: la de que el buen código es resultado, ante todo, de prestar atención a los pequeños detalles. Muchas veces estamos tan centrados en la arquitectura, o en acumular patrones y principios que no sabemos aplicar correctamente, que no damos la importancia que se merece a otros detalles que pueden parecer menores, pero que tienen igual o mayor importancia. No olvidemos que antes de correr, se ha de aprender a andar.</p>
<p>Antes de comenzar a leer y coleccionar libros sobre metodología, gestión de proyectos, pruebas o diseño de software, por favor, empieza leyendo este. Es posible que muchas de las cosas que explica te parezcan obvias a estas alturas, pero creo que es preferible hacerte perder algo de tiempo, a que, por vanidad o desconocimiento, estés descuidando las bases. En todo caso, creo que es imposible no aprender al menos una cosa nueva en cada capítulo, independientemente de tu nivel.</p>
<p>El libro está dividido en tres partes, siendo los 13 primeros capítulos consejos razonados de cómo escribir código limpio, divididos por temáticas. Una lectura muy amena en la que se habla del aspecto que deberían tener, para que nuestro código sea limpio, los nombres, funciones, comentarios, clases, objetos, estructuras de datos, el manejo de errores y las pruebas unitarias.</p>
<p>El capítulo dedicado a las funciones, por ejemplo, explica que la primera regla al escribir funciones es que tienen que ser cortas; la segunda, que tienen que ser aún más cortas. También habla de la necesidad de que cada función haga una única cosa (<a href="http://mundogeek.net/archivos/2011/06/09/principios-solid-de-la-orientacion-a-objetos/" title="Principio de Responsabilidad Única">SRP</a>), de limitar el nivel de anidamiento y el número de parámetros, o de por qué los parámetros booleanos a modo de flag son una mala señal.</p>
<p>La segunda parte es el trabajo duro, donde realmente interiorizamos los conceptos que hemos estado leyendo. Consiste en un par de capítulos con casos de estudio reales (JUnit y SerialDate) en los que tienes la posibilidad de ver cómo y por qué se aplican distintas refactorizaciones para obtener, paso a paso, un código mucho más legible. Ambos ejemplos están escritos en Java, aunque no es necesario conocer el lenguaje para seguirlos. Sólo estar familiarizados con lenguajes similares.</p>
<p>La tercera y última parte consiste en un resumen de los olores y heurísticas explicados a través del libro, que puede servir a modo de repaso y referencia, y para empapelar la pared de alguna que otra oficina que yo conozco.</p>
<p>Si terminas por leer Clean Code, cosa que recomiendo encarecidamente, y te quedas con ganas de más, también me gustaría recomendarte <a href="http://mundogeek.net/archivos/2010/02/04/10-libros-miticos-sobre-programacion-que-todo-desarrollador-deberia-leer/" title="10 libros míticos sobre programación que todo desarrollador debería leer">Code Complete</a>, uno de mis libros preferidos sobre programación. Cambiarán totalmente tu forma de entender la programación.</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2011/07/09/clean-code/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Espaguetis, lasañas, y otras pastas italianas</title>
		<link>http://mundogeek.net/archivos/2011/05/16/espaguetis-lasanas-y-otras-pastas-italianas/</link>
		<comments>http://mundogeek.net/archivos/2011/05/16/espaguetis-lasanas-y-otras-pastas-italianas/#comments</comments>
		<pubDate>Mon, 16 May 2011 10:30:56 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[albondigas]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[codigo espagueti]]></category>
		<category><![CDATA[codigo lasaña]]></category>
		<category><![CDATA[codigo ravioli]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=6757</guid>
		<description><![CDATA[Quizás hayas oído hablar alguna vez del código espagueti, un nombre peyorativo utilizado para designar aquellos programas cuyo flujo de ejecución se asemeja a una caótica maraña de espaguetis entrelazados, convirtiéndolo en algo casi imposible de seguir. Pues aunque el código espagueti sea el más conocido, a lo largo de los años se ha desarrollado [...]]]></description>
			<content:encoded><![CDATA[<p>Quizás hayas oído hablar alguna vez del <strong>código espagueti</strong>, un nombre peyorativo utilizado para designar aquellos programas cuyo flujo de ejecución se asemeja a una caótica maraña de espaguetis entrelazados, convirtiéndolo en algo casi imposible de seguir. Pues aunque el código espagueti sea el más conocido, a lo largo de los años se ha desarrollado toda una &#8220;Teoría de la Pasta Aplicada al Desarrollo de Software&#8221;, que toma prestado los nombres de varios tipos de pasta: ravioli, lasaña, y espaguetis con albóndigas. ¿He despertado tu apetito? ¡Pues sigue leyendo!<span id="more-6757"></span></p>
<div style="text-align:center"><img src="http://mundogeek.net/wp-content/codigo-espagueti.jpg" alt="Código espagueti"/></div>
<p><br/></p>
<p>El código ravioli es un patrón que encontramos asociado al paradigma orientado a objetos y que consiste en la creación de un cierto número de pequeñas clases débilmente acopladas, cada una de las cuales contiene algo de &#8220;carne&#8221; para el sistema, siendo estas fácilmente modificables o reemplazables sin afectar al resto de la aplicación. El código ravioli puede convertirse en un anti patrón si el número de clases crece hasta tal punto que ya nadie sabe muy bien dónde ocurre cada cosa.</p>
<p>El código lasaña es un patrón arquitectónico. Describe una situación ideal en la que el software adopta una estructura dividida en capas, simple, y fácil de entender, con una clara separación de responsabilidades.</p>
<p>El código espagueti con albóndigas, por último, se refiere a código espagueti supuestamente orientado a objetos (de ahí las albóndigas).</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2011/05/16/espaguetis-lasanas-y-otras-pastas-italianas/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Katas de código</title>
		<link>http://mundogeek.net/archivos/2011/03/02/katas-de-codigo/</link>
		<comments>http://mundogeek.net/archivos/2011/03/02/katas-de-codigo/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 09:50:03 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[kata]]></category>
		<category><![CDATA[metodologías ágiles]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=6429</guid>
		<description><![CDATA[Si alguna vez practicaste kárate o judo estarás familiarizado con el concepto de kata (型 ó 形), término japonés que significa literalmente &#8220;forma&#8221;, y que designa conjuntos de movimientos prefijados que se utilizan para aprender y practicar diversas técnicas, así como para mejorar la precisión, la fluidez o la velocidad con las que estas se [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center"><img src="http://mundogeek.net/wp-content/katas-codigo.png" alt="Katas de código"/></div>
<p>Si alguna vez practicaste kárate o judo estarás familiarizado con el concepto de <em>kata</em> (型 ó 形), término japonés que significa literalmente &#8220;forma&#8221;, y que designa conjuntos de movimientos prefijados que se utilizan para aprender y practicar diversas técnicas, así como para mejorar la precisión, la fluidez o la velocidad con las que estas se ejecutan. El kata Heian Shodan del estilo Shotokan, por ejemplo, uno de los primeros que aprende un estudiante, permite practicar algunas de las técnicas más elementales del kárate, como giros, desplazamientos y golpes de puño.<span id="more-6429"></span></p>
<p>El concepto de kata, no obstante, no es exclusivo de las artes marciales. Lo podemos encontrar también en otros ámbitos de la tradición japonesa, como son el teatro kabuki, la caligrafía, o la ceremonia del té.</p>
<p>Aplicado a la programación, el concepto de <strong>kata de código</strong>, acuñado por Dave Thomas, co-autor de &#8220;The Pragmatic Programmer&#8221;, del que os hablé en <a href="http://mundogeek.net/archivos/2010/02/04/10-libros-miticos-sobre-programacion-que-todo-desarrollador-deberia-leer/" title="10 libros míticos sobre programación que todo desarrollador debería leer">10 libros míticos sobre programación que todo desarrollador debería leer</a>, se traduce en pequeños ejercicios, de menos de 1 hora de duración, que nos ayudan a aprender y mejorar; especialmente, pequeños retos de programación diseñados por terceros, con un propósito específico en mente.</p>
<p>Las katas de código, de igual forma que las katas de las artes marciales, se pueden practicar sólos o por parejas, siguiendo las mejores tradiciones de las metodologías ágiles (pair programming), y pudiendo así beneficiarse de los intercambios de opiniones, y las sugerencias de la otra persona. Igualmente, así como en el kárate se utilizan los combates de práctica (kumité) como sistema fundamental de aprendizaje, también es interesante publicar nuestras soluciones y compararlas con las de otros programadores, embarcándonos en una sana competición por la búsqueda de la mejor solución posible.</p>
<p>Si estás interesado en el concepto de kata de código, no dudes en apuntarte en tu dojo de programación más cercano&#8230; ¡o crear uno tú mismo!</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2011/03/02/katas-de-codigo/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Ofuscar código Java</title>
		<link>http://mundogeek.net/archivos/2009/06/08/ofuscar-codigo-java/</link>
		<comments>http://mundogeek.net/archivos/2009/06/08/ofuscar-codigo-java/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 10:11:18 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ofuscar]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=3384</guid>
		<description><![CDATA[Asumámoslo: es imposible proteger al 100% nuestro código de miradas indiscretas. Pero eso no implica que no podamos dificultar un poco el proceso de decompilar nuestro código. Y este es el objetivo de los ofuscadores de código. Un ejemplo de este tipo de herramientas es la aplicación GPL ProGuard que permite, además de ofuscar nuestras [...]]]></description>
			<content:encoded><![CDATA[<p>Asumámoslo: es imposible proteger al 100% nuestro código de miradas indiscretas. Pero eso no implica que no podamos dificultar un poco el proceso de <a href="http://mundogeek.net/archivos/2009/03/28/decompilar-clases-java/" title="Decompilar clases Java">decompilar nuestro código</a>. Y este es el objetivo de los <strong>ofuscadores de código</strong>.</p>
<p>Un ejemplo de este tipo de herramientas es la aplicación GPL <a href="http://proguard.sourceforge.net/" title="Ofuscar código Java con ProGuard">ProGuard</a> que permite, además de <strong>ofuscar nuestras clases Java</strong>, optimizarlas, comprimirlas y añadirles información de preverificación, de forma que la carga de las clases en Java SE 6 y Java ME 6 sea más rápida y más eficiente.</p>
<p>La herramienta funciona buscando primeramente clases, campos, métodos y atributos no utilizados, los cuáles elimina; pasa entonces a optimizar el bytecode y eliminar instrucciones innecesarias; y, por último, elimina la información de depuración y renombra las clases, campos y métodos restantes utilizando nombres cortos y poco legibles.</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2009/06/08/ofuscar-codigo-java/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Mejora tu código Java con PMD</title>
		<link>http://mundogeek.net/archivos/2009/03/08/mejora-tu-codigo-java-con-pmd/</link>
		<comments>http://mundogeek.net/archivos/2009/03/08/mejora-tu-codigo-java-con-pmd/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 14:58:56 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=2691</guid>
		<description><![CDATA[PMD es una herramienta que comprueba que nuestra aplicación cumpla una serie de reglas que nos ayudan a obtener un código más elegante, sencillo y mantenible. Estas reglas se agrupan por conjuntos y pueden ser reglas de complejidad, como que la complejidad ciclomática no sea demasiado alta; de diseño, como no usar interfaces como meros [...]]]></description>
			<content:encoded><![CDATA[<p>PMD es una herramienta que comprueba que nuestra aplicación cumpla una serie de reglas que nos ayudan a obtener un código más elegante, sencillo y mantenible. Estas reglas se agrupan por conjuntos y pueden ser reglas de complejidad, como que la complejidad ciclomática no sea demasiado alta; de diseño, como no usar interfaces como meros contenedores de constantes; de optimización, como procurar usar <code>ArrayList</code> en lugar de <code>Vector</code>; etc.</p>
<p>PMD se puede utilizar desde linea de comandos, o puede integrarse con multitud de IDEs y herramientas, como Eclipse, NetBeans, Maven o JEdit. Y aunque algunos de los casos que comprueba PMD ya se tengan en cuenta en Eclipse, sigue siendo una utilidad muy interesante para añadir a nuestra caja de herramientas.<br />
<span id="more-2691"></span><br />
Para instalar el plugin de PMD para Eclipse tenemos que añadir la URL desde la que actualizar el software, http://pmd.sourceforge.net/eclipse, en el diálogo Help -> Software updates -> Available Software -> Add Site, marcar el componente correspondiente dependiendo de nuestra versión de Eclipse y seleccionar Install.</p>
<p>Una vez terminado el proceso podremos gestionar las reglas de PMD desde Window -> Preferences -> PMD -> Rules Configuration. En la misma sección también podemos añadir nuevas reglas utilizando consultas XPath.</p>
<p>Al instalar PMD tendremos acceso a una nueva perspectiva a la que podemos acceder desde Window -> Open Perspective -> Other -> PMD. Para empezar a utilizar PMD haremos clic con el botón derecho sobre el proyecto, el paquete o la clase que queramos comprobar y seleccionaremos PMD -> Check code with PMD.</p>
<p>En la vista Violations Overview podremos ver un resumen de las reglas que incumple nuestro código, con el nombre de la regla, el número de violaciones por paquete, clase y método y el número de violaciones cada 1000 líneas de código.</p>
<p>En Violations Outline podremos ver una pequeña descripción de la regla que rompe nuestro código, asi como la línea de código en el que se encontró el error. Si hacemos clic sobre una de las entradas de la lista se abrirá la clase correspondiente en la línea a corregir. Si necesitamos más información sobre el error podemos hacer clic sobre este y seleccionar Show Details, donde podremos consultar una descripción completa de la regla, asi como ejemplos y la expresión XPath utilizada.</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2009/03/08/mejora-tu-codigo-java-con-pmd/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Eclipse y estándares de código</title>
		<link>http://mundogeek.net/archivos/2009/03/03/eclipse-y-estandares-de-codigo/</link>
		<comments>http://mundogeek.net/archivos/2009/03/03/eclipse-y-estandares-de-codigo/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 11:10:34 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[estandares]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=2651</guid>
		<description><![CDATA[Si sueles trabajar en equipo a la hora de programar, e incluso si no es el caso, puede ser interesante establecer unos estándares a seguir a la hora de escribir el código. Para asegurarnos de que estas reglas se siguen se puede utilizar, por ejemplo, Checkstyle, que se integra en Eclipse a través del plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Si sueles trabajar en equipo a la hora de programar, e incluso si no es el caso, puede ser interesante establecer unos estándares a seguir a la hora de escribir el código. Para asegurarnos de que estas reglas se siguen se puede utilizar, por ejemplo, <a href="http://checkstyle.sourceforge.net/">Checkstyle</a>, que se integra en Eclipse a través del <a href="http://eclipse-cs.sourceforge.net/">plugin</a> del mismo nombre.</p>
<p>La forma más sencilla de instalar este plugin es utilizar el sistema de actualizaciones de software de Eclipse. En el diálogo Help -> Software updates -> Available Software -> Add Site introducimos la URL desde la que instalar el plugin, &#8220;http://eclipse-cs.sourceforge.net/update&#8221;, marcamos nuestra nueva fuente y seleccionamos Install.<span id="more-2651"></span></p>
<p>Si entramos ahora en Window -> Preferences ->Checkstyle veremos las opciones de configuración relativas a Checkstyle. Como vemos en Global Check Configurations, Checkstyle utiliza por defecto las convenciones de la guía de estilo de Sun (Sun Checks), pero podemos editarlas o crear un nuevo conjunto de reglas fácilmente. El plugin también incluye un conjunto de normas basadas en las convenciones de Sun, ligeramente modificadas para adaptarse mejor a la configuración por defecto del formateador de código de Eclipse: Sun Checks (Eclipse).</p>
<p>Para activar Checkstyle para uno de nuestros proyectos haremos clic con el botón derecho sobre él, seleccionaremos Properties y en la sección dedicada a Checkstyle marcaremos Checkstyle active for this project. En esta sección podemos seleccionar también el conjunto de normas que nuestro proyecto debe de seguir, asi como posibles excepciones.</p>
<p>Una vez activado Checkstyle para el proyecto veremos los Warnings relativos a los estándares de código en la vista Problems, así como en el propio editor, donde las advertencias se muestran con fondo amarillo. También podemos recurrir a la vista Checkstyle violations (Window -> Show view -> Checkstyle -> Checkstyle violations), que está más especializada y permite agrupar los problemas, generar informes en formato rtf, y lanzar la vista Checkstyle violations chart, con un gráfico de tarta con los distintos problemas encontrados en el código.</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2009/03/03/eclipse-y-estandares-de-codigo/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>El código y las pruebas</title>
		<link>http://mundogeek.net/archivos/2007/10/24/el-codigo-y-las-pruebas/</link>
		<comments>http://mundogeek.net/archivos/2007/10/24/el-codigo-y-las-pruebas/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 17:13:49 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[citas]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[pruebas]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://mundogeek.net/archivos/2007/10/24/el-codigo-y-las-pruebas/</guid>
		<description><![CDATA[Escribir código sin pruebas automátizadas es como intentar usar ladrillos sin cemento. &#8211; Anónimo]]></description>
			<content:encoded><![CDATA[<blockquote><p>Escribir código sin pruebas automátizadas es como intentar usar ladrillos sin cemento.</p>
<p>&#8211; Anónimo</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2007/10/24/el-codigo-y-las-pruebas/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>El lenguaje de programación más popular en 2012</title>
		<link>http://mundogeek.net/archivos/2007/10/15/el-lenguaje-de-programacion-mas-popular-en-2012/</link>
		<comments>http://mundogeek.net/archivos/2007/10/15/el-lenguaje-de-programacion-mas-popular-en-2012/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 11:19:07 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[lenguajes]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://mundogeek.net/archivos/2007/10/15/el-lenguaje-de-programacion-mas-popular-en-2012/</guid>
		<description><![CDATA[Según los lectores de la bitácora los lenguajes de programación más populares en 2.012 serán: Java (173 votos) PHP (107 votos) C (86 votos) C++ (47 votos) Python (37 votos) Otros meritorios participantes han sido Visual Basic (35), C# (30), Ruby (10), COBOL (7), PL/SQL (7), Perl (6) o JavaScript (6). Gracias a todos los [...]]]></description>
			<content:encoded><![CDATA[<p>Según los lectores de la bitácora los <a href="http://mundogeek.net/archivos/2007/09/26/%c2%bflenguaje-de-programacion-mas-popular/" title="¿Lenguaje de programación más popular?">lenguajes de programación más populares en 2.012</a> serán:</p>
<ol>
<li>Java (173 votos)</li>
<li>PHP (107 votos)</li>
<li>C (86 votos)</li>
<li>C++ (47 votos)</li>
<li>Python (37 votos)</li>
</ol>
<p>Otros meritorios participantes han sido Visual Basic (35), C# (30), Ruby (10), COBOL (7), PL/SQL (7), Perl (6) o JavaScript (6).</p>
<p><img src="http://mundogeek.net/wp-content/lenguaje-mas-popular.png" alt="Lenguaje de programación más popular" title="Lenguaje de programación más popular"/></p>
<p>Gracias a todos los que respondisteis a la encuesta <img src='http://mundogeek.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2007/10/15/el-lenguaje-de-programacion-mas-popular-en-2012/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
	</channel>
</rss>

