SlideShare una empresa de Scribd logo
Drupal y la
Programación
defensiva
(Evitemos bugs!)
Acerca de
edutrul
Eduardo Telaya
Trabajo con Drupal por 5+ años.
Inice con Java(jsf, sprint, hibernate, etc)
C#, C++
Profesor en la Universidad Autónoma
del Perú.
Contribuidor de Drupal(Mentor de
drupal Sprints y expostor)
Hackatonero(más de 30 hackathons a
nivel nacional y mundial) usando
Drupal y otras tecnologías.
Peruano de nacimiento
Empecemos!
Programación defensiva
La programación defensiva, simplemente, es la
programación con la intención de anticipar los puntos
de falla probable. El objetivo es eludir esos probables
problemas antes de que ocurran. Usted ve el
problema, ¿verdad? Hay algo intrínsecamente difícil
con el consejo "esperar lo inesperado" y se hace
muchas veces peor cuando uno lo altera para "esperar
lo inesperado y tratar de prevenirlo".
El clásico error! Variable no asignada
Notice: Undefined variable…
Esto pasa ya que la variable no ha sido definido y es usado
en el código
La variable no fue asignada!(Incorrecto)
function _get_current_event() {
if ($type === ‘events`) {
// Your logic goes here.
}
}
Notice: Undefined variable in example_node_view()
La variable nunca fue asignada(correcto)
function _get_current_event() {
$type = ‘events’;
if ($type === ‘events`) {
// Your logic goes here.
}
}
Notice: Undefined variable in example_node_view()
El clásico error! Indice no definido
Notice: Undefined index: und in example_node_view()
Esto pasa ya que el Indice a acceder no existe!. Pasa
normalmente cuando accedemos a un campo con X atributo
pero este X atributo nunca fue agregado! Y se asume que
siempre estara con este valor! Pero NO!
No asumas que el campo siempre estara!
$url =
$node->field_link[LANGUAGE_NONE][0]['url'];
Notice: Undefined index: und in example_node_view()
En vez de eso valida si estara!
if (!empty( $node->field_link[LANGUAGE_NONE][0]['url'])) {
$url = $node->field_link[LANGUAGE_NONE][0]['url'];
}
http://www.google.com
Comparación de cadenas!
NO USES ==
Sino usa ===
para comparar cadenas
Comparación de cadenas (incorrecto)
// returns TRUE
$type = 0;
print ($type == 'events') ? 'true' : 'false';
Incorrecto!!!
Comparación de cadenas! (correcto)
// returns FALSE
$type = 0;
print ($type === 'events') ? 'true' : 'false';
Faltan argumentos en el parámetro
Warning: Missing argument 2 for _example_foo(), called in
Esto pasa ya que el método/función necesita un parámetro a
ser completado! Una manera de evitar esto es asignarle un
valor por defecto al párametro.
Argumentos en parámetro(incorrecto)
_example_foo('key_1');
function _example_foo($key, $value) {
if ($value <= 100) {
// DO some logic.
}
}
Warning: Missing argument 2 for _example_foo()
Argumentos en parámetro (correcto)
_example_foo('key_1');
function _example_foo($key, $value = 100) {
if ($value <= 100) {
// DO some logic.
}
}
Warning: Missing argument 2 for _example_foo()
¿Preguntas o
comentarios?
AnexosConcepto de programación defensiva
https://es.wikipedia.org/wiki/Programaci%C3%B3n_defensiva
Errores comunes en php
http://kumar.swatantra.info/common-php-error-messages/
Más tips de programación defensiva
https://www.sitepoint.com/more-tips-for-defensive-programmin
g-in-php/
GRACIAS!!

Más contenido relacionado

Destacado

Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014
Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014
Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014
Declan Waugh
 
La hosteleria 22 Marta Pedra Wines (2)
La hosteleria 22 Marta Pedra Wines (2)La hosteleria 22 Marta Pedra Wines (2)
La hosteleria 22 Marta Pedra Wines (2)
Ocio Vital
 
Presentacio nova cultura de la salut Toni Barbarà
Presentacio nova cultura de la salut Toni BarbaràPresentacio nova cultura de la salut Toni Barbarà
Presentacio nova cultura de la salut Toni Barbarà
Dempeus Salut Pública
 
Relatório Caminhos para a produtividade - Indústria 4.0
Relatório Caminhos para a produtividade - Indústria 4.0Relatório Caminhos para a produtividade - Indústria 4.0
Relatório Caminhos para a produtividade - Indústria 4.0
Fundação Dom Cabral - FDC
 
The Winning Brand Formula
The Winning Brand Formula  The Winning Brand Formula
The Winning Brand Formula
Leik Hong, Leow 廖翊翃
 
International Public Relations - Overview
International Public Relations - OverviewInternational Public Relations - Overview
International Public Relations - Overview
Chip Lowe
 
Challenges in Extracting and Managing References
Challenges in Extracting and Managing ReferencesChallenges in Extracting and Managing References
Challenges in Extracting and Managing References
GESIS
 
結晶と空間充填 #ロマ数ボーイズ
結晶と空間充填 #ロマ数ボーイズ結晶と空間充填 #ロマ数ボーイズ
結晶と空間充填 #ロマ数ボーイズ
hinge dearsip
 
Treatment of tb with sirturo
Treatment of tb with sirturoTreatment of tb with sirturo
Treatment of tb with sirturoKishore Chinna
 
Toma de muestra para analisis microbiologico de la leche y productos lacteos.
Toma de muestra para analisis microbiologico de la leche y productos lacteos.Toma de muestra para analisis microbiologico de la leche y productos lacteos.
Toma de muestra para analisis microbiologico de la leche y productos lacteos.UO
 
Document Writing in CI Environment
Document Writing in CI EnvironmentDocument Writing in CI Environment
Document Writing in CI Environment
Recruit Technologies
 
Open Source Governance - The Hard Parts
Open Source Governance - The Hard PartsOpen Source Governance - The Hard Parts
Open Source Governance - The Hard Parts
Nell Shamrell-Harrington
 
Davignon én Simonet wilden baas van NAVO worden
Davignon én Simonet wilden baas van NAVO wordenDavignon én Simonet wilden baas van NAVO worden
Davignon én Simonet wilden baas van NAVO worden
Thierry Debels
 

Destacado (13)

Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014
Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014
Nutritional Therapists of Ireland, Health Impacts of Water Fluoridation May 2014
 
La hosteleria 22 Marta Pedra Wines (2)
La hosteleria 22 Marta Pedra Wines (2)La hosteleria 22 Marta Pedra Wines (2)
La hosteleria 22 Marta Pedra Wines (2)
 
Presentacio nova cultura de la salut Toni Barbarà
Presentacio nova cultura de la salut Toni BarbaràPresentacio nova cultura de la salut Toni Barbarà
Presentacio nova cultura de la salut Toni Barbarà
 
Relatório Caminhos para a produtividade - Indústria 4.0
Relatório Caminhos para a produtividade - Indústria 4.0Relatório Caminhos para a produtividade - Indústria 4.0
Relatório Caminhos para a produtividade - Indústria 4.0
 
The Winning Brand Formula
The Winning Brand Formula  The Winning Brand Formula
The Winning Brand Formula
 
International Public Relations - Overview
International Public Relations - OverviewInternational Public Relations - Overview
International Public Relations - Overview
 
Challenges in Extracting and Managing References
Challenges in Extracting and Managing ReferencesChallenges in Extracting and Managing References
Challenges in Extracting and Managing References
 
結晶と空間充填 #ロマ数ボーイズ
結晶と空間充填 #ロマ数ボーイズ結晶と空間充填 #ロマ数ボーイズ
結晶と空間充填 #ロマ数ボーイズ
 
Treatment of tb with sirturo
Treatment of tb with sirturoTreatment of tb with sirturo
Treatment of tb with sirturo
 
Toma de muestra para analisis microbiologico de la leche y productos lacteos.
Toma de muestra para analisis microbiologico de la leche y productos lacteos.Toma de muestra para analisis microbiologico de la leche y productos lacteos.
Toma de muestra para analisis microbiologico de la leche y productos lacteos.
 
Document Writing in CI Environment
Document Writing in CI EnvironmentDocument Writing in CI Environment
Document Writing in CI Environment
 
Open Source Governance - The Hard Parts
Open Source Governance - The Hard PartsOpen Source Governance - The Hard Parts
Open Source Governance - The Hard Parts
 
Davignon én Simonet wilden baas van NAVO worden
Davignon én Simonet wilden baas van NAVO wordenDavignon én Simonet wilden baas van NAVO worden
Davignon én Simonet wilden baas van NAVO worden
 

Similar a Drupal y la programación defensiva (spanish version)

Módulo de PHP
Módulo de PHPMódulo de PHP
Módulo de PHP
Jorge_SS_UV
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalMediaglobe Innova
 
¿Cómo usar Perl para automatizar planes de prueba?
¿Cómo usar Perl para automatizar planes de prueba?¿Cómo usar Perl para automatizar planes de prueba?
¿Cómo usar Perl para automatizar planes de prueba?
Itverx C.A.
 
Ana maria morales 11 01
Ana maria morales 11 01Ana maria morales 11 01
Ana maria morales 11 01aniimorales
 
Phpgaby
PhpgabyPhpgaby
Phpgaby
aynosk6
 
Javascript
JavascriptJavascript
Javascript
Daniel Grippo
 
Python boloñesa
Python boloñesa Python boloñesa
Python boloñesa
Álvaro León Santiago
 
JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#
Luis Ruiz Pavón
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
David Ballén
 
Phpgaby
PhpgabyPhpgaby
Phpgaby
aynosk6
 
Java script
Java scriptJava script
Ana maria morales 11 01
Ana maria morales 11 01 Ana maria morales 11 01
Ana maria morales 11 01
anamariamoralescortes
 
Universida tecinca luis vargas torrez de mirand
Universida tecinca luis vargas torrez de mirandUniversida tecinca luis vargas torrez de mirand
Universida tecinca luis vargas torrez de mirandlanegritabella
 

Similar a Drupal y la programación defensiva (spanish version) (20)

Módulo de PHP
Módulo de PHPMódulo de PHP
Módulo de PHP
 
Php y mysql
Php y mysqlPhp y mysql
Php y mysql
 
Php1
Php1Php1
Php1
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en Drupal
 
IntroducciónPHP.pptx
IntroducciónPHP.pptxIntroducciónPHP.pptx
IntroducciónPHP.pptx
 
¿Cómo usar Perl para automatizar planes de prueba?
¿Cómo usar Perl para automatizar planes de prueba?¿Cómo usar Perl para automatizar planes de prueba?
¿Cómo usar Perl para automatizar planes de prueba?
 
Ana maria morales 11 01
Ana maria morales 11 01Ana maria morales 11 01
Ana maria morales 11 01
 
Phpgaby
PhpgabyPhpgaby
Phpgaby
 
Javascript
JavascriptJavascript
Javascript
 
Python boloñesa
Python boloñesa Python boloñesa
Python boloñesa
 
JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#
 
Php1
Php1Php1
Php1
 
Php1
Php1Php1
Php1
 
Php1
Php1Php1
Php1
 
Php1
Php1Php1
Php1
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
 
Phpgaby
PhpgabyPhpgaby
Phpgaby
 
Java script
Java scriptJava script
Java script
 
Ana maria morales 11 01
Ana maria morales 11 01 Ana maria morales 11 01
Ana maria morales 11 01
 
Universida tecinca luis vargas torrez de mirand
Universida tecinca luis vargas torrez de mirandUniversida tecinca luis vargas torrez de mirand
Universida tecinca luis vargas torrez de mirand
 

Último

Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
Miguel Rebollo
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
alejandromanuelve
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
yuki22434
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 

Último (20)

Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 

Drupal y la programación defensiva (spanish version)

  • 3. Eduardo Telaya Trabajo con Drupal por 5+ años. Inice con Java(jsf, sprint, hibernate, etc) C#, C++ Profesor en la Universidad Autónoma del Perú. Contribuidor de Drupal(Mentor de drupal Sprints y expostor) Hackatonero(más de 30 hackathons a nivel nacional y mundial) usando Drupal y otras tecnologías. Peruano de nacimiento
  • 5.
  • 6. Programación defensiva La programación defensiva, simplemente, es la programación con la intención de anticipar los puntos de falla probable. El objetivo es eludir esos probables problemas antes de que ocurran. Usted ve el problema, ¿verdad? Hay algo intrínsecamente difícil con el consejo "esperar lo inesperado" y se hace muchas veces peor cuando uno lo altera para "esperar lo inesperado y tratar de prevenirlo".
  • 7.
  • 8. El clásico error! Variable no asignada Notice: Undefined variable… Esto pasa ya que la variable no ha sido definido y es usado en el código
  • 9. La variable no fue asignada!(Incorrecto) function _get_current_event() { if ($type === ‘events`) { // Your logic goes here. } } Notice: Undefined variable in example_node_view()
  • 10. La variable nunca fue asignada(correcto) function _get_current_event() { $type = ‘events’; if ($type === ‘events`) { // Your logic goes here. } } Notice: Undefined variable in example_node_view()
  • 11. El clásico error! Indice no definido Notice: Undefined index: und in example_node_view() Esto pasa ya que el Indice a acceder no existe!. Pasa normalmente cuando accedemos a un campo con X atributo pero este X atributo nunca fue agregado! Y se asume que siempre estara con este valor! Pero NO!
  • 12. No asumas que el campo siempre estara! $url = $node->field_link[LANGUAGE_NONE][0]['url']; Notice: Undefined index: und in example_node_view()
  • 13. En vez de eso valida si estara! if (!empty( $node->field_link[LANGUAGE_NONE][0]['url'])) { $url = $node->field_link[LANGUAGE_NONE][0]['url']; } http://www.google.com
  • 14. Comparación de cadenas! NO USES == Sino usa === para comparar cadenas
  • 15. Comparación de cadenas (incorrecto) // returns TRUE $type = 0; print ($type == 'events') ? 'true' : 'false'; Incorrecto!!!
  • 16. Comparación de cadenas! (correcto) // returns FALSE $type = 0; print ($type === 'events') ? 'true' : 'false';
  • 17. Faltan argumentos en el parámetro Warning: Missing argument 2 for _example_foo(), called in Esto pasa ya que el método/función necesita un parámetro a ser completado! Una manera de evitar esto es asignarle un valor por defecto al párametro.
  • 18. Argumentos en parámetro(incorrecto) _example_foo('key_1'); function _example_foo($key, $value) { if ($value <= 100) { // DO some logic. } } Warning: Missing argument 2 for _example_foo()
  • 19. Argumentos en parámetro (correcto) _example_foo('key_1'); function _example_foo($key, $value = 100) { if ($value <= 100) { // DO some logic. } } Warning: Missing argument 2 for _example_foo()
  • 21. AnexosConcepto de programación defensiva https://es.wikipedia.org/wiki/Programaci%C3%B3n_defensiva Errores comunes en php http://kumar.swatantra.info/common-php-error-messages/ Más tips de programación defensiva https://www.sitepoint.com/more-tips-for-defensive-programmin g-in-php/