<?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>Juanmi Rodriguez &#187; consejos</title>
	<atom:link href="http://juanmirodriguez.es/tag/consejos/feed/" rel="self" type="application/rss+xml" />
	<link>http://juanmirodriguez.es</link>
	<description>Algo más que un programador web</description>
	<lastBuildDate>Sun, 22 Jan 2012 15:57:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Si solo tienes un martillo&#8230;</title>
		<link>http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/</link>
		<comments>http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 19:19:01 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[consejos]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=82</guid>
		<description><![CDATA[&#8230; Al final todo acaba pareciéndote un clavo. He leído este refrán en alguna ocasión en artículos técnicos y creo que tiene mucha razón. No voy a escribir mucho sobre él, mis retinas no lo soportarían, pero creo que es &#8230; <a href="http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#8230; Al final todo acaba pareciéndote un clavo. He leído este refrán en alguna ocasión en artículos técnicos y creo que tiene mucha razón. No voy a escribir mucho sobre él, mis retinas no lo soportarían, pero creo que es bastante claro.</p>
<p>Yo estoy totalmente de acuerdo, es necesario conocer y aprender a utilizar otras herramientas, lenguajes de programación, técnicas, APIs&#8230; Hay un mundo enorme ahí fuera que puede facilitarnos mucho la vida si buscamos un poco. Tal vez nuestro entorno de programación no sea el mejor, tal vez haya un framework o una API que hace lo que estamos programando de forma mucho más eficiente, limpia y reutilizable.</p>
<p>¿Alguna vez habéis pensado: &#8220;Sé hacerlo, pero voy a mirar si podría hacerlo mucho mejor o en menos tiempo de otra forma&#8230;.&#8221; ?</p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2010/02/si-solo-tienes-un-martillo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La documentación, esa gran desconocida. I</title>
		<link>http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/</link>
		<comments>http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:02:45 +0000</pubDate>
		<dc:creator>Juanmi</dc:creator>
				<category><![CDATA[Consejos de programación]]></category>
		<category><![CDATA[consejos]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[documentación]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[quicksort]]></category>

		<guid isPermaLink="false">http://poramoralcodigo.juanmirodriguez.es/?p=19</guid>
		<description><![CDATA[Cuando trabajas en un grupo de desarrollo en un proyecto largo te empiezas a dar cuenta de algunas cosas. Recuerdas esas clases en las que los profesores te decían que era importante documentar el código. Te acuerdas de sus consejos sobre mantener el código ordenado y utilizar nombres de variables legibles. Y con más frecuencia de la que quisieras, te acuerdas de la madre de Mengano.

El otro día leí una máxima para programadores que me encantó:

Write your code as if the next guy to maintain it is a homicidal maniac who knows where you live
(by Kathy Sierra and Bert Bates) <a href="http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cuando trabajas en un grupo de desarrollo en un proyecto largo te empiezas a dar cuenta de algunas cosas. Recuerdas esas clases en las que los profesores te decían que era importante documentar el código. Te acuerdas de sus consejos sobre mantener el código ordenado y utilizar nombres de variables legibles. Y con más frecuencia de la que quisieras, te acuerdas de la madre de Mengano.</p>
<p>El otro día leí una máxima para programadores que me encantó:</p>
<blockquote>
<h3 style="font-size: 13px; color: #333333; font-weight: normal; overflow-x: hidden; overflow-y: hidden; padding: 0px; margin: 0px;"><span>Write your code as if the next guy to maintain it is a homicidal maniac who knows where you live </span></h3>
<p><span>(by Kathy Sierra and Bert Bates)</span></p></blockquote>
<p>Me parece un gran consejo y es que parece que nadie piensa jamas que la documentación y el código correcto sea una prioridad. Hasta que le toca a él mantener el código de otro.</p>
<p>Como ejemplo veremos una pequeña porción de código. Es un algoritmo que me encanta y que ilustra muy bien lo que quiero decir:</p>
<pre>void quicksort(int array[M], int in, int f){
	int pv, i, j, m;
	bool hc;

	if(in &lt; f){
		pv = array[in];
		i = in+1;
		j = f;
		hc= true;
		while(hc){
			while((array[i] &gt;= pv)&amp;&amp;(i &lt; f )) i++;
			while((array[j] &lt; pv)&amp;&amp;(j &gt; im)) j–-;

			if(i &lt; j) interc(array[i], array[j]);
			else hc= false;
		}         

		if(array[j][0] &gt; pv) interc(array[j], array[in])

		quicksort(array, in, j-1);
		quicksort(array, j+1, f);
	}
}</pre>
<p>Eso de ahí arriba es el <a href="http://es.wikipedia.org/wiki/Quicksort" target="_blank">Quick Sort</a>. Desde luego no se entiende nada. No hay comentarios, las variables estan nombradas con una o dos letras, está pobremente sangrado&#8230; En definitiva, e programador no se molestó mas que en que funcionara, cuanto tenga que corregir errores o cuando alguien tenga que analizar éste código su madre será recordada junto a esquinas y callejones oscuros&#8230; Sin embargo, esto puede evitarse, este código puede mejorarse de forma que todo el mundo entienda qué es lo que el programador quería hacer:</p>
<pre>/* Quicksort: El algoritmo quicksort consiste en ordenar
un array mediante recursividad. Esta versión del algoritmo toma como pivote el dato en la
primera posición del array y luego lo coloca en su sitio.
Argumentos:
int individuos[M] -&gt; el array a ordenar
int inicio -&gt; primera posición de la parte del array a ordenar
int fin -&gt; última posición de la parte del array a ordenar */
void quicksort(int individuos[M], int inicio, int fin){
	int pivote, i, j, mitad;
	bool hayCambio;

	//caso base: si inicio&gt;=fin hemos terminado con esta sección, no hacemos nada
	if(inicio &lt; fin){
		pivote = individuos[inicio];
		i = inicio+1;
		j = fin;
		hayCambio = true;

		while(hayCambio){

                        //busca un elemento mayor que el pivote por debajo de él
			while((individuos[i] &gt;= pivote)&amp;&amp;(i &lt; fin )) i++;

                        //busca un elemento menor que el pivote por encima de él
			while((individuos[j] &lt; pivote)&amp;&amp;(j &gt; inicio)) j–-;

			if(i &lt; j){ //intercambiamos las casillas
				intercambia(individuos[i], individuos[j]);
			}else{
				hayCambio = false;
			}
		}         

		//ponemos el pivote en su posición
		if(individuos[j][0] &gt; pivote){
			intercambia(individuos[j], individuos[inicio])
		}

		//llamadas recursivas para las dos mitades
		quicksort(individuos, inicio, j-1);
		quicksort(individuos, j+1, fin);
	}
}</pre>
<p>Puede que sigáis sin comprender por qué funciona el quicksort: no os preocupéis, es normal. Lo importante es que aun así, ahora habréis podido comprender que pretende hacer cada parte del código, para que sirve esta función y que significa cada variable. La diferencia creo que es bastante sustancial, pero pronto veremos más ejemplos de por qué documentar ^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://juanmirodriguez.es/2009/11/la-documentacion-esa-gran-desconocida-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

