Vous êtes sur la page 1sur 8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

Profesional(/blog/1/tag/11/profesional)

Tips(/blog/1/tag/33/tips)

3errorescomunesdelosprogramadores
GabrielKaplan(/blog/1/autor/5/gabrielkaplan) 21/05/2014

Aprendprogramacinydiseowebconnuestroscursos!(/cursos)

Enesteartculovoyahacerunrepasodelos3problemasmsrepetitivosdelosprogramadores
sinimportarellenguajeenquetrabajen.

Cdigomuylargo
Esteesunerrorqueadquirimosencuantoempezamosaprogramaryperduradeporvidaen
muchosprogramadores.Noestantounproblemadeprogramadoresinexpertos,sinode
programadoresdesprolijos.
Unadelasmximasquemegustaseguires:
ElcdigosedebepoderleeraPoderleerelcdigodeformasimpleselogramediante2cosas:

1. Elcdigonodebeextendersehacialaderecha
2. Elcdigonodebeextendersehaciaabajo

http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

1/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

Uncdigoqueesmuylargohacialaderechanosobligaahacerscrollhorizontal,conloque
rompemoselflujodelectura.
Uncdigoqueesmuylargohaciaabajonosobligaahacerscrollvertical,loquenosocultael
cdigoyavisto.
Lareglageneralesqueelcdigonodebesuperareltamaodelapantallaenningunadesus
formas.Estoesfcildelograr,yaquelamayoradeloslenguajespermite:
indicarcomentariosenvariaslneas
insertarsaltosdelneaenelcdigo
concatenarstringsendiferenteslneas
etc.

Variosaosatrslosprogramaseranengeneralmonolticos:pocosarchivosconmilesymilesde
lneasdecdigo.Esohizoquelosprogramadoresseacostumbraranavivirconcdigoquetena
variaspginasdelargo.
Enlaactualidadlosnuevoslenguajesposeenmuchaseparacinensusmetodologasdeuso,por
loquenoocurretantoelproblemaanterior.Perolosmonitoressoncadavezmsgrandesy
muchasveceslostiposdedatosposeennombresenormes(alindicarsupackageonamespace),
conloquelaslneassetornaninterminableshacialaderecha.
Elevitaresteerrornosbeneficiatantoanosotroscomoatodaslaspersonasquetenganque
mantenerelcdigoenelfuturo.

Cmoevitoqueelcdigoseamuylargo?
Lamejorformadeevitaresteproblemaesrefactorizando,osea,reestructurarelcdigo,alterando
laestructurainternasinmodificarsucomportamientoexterno.Alrefactorizarcreamossubmdulos
mspequeosquemejoranlaclaridadyconsistenciadelcdigo.
Existeunaespeciedereglaquedicequetodoarchivoqueposeamsde1000lneasdecdigo
debeserrefactorizado.Estopuedeonoserciertoyenciertoscasospuedeserimpracticable,pero
estbuenotenerloenmenteeintentarseguirlo.

Cuntocdigoesmuylargo?
Yonoescribocdigoqueocupemsdeunapantalla(13pulgadasengeneral).

Cdigodifcildemantener
Unacosaquenotomuchasvecesesquelosprogramadoressuelenprogramarparaelcompilador
msqueparalaspersonas.Porejemplo:
Noexistenloscomentarios:aunquemuchospuedendecirqueuncdigoconcomentarioesuncdigo
malescritoavecesloscomentariossonrealmenteimportantes.Ciertasdecisionesempresariales

http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

2/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

puedenhacerqueelcdigotomecaminosextraos.Encasodenodejarconstanciadeestas
decisiones,esmuydifcilqueelprximoprogramadorentiendaelporqudedichodesarrollo.
Nombresnodescriptivos:Unapesadilla.Unodebeadivinarparaquseutilizalavariable x .Otro
ejemploclsicosonlasfuncionesquecomienzancon"No".Nadiepuederesponderrpidamente"qu
devuelvelafuncin NoEsUnDiaDeSemana(string dia) cuandolepaso"jueves"? true o false ?
Omitirllaves:queanadieseleocurraagregarunanuevainstruccin...
Variasinstruccionesenlamismalnea:"Ah...unpuntoycomayelcdigosigue..."

Siempreestbuenorecordarelviejoproverbio:
Codificacomosielquefueraamantenertucdigofueseunmanacoasesinoquesabedondevives.

Tucdigodebepasarlasdospruebas:
Siotroprogramadorleeelcdigo,lovaaentender?
Sivosleselcdigodentrodeunaolovasaentender?

Estmuybienteneruncdigosperoptimizadoparaqueelcompiladorutilicemenosrecursos
peroesmuchomejorteneruncdigooptimizadoparaotrosprogramadores.

Optimizacinprematura
Losprogramadoresquenocometenningunodeloserroresanteriores,puedencometeresteerror.
Eltrmino"Optimizacinprematura"fueacuadoporDonaldKnuthen1974yhacereferenciaa
laspersonasquepiensanenoptimizarcadapartedeunsistemasinhacerunanlisisdel
rendimientoglobaldelaaplicacin.
EstetrminovadelamanoconelprincipiodePareto(oregladel8020):
El80%delosdefectosradicanenel20%delosprocesos

Haciendounanlisisgeneralsepuedenobtenerculessonloselementosqueparticipandentrode
unfalloeidentificanlosproblemasrealmenterelevantes.
Enbaseaesto,podemosobservarquenoesinteligentelargarseaoptimizarunaaplicacindela
culnoposeemosconocimientosglobalesdelrendimiento.Sinembargo,nohayqueconfundirla
nooptimizacinprematuraconescribircdigodeficiente,yaqueesonosllevaraalerroranterior.
Enlavidarealnoeslgicoperdermuchotiempooptimizandoprocesosquenohemosmedido,
cuandotenemosunafechadeentregadeltrabajo.Lomejorescrearcdigoqueseafcildeleer,
fcildeentenderyfuncione.Elsiguientepasoseranalizarlaaplicacinensuconjuntoparaver
qupartesnecesitanseroptimizadas.

Resumen
http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

3/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

Estossonalgunosdeloserroresquenossuelensurgirennuestravidacomoprogramadores,es
importanteconocerlosparaevitarlos.
Paraleermssobrecmomejorartucdigoterecomiendoesteartculo
(http://www.nebaris.com/post/65/8consejosparaescribirmejorcodigo).
Quopinsdeesteartculo?
GraciasporpasarporNebaris,cualquierconsultasobreesteartculolapodshacerenlos
comentariosoescribiendoahola@nebaris.com(mailto:hola@nebaris.com).

AutorGabrielKaplan

Programador,msicoyfundadordeNebaris.
ViveenCapitalFederalArgentina.
(https://www.facebook.com/gabrielfkaplan)

(https://twitter.com/gabriel_kaplan)

(https://plus.google.com/109747649621400754615)
(http://ar.linkedin.com/in/gabrielfkaplan)

Artculosrelacionados
6consideracionesantesdeconvertirseenfreelancer(/post/118/6consideracionesantesde
convertirseenfreelancer)
8consejosparaescribirmejorcdigo(/post/65/8consejosparaescribirmejorcodigo)
Los5mejoresIDEsparadesarrollarenlanube(/post/170/los5mejoresidesparadesarrollaren
lanube)
ControldeversionesconGITparte2(/post/42/controldeversionescongitparte2)
QuesKanban?(/post/258/queeskanban)

http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

4/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

//RECURSOSGRATISTODASLASSEMANAS
+1700personasyasesuscribieron.SuscribitevostambinalnewsletterTOOLBOXyrecibentuemail
unarecopilacinsemanaldelasherramientasmsimportantesparadiseoyprogramacin.Todoslos
mircoles.Fcildedesuscribirse.Nospam.Cuidamostudireccindeemailynolacompartimos.
VERIFICQUEELFILTRODESPAMNOBLOQUEENUESTROSEMAILS.
Direccindeemail

Nombre

SUSCRIBITE

9Comentarios
Recomendar

Nebaris

Compartir

Acceder

Ordenarporlosmsantigos

netealadiscusin...
Az haceunao

Comolehacesparaacortartucodigo,porqueelnumerodelineasesproporcionalalacomplejidad
delafuncion.

Responder Compartir

GabrielKaplan

Moderador >Az

haceunao

Laformamssimpleesrefactorizandolafuncin,enlugardetenerunafuncingrande,
tenemosvariaspequeas.
Cadafuncindebehacernicamenteloquedicesuttuloyelmismodebesercorto.Siuna
deesasdoscosasnosecumple,hayquemejorarelcdigo.
1

Responder Compartir

guillermohernandez haceunao

Estoydeacuerdoconcasitodoaexcepcindeloscomentarios,envisualstudiosiemprees
bastantetilcrearunsumaryquedespejecompletamentelasdudas,siempreparamiesagradable
usarunafuncinqueestabiencomentada,tepermitesaberoreafirmarparaquesirvecada
parametro,yaqueavecescuandonoconocesbienelcontextodelaaplicacinpuedesmalenteder
unparametro.
http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

5/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

unparametro.
Portodolodemsbastantebuenoelrticulo,ahunaltimocomentario,nodeberasponerde
referenciaeltamaodelmonitorsinolaresolucindeeste,oalmenosesocreo.
Saludos.
1

Responder Compartir

GabrielKaplan

Moderador >guillermohernandez

haceunao

Yoestoyafavordeloscomentarios.Eltextolodice"Elcdigoesdifcildemantener...sino
existenloscomentarios".
Esciertoqueseramejorhablardelaresolucindepantalla...peroesunpocoms
complicadodeentender.
1

Responder Compartir

guillermohernandez>GabrielKaplan haceunao

Yarevisebien,malentendelpuntoalverelcomentario"aunquemuchospueden
decirqueuncdigoconcomentarioesuncdigomalescrito".

Responder Compartir

ReneMorales hace10meses

Queaplicacionesrecomendarasparaevaluarelcodigoyelrendimientodeestastantoprocesos
comousodememoriaCPUytodoloqueinvolucranuestraaplicacinderecursos.

Responder Compartir

GabrielKaplan

Moderador >ReneMorales

hace10meses

EnVisualStudioutilizomuchoReSharper

Responder Compartir

will hace10meses

Nadamasciertoqueeso,mehatocadotrbajarconsolucionesen.NETconmasde13proyectos
todosenormesysincomentariosdequehaceoporquelohace,realmentedificildeentendera
primeravistaynisedigadeseguirundebugparaverquehaceunmetodopuedellevartehoras
comprenderloquehaceyporquelohace

Responder Compartir

GabrielKaplan

Moderador >will

hace10meses

Estuveenlamismasituacin...unasolucin.NETconmuchosproyectosyuna
arquitecturaconfusaydifcildeseguir...sinohaycomentarios...almenosdeberanhaber
testsparaentenderunpocoelcdigo

Suscrbete

Responder Compartir

AadeDisqusatusitioweb

http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

Privacidad

6/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

SEGUIR
(http://www.facebook.com/Nebaris)
(https://plus.google.com/108107755178419878328)
(https://twitter.com/nebarisweb)
(http://www.youtube.com/user/nebarisvideos)
(http://www.linkedin.com/company/nebaris)
(http://feeds.feedburner.com/Nebaris)

CATEGORAS
BackEnd(/blog/1/tag/8/backend)
Basesdedatos(/blog/1/tag/9/basesdedatos)
FrontEnd(/blog/1/tag/7/frontend)
Mvil(/blog/1/tag/10/movil)
Nebaris(/blog/1/tag/43/nebaris)
Profesional(/blog/1/tag/11/profesional)

BUSCADOR

+Visto
+Nuevo
CargarcombosencascadaconjQuery,PHPyMySQL(/post/38/cargarcombosencascadaconjqueryphp
ymysql)
WebServicesenC#(/post/40/webservicesencsharp)
TiposdeJOINenSQL(/post/77/tiposdejoinensql)
10erroresquecometcomonovatoenPHP/MySQL(/post/17/10erroresquecometicomonovatoenphp
mysql)
CmoimplementarpaginacinenPHP?(/post/41/comoimplementarpaginacionenphp)

TAGS
AJAX(/blog/1/tag/22/ajax)
ASP.NET(/blog/1/tag/20/aspnet)

Android(/blog/1/tag/27/android)

Apache(/blog/1/tag/29/apache)

ASP.NETMVC(/blog/1/tag/24/aspnetmvc)

http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

BackEnd(/blog/1/tag/8/backend)

7/8

24/4/2015

3errorescomunesdelosprogramadoresNebaris

Basesdedatos(/blog/1/tag/9/basesdedatos)
CodeIgniter(/blog/1/tag/32/codeigniter)
Cursos(/blog/1/tag/67/cursos)

Bootstrap(/blog/1/tag/51/bootstrap)

Codingdojo(/blog/1/tag/62/codingdojo)

Ebook(/blog/1/tag/48/ebook)

Eventos(/blog/1/tag/35/eventos)

EntityFramework(/blog/1/tag/42/entityframework)

FrontEnd(/blog/1/tag/7/frontend)

GoogleChrome(/blog/1/tag/30/googlechrome)
InternetExplorer(/blog/1/tag/55/internetexplorer)
JavaScript(/blog/1/tag/3/javascript)

ObjectiveC(/blog/1/tag/39/objectivec)
PHP(/blog/1/tag/17/php)

Python(/blog/1/tag/52/python)

Markdown(/blog/1/tag/47/markdown)

Mvil(/blog/1/tag/10/movil)

Opinin(/blog/1/tag/60/opinion)

MySQL(/blog/1/tag/14/mysql)
NUnit(/blog/1/tag/65/nunit)

PhoneGap(/blog/1/tag/36/phonegap)

Profesional(/blog/1/tag/11/profesional)

Seguridad(/blog/1/tag/45/seguridad)

SoftwareLibre(/blog/1/tag/64/softwarelibre)

SQL(/blog/1/tag/15/sql)

TDD(/blog/1/tag/54/tdd)

Twitter(/blog/1/tag/44/twitter)

Java(/blog/1/tag/5/java)

JSON(/blog/1/tag/21/json)

RaspberryPi(/blog/1/tag/63/raspberrypi)

Scrum(/blog/1/tag/40/scrum)

SVG(/blog/1/tag/66/svg)

jQuery(/blog/1/tag/4/jquery)

Negocios(/blog/1/tag/58/negocios)

POO(/blog/1/tag/34/poo)

Git(/blog/1/tag/26/git)

HTML(/blog/1/tag/2/html)

iOS(/blog/1/tag/28/ios)

LINQ(/blog/1/tag/23/linq)

Metodologas(/blog/1/tag/19/metodologias)
Nebaris(/blog/1/tag/43/nebaris)

CSS(/blog/1/tag/1/css)

Expresionesregulares(/blog/1/tag/31/expresionesregulares)

Freelance(/blog/1/tag/46/freelance)

Kanban(/blog/1/tag/69/kanban)

C#(/blog/1/tag/6/csharp)

Ruby(/blog/1/tag/37/ruby)
SEO(/blog/1/tag/49/seo)

SQLServer(/blog/1/tag/16/sqlserver)

Tips(/blog/1/tag/33/tips)

TypeScript(/blog/1/tag/59/typescript)

VisualBasic.NET(/blog/1/tag/68/visualbasicnet)

Pure(/blog/1/tag/61/pure)

Toolbox(/blog/1/tag/38/toolbox)
UX(/blog/1/tag/18/ux)

WindowsAzure(/blog/1/tag/50/windowsazure)

Wireframing(/blog/1/tag/53/wireframing)

XML(/blog/1/tag/25/xml)

(http://www.facebook.com/Nebaris)
(https://plus.google.com/108107755178419878328)
(https://twitter.com/nebarisweb)
(http://www.youtube.com/user/nebarisvideos)
(http://www.linkedin.com/company/nebaris)
(http://feeds.feedburner.com/Nebaris)
20132015

http://www.nebaris.com/post/147/3errorescomunesdelosprogramadores

8/8