Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Drupal y la programación defensiva (spanish version)

212 views

Published on

Drupal y la programación defensiva (spanish version)
Evitemos bugs!!
ejemplos claros de como evitar posibles bugs
ejemplos de mitigación
Problemas clásicos(Variable no defenida, indice no encontrado, comparación cadenas, Argumento faltante)
Además un listado de anexos

Published in: Technology
  • Be the first to comment

Drupal y la programación defensiva (spanish version)

  1. 1. Drupal y la Programación defensiva (Evitemos bugs!)
  2. 2. Acerca de edutrul
  3. 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
  4. 4. Empecemos!
  5. 5. 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".
  6. 6. 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
  7. 7. La variable no fue asignada!(Incorrecto) function _get_current_event() { if ($type === ‘events`) { // Your logic goes here. } } Notice: Undefined variable in example_node_view()
  8. 8. 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()
  9. 9. 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!
  10. 10. No asumas que el campo siempre estara! $url = $node->field_link[LANGUAGE_NONE][0]['url']; Notice: Undefined index: und in example_node_view()
  11. 11. 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
  12. 12. Comparación de cadenas! NO USES == Sino usa === para comparar cadenas
  13. 13. Comparación de cadenas (incorrecto) // returns TRUE $type = 0; print ($type == 'events') ? 'true' : 'false'; Incorrecto!!!
  14. 14. Comparación de cadenas! (correcto) // returns FALSE $type = 0; print ($type === 'events') ? 'true' : 'false';
  15. 15. 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.
  16. 16. 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()
  17. 17. 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()
  18. 18. ¿Preguntas o comentarios?
  19. 19. 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/
  20. 20. GRACIAS!!

×