<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3906101238479826998</id><updated>2012-02-15T23:46:48.958-08:00</updated><category term='ruby'/><category term='ror'/><category term='ruby on rails'/><category term='Code Smells'/><title type='text'>Better Programmer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ernesto</name><uri>http://www.blogger.com/profile/17378294148089990400</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3906101238479826998.post-6260783706951822544</id><published>2008-08-17T12:38:00.000-07:00</published><updated>2008-08-17T12:44:00.608-07:00</updated><title type='text'>Spec#</title><content type='html'>Hace unos días ya del último post, y después de los comentarios de Humberto me animo a lanzar este otro post, también enlazado al tema del diseño por contrato (DbC).&lt;br /&gt;&lt;br /&gt;Probablemente este sea un tema que aunque sabemos es muy interesante, haya quedado como “engavetado” por muchos de nosotros, tal vez por la incapacidad de los lenguajes o tal vez por la motivación de aprender otras prácticas.&lt;br /&gt;&lt;br /&gt;Dejándome llevar por la motivación de aprender (en aquel momento TDD) leí el artículo del post pasado y al llegar al final vi que se enumeraban otras alternativas al framework que ahí se utilizó. Las alternativas se muestran siguiendo un orden, que desconozco los elementos que se tuvieron en cuenta para realizarlo, pero se presentan de la alternativa más cruda a la mejor.&lt;br /&gt;&lt;br /&gt;Como programador al fin me fui a analizar los casos extremos, así que le di un vistazo a la más cruda, pero estaba tan cruda que no la pude digerir, se trataba de lanzar excepciones con validaciones en el código, esto no creo que valga la pena ni analizarlo, así que pase directamente a la mejor de las opciones enumeradas, Spec#.&lt;br /&gt;&lt;br /&gt;En el artículo dice textualmente: &lt;span style="font-weight: bold; font-style: italic;"&gt;Option 7&lt;/span&gt;&lt;span style="font-style: italic;"&gt;. Microsoft's Spec# project is researching adding DbC to C#. It looks comparable in sophistication to Eiffel, but Spec# is unfinished: it's not licensed for commercial development. Microsoft's recent announcements about C# 3.0 didn't mention it, but hopefully DbC will make it into C# 4.0 ... whenever that may be.&lt;/span&gt;&lt;br /&gt;Interesante verdad??&lt;br /&gt;&lt;br /&gt;Aunque se menciona como la mejor de las alternativas, se dice que no estaba terminado. El artículo estaba fechado 2 Feb 2008, dos años atrás.. Y fue que me dije, deja ver que han pasado en estos dos años y fui a visitar el sitio. Uds pueden visitarlo en esta dirección: &lt;a href="http://research.microsoft.com/SpecSharp/"&gt;http://research.microsoft.com/SpecSharp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Según tengo entendido aun el proyecto está en desarrollo, pero ya lo podemos utilizar (creo que la limitante de que no existe licencia para uso comercial continúa), yo he bajado la instalación que ahí tienen y funciona perfecto. Creo que donde está un poco flojo es en las ultimas adiciones a C# con el framework 3.5, lambda expression, LINQ, etc. Yo al menos estoy trabajando en 2.0 y lo poquito que he visto, esta genial, no me esperé que estuviera tan avanzado.&lt;br /&gt;&lt;br /&gt;Como se han percatado no es un lenguaje nuevo, es simplemente una extensión a C#, por lo tanto uno programa sencillamente en C# pero puede utilizar algunas nuevas sintaxis soportadas por Spec#. Se habla de incluir todo esto en futuros releases de .NET, interesante.&lt;br /&gt;&lt;br /&gt;Spec# adiciona a C# la posibilidad de distinguir en la declaración de una variable si la variable no podrá ser referenciada a NULL, esto se conoce como: &lt;span style="font-style: italic;"&gt;non-null object references &lt;/span&gt;(adios a las condiciones que preguntan por null en nuestro código), ofrece especificaciones para los métodos como pre y post condiciones, una disciplina para el manejo de excepciones y brinda soporte para expresar invariantes a nuestras clases.&lt;br /&gt;&lt;br /&gt;Me parece un tema bonito, algo que he sacado de la “gaveta” y que quisiera compartir con uds. Me alegra muchísimo que Humberto haya estado hurgando en el tema pues con su experiencia podremos ver si esto tiene futuro y quién sabe si esto es lo que nos tiene preparado Microsoft para después de LINQ…&lt;br /&gt;&lt;br /&gt;Si les interesa el tema instalen la extensión a C# y en próximos post entramos en la materia, discutiendo ventajas y desventajas…&lt;br /&gt;&lt;br /&gt;Espero sus comentarios.&lt;br /&gt;Erlis&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3906101238479826998-6260783706951822544?l=better-programmers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/6260783706951822544/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3906101238479826998&amp;postID=6260783706951822544' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/6260783706951822544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/6260783706951822544'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/2008/08/spec.html' title='Spec#'/><author><name>Erlis Vidal</name><uri>http://www.blogger.com/profile/06011037470148116038</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_XIo__pjZ0Tk/TDccIW5FlDI/AAAAAAAAHug/d2bBCDIpgwQ/S220/Untitled.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3906101238479826998.post-2854996609352071609</id><published>2008-08-05T05:33:00.000-07:00</published><updated>2008-08-05T07:00:50.736-07:00</updated><title type='text'>Introduciendo Diseño por Contrato al Test Driven Development!</title><content type='html'>Hola a todos!&lt;br /&gt;&lt;br /&gt;Me animo a escribir pues hace poco estaba leyendo unos artículos de &lt;span style="font-weight: bold;"&gt;Test Driven Development &lt;/span&gt;(TDD) y por casualidad encontré uno que me ha motivado a investigar más sobre algo que ya todos conocemos, &lt;span style="font-weight: bold;"&gt;Diseño por Contrato&lt;/span&gt; (DbC).&lt;br /&gt;&lt;br /&gt;La verdad es que no se cuantos de uds. están usando TDD o no; y se que solamente este tema abarcaría un muy interesante intercambio en el blog; pero el objetivo principal de este post (y los posteriores que pretendo publicar) es enfocarnos en conocer lo que ya se ha logrado con DbC utilizando C#.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;En este artículo no se explica en profundidad ninguna de las dos técnicas. Y la idea es hacer notar como podemos mejorar una usando la otra.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero que les guste y les motive tanto como a mi. Aquí va el artículo:&lt;span style="font-style: italic;"&gt; &lt;a href="http://www.codeproject.com/KB/architecture/DbCwithXCSharp.aspx"&gt;http://www.codeproject.com/KB/architecture/DbCwithXCSharp.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A mi entender, XC# no es la mejor herramienta para utilizar DbC&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;pero lo que creo importante en este artículo no es la herramienta, sino los conceptos.&lt;br /&gt;&lt;br /&gt;Sobre un mejor acercamiento a DbC en C# tratará el próximo post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Noten en las alternativas a XC# como se hace referencia a nuestro querido Miguel Katrib.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Happy programming, not debugging!&lt;br /&gt;Erlis&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3906101238479826998-2854996609352071609?l=better-programmers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/2854996609352071609/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3906101238479826998&amp;postID=2854996609352071609' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/2854996609352071609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/2854996609352071609'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/2008/08/introduciendo-diseo-por-contrato-al.html' title='Introduciendo Diseño por Contrato al Test Driven Development!'/><author><name>Erlis Vidal</name><uri>http://www.blogger.com/profile/06011037470148116038</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_XIo__pjZ0Tk/TDccIW5FlDI/AAAAAAAAHug/d2bBCDIpgwQ/S220/Untitled.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3906101238479826998.post-4060821615896153512</id><published>2008-06-30T17:39:00.000-07:00</published><updated>2008-06-30T18:09:00.830-07:00</updated><title type='text'>Las 9 reglas para un mejor diseño de software</title><content type='html'>Hace algunos días, por recomendación de un amigo (Karel para los que lo conocen), lei algunos artículos de un libro llamado The ThoughtWorks Anthology (tengo el libro en pdf para el que le interese), y me llamo la atención un articulo llamado “Object Calisthenics”, acerca de un conjunto de reglas, por cierto bien restrictivas, para lograr según el autor Jeff Bay, (un ThoughtWorker, es decir trabaja en ThoughtWorks) un mejor diseño del software. Aquí abajo enunciare en español, las 9 reglas, que muchas de ellas a primera vista les parecerán un disparate, y difícil de seguir al pie de la letra. El autor para probar que puede usarse en cualquier proyecto de software, acaba de terminar uno con más de 100 000 líneas de código, usando las 9 reglas.&lt;br /&gt;&lt;br /&gt;Pues sin mas, aqui van:&lt;br /&gt;&lt;br /&gt;1-      Usa solo un nivel de indentación por método (Use only one level of indentation per method).&lt;br /&gt;&lt;br /&gt;2-      No uses el “else” dentro de una condicional (Don’t use the else keyword).&lt;br /&gt;&lt;br /&gt;3-      Usa Wrappers para los tipos primitivos y las cadenas (Wrap all primitives and strings)&lt;br /&gt;&lt;br /&gt;4-      Solo usa un punto por línea (Use only one dot per line).&lt;br /&gt;&lt;br /&gt;5-      No abrevies (Don’t abbreviate).&lt;br /&gt;&lt;br /&gt;6-      Mantén las clases pequeñas (Keep all entities small)&lt;br /&gt;&lt;br /&gt;7-      No utilices una clase que tenga mas de 2 variables de instancia.(Don’t use any classes with more than two instance variables)&lt;br /&gt;&lt;br /&gt;8-      Una clase que contenga una colección no debe contener otras variables de instancia (Use first-class collections).&lt;br /&gt;&lt;br /&gt;9-      No use setters y getters (Don’t use any getters/setters/properties).&lt;br /&gt;&lt;br /&gt;La explicacion de cada una de las reglas, y las razones del autor estan en el ensayo que forma parte del libro The ThoughtWorks Anthology ,y los interesados que me escriban y pondre el libro en alguna parte. No se han hecho esperar las reacciones (el libro salio Marzo 2008), pongan Object Calisthenics en google y veran pros y contra.&lt;br /&gt;&lt;br /&gt;Se embullan a hacer la prueba? Ya yo lo estoy intentando  y en un proximo post, les dire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3906101238479826998-4060821615896153512?l=better-programmers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/4060821615896153512/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3906101238479826998&amp;postID=4060821615896153512' title='23 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/4060821615896153512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/4060821615896153512'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/2008/06/las-9-reglas-para-un-mejor-diseo-de.html' title='Las 9 reglas para un mejor diseño de software'/><author><name>Ernesto</name><uri>http://www.blogger.com/profile/17378294148089990400</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3906101238479826998.post-635888476331719225</id><published>2008-06-20T15:58:00.000-07:00</published><updated>2008-06-20T17:13:26.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><title type='text'>AUMENTA LA PRODUCTIVIDAD CON RUBY ON RAILS</title><content type='html'>Quizas hayan escuchado de &lt;a href="http://www.rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt; (RoR). Para los que no, este es un framework que desde hacer unos 3 años a causado una explosión en lo referente a programación web. Tanto así que hay toda una subcultura y culto en la red alrededor de este framework.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¿ Pero que es Ruby on Rails ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Según su sitio web Ruby on Rails es: "Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustaintable productivity. It lets you write beautiful code by favoring convention over configuration." En pocas palabras y en mi experiencia, es un framework que te ayuda a organizarte mejor para llevar a cabo proyectos relativamente grandes, permitiendo aumentar la productividad hasta un 70% en comparación con otros proyectos con Spring, Tapestry y Struts. Creado por &lt;a href="http://www.loudthinking.com/"&gt;David Heinemeier Hansson&lt;/a&gt; (DHH) cuando estaba desarrollando la aplicación &lt;a href="http://www.basecamphq.com/"&gt;BaseCamp&lt;/a&gt;  en &lt;a href="http://www.37signals.com/"&gt;37signals&lt;/a&gt;. DHH un tiempo después de publicarse BaseCamp regalo su framework llamandolo Ruby on Rails.&lt;br /&gt;&lt;br /&gt;Sus puntos fuertes son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Uso de lenguaje &lt;a href="http://www.ruby-lang.org"&gt;Ruby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Convention over Configuration (&lt;a href="http://en.wikipedia.org/wiki/Convention_over_Configuration"&gt;CoC&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Don´t Repeat Your Self (&lt;a href="http://wiki.rubyonrails.org/rails/pages/DRY"&gt;DRY&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;¿ Por qué es tan productivo RoR ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bueno, como dice el dicho, ver para creer, aquí les va un link de los muchos que hay en &lt;a href="http://www.youtube.com/watch?v=Gzj723LkRJY"&gt;youtube&lt;/a&gt;  y si quieren pueden ver ese mismo video con &lt;a href="http://media.rubyonrails.org/video/rails_take2_with_sound.mov"&gt;mejor calidad aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Impacto de RoR&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;RoR ha llamado la atención de mucha gente, tanto grandes como pequeños, de hecho Microsoft creo que tiene un demo para agregar Ruby y RoR en su framework &lt;a href="http://www.sapphiresteel.com/"&gt;Visual Studio&lt;/a&gt;.&lt;br /&gt;Algunos otros lenguajes de programación más convensionales han desarrollado frameworks tratado de adoptar la filosofia que ha logrado el exito de RoR como son:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PHP: &lt;a href="http://cakephp.org/"&gt;CAKEPHP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;JAVA: &lt;a href="http://groovy.codehaus.org/"&gt;GROOVY&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Grandes aplicaciones han migrado a RoR y apostado por este relativamente nuevo framework:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.basecamphq.com/"&gt;BaseCamp&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.shopify.com/"&gt;Shopify&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Como empezar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para los que deseen empezar a usar RoR y no maltratarse con el notepad y la línea de comandos, pueden usar estos editores: Windows, Linux &lt;a href="http://aptana.com/"&gt;Aptana&lt;/a&gt;, para los que usen MAC &lt;a href="http://macromates.com"&gt;TextMate&lt;/a&gt;. Si les parece intersante RoR, aquí les van los libros indispensables:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://pragprog.com/titles/ruby/programming-ruby"&gt;Programming Ruby: The Pragmatic Programmer's Guide, Second Edition&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; &lt;a href="http://pragprog.com/titles/rails2/agile-web-development-with-rails"&gt;Agile Web Development with Rails: Second Edition, 2nd Edition&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; &lt;a href="http://pragprog.com/titles/fr_arr/advanced-rails-recipes"&gt;Advanced Rails Recipes&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Otros sitios:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://ryandaigle.com/"&gt;Ryan Daigle Craps&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; &lt;a href="http://nubyonrails.com/"&gt;Nuby on Rails&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://railscasts.com/"&gt;RailsCasts&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Bueno, espero que les haya sido interesante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3906101238479826998-635888476331719225?l=better-programmers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/635888476331719225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3906101238479826998&amp;postID=635888476331719225' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/635888476331719225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/635888476331719225'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/2008/06/aumenta-la-productividad-con-ruby-on.html' title='AUMENTA LA PRODUCTIVIDAD CON RUBY ON RAILS'/><author><name>LFung</name><uri>http://www.blogger.com/profile/07466507970540588601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3906101238479826998.post-642025814253133556</id><published>2008-06-20T11:39:00.000-07:00</published><updated>2008-06-20T12:43:51.384-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Smells'/><title type='text'>La 2da piedra!!! "Code Smells"</title><content type='html'>Al parecer por falta de tiempo en estos días, nadie ha querido romper el hielo en este blog (me refiero a los 3 contribuyentes que ya se han apuntado en este blog), yo rompí el hielo (gastando algún tiempo buscando donde poner el blog) y lance la primera piedra, al parecer me tocara lanzar la segunda.&lt;br /&gt;&lt;br /&gt;Empezare por algo que he visto últimamente reflejado en varias publicaciones. El que halla programado por algún tiempo habrá notado y se ha dicho, "este código esta feo" y en busca de la perfección lo cambia una y otra vez, porque no le cuadra como quedan las clases, o los paquetes, métodos muy largos, o no se, simple intuición.&lt;br /&gt;&lt;br /&gt;Para que el que no lo sabe (hasta hace poco yo no lo sabia), hay un termino en ingles "Code Smells" para definir este tipo de "código feo", no me aventuro a traducir al español este termino, y no es mas que practicas cuando programamos que debiéramos evitar, o que vemos y compulsivamente deberíamos tratar de refactorizarlas y cambiarlas por el bien del sistema que estamos "construyendo" y ya veran el por que en los artículos recomendados abajo. Este termino fue bautizado por Kent Beck, un guru de la programación ágil, y que ayudaba a Martin fowler (otro guru mas www.martinfowler.com), cuando escribía el libro "Refactoring: Improving the Design of Existing Code" (yo lo tengo en PDF para el que lo quiera, se los recomiendo), y es allí donde definen, los famosos "Code Smells". Pero dejémosle a los especialista las explicaciones, aquí pongo algunos artículos sobre "Code Smell" para los interesados, ya que no valdría la pena que yo le dijera en español, lo que esta bien explicadito en ingles :D.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://martinfowler.com/bliki/CodeSmell.html" target="_blank"&gt;http://martinfowler.com/bliki/CodeSmell.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.java.net/bin/view/People/SmellsToRefactorings" target="_blank"&gt;http://wiki.java.net/bin/view/People/SmellsToRefactorings&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000589.html" target="_blank"&gt;&lt;br /&gt;http://www.codinghorror.com/blog/archives/000589.html&lt;/a&gt; &lt;span style="font-weight: bold;"&gt;(gracias al Karel)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PD: Bueno no soy buen escritor, pero si quería terminar de abrir el blog, y que todos nos ayudemos a mejorarnos como programadores, asi que espero que los mas especialistas, empiecen a contribuir y que nos hagamos la costumbre de revisar al menos una vez al día, y comentar sobre los artículos que se postean, dentro de ese apretado tiempo de que todos disfrutamos. Y que cualquier puede postear, y sino tiene tiempo de entrar o algo que lo mande a los otros, para postearlo.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3906101238479826998-642025814253133556?l=better-programmers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/642025814253133556/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3906101238479826998&amp;postID=642025814253133556' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/642025814253133556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/642025814253133556'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/2008/06/la-2da-piedra-code-smells.html' title='La 2da piedra!!! &quot;Code Smells&quot;'/><author><name>Ernesto</name><uri>http://www.blogger.com/profile/17378294148089990400</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3906101238479826998.post-1215606882931236333</id><published>2008-06-17T13:22:00.000-07:00</published><updated>2008-06-17T17:20:51.003-07:00</updated><title type='text'>Nace el blog</title><content type='html'>Queremos crear un blog para compartir informacion relacionada con el mundo de la programacion, los nuevos lenguajes y tendencias. Creo que sera mejor que enviar emails, asi tenemos toda la informacion concentrada en una pagina, donde todos podemos ver y discutir sobre cuestiones de programacion y asi ser mejores programadores.&lt;br /&gt;&lt;br /&gt;We want to have a blog to share information related to  programming, OO design and principles, languages and new tendencies within the IT industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3906101238479826998-1215606882931236333?l=better-programmers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://better-programmers.blogspot.com/feeds/1215606882931236333/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3906101238479826998&amp;postID=1215606882931236333' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/1215606882931236333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3906101238479826998/posts/default/1215606882931236333'/><link rel='alternate' type='text/html' href='http://better-programmers.blogspot.com/2008/06/nace-el-blog.html' title='Nace el blog'/><author><name>Ernesto</name><uri>http://www.blogger.com/profile/17378294148089990400</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
