Contenido del curso
Contenido del curso
Fernando Mejia
Héctor Hugo Sandoval Marcelo
Bernardo Aguayo Ortega
Favio Náquira
Bernardo Aguayo Ortega
Abigail Perez
María Sierra
Moisés Cedeño
Juan Manuel Rodríguez Lanza
Juan Manuel Rodríguez Lanza
Carlos Eduardo Gomez García
Stanley Melgar
GARCIA CAMARENA EZEQUIEL
Jimmy Buriticá Londoño
Christian David Sánchez
Jherom Chacon
Enrique Devars
Royer Guerrero Pinilla
Wilson Marino Pablo Mendez
Jaime Pinto Abad
Edward Fernandez
Juan Pena Verdú
Andrés Felipe Carreño
Juan Manuel Nava Zamudio
CASAREZ HINOSTROZA ANGEL ARIEL
Jherom Chacon
Miguel Angel Paz Gonzalez
Armando García
Edgar Ramón González Contreras
Omar Gabriel Aguilar Moscoso
Zakowicz Osvaldo Emanuel
Susana Piñero Rodríguez
Kenet Andrés Chungandro Montenegro
Orlando Jose Altamiranda Piñango
Alberto Morales Farfán
Juan Diego Silva Garcia
Daniel Carmona
Para los devs que no tengan mucha experiencia en PHP intentere explicar lo mejor que pueda el codigo:
<?php //tag de apertura todo archivo php debe tener este tag require_once // funcion nativa de php que permite importar otro archivo php $argv[1] // php cuenta con el arreglo argv para soportar una cadena que se envia en terminal cada separacion de la cadena por espacios es un elemento del array. echo // es una instruccion para imprimir en pantalla un valor PHP_EOL // permite que al mostrar una respuesta en pantalla agregue visualmente un "enter" o salto de linea
Gracias por las aclaraciones!
Gracias Fernando, muy útil de verdad
Desgraciadamente el hardcoding es tan común... pero también es a veces una tarea titánica desaparecerlo. En mi empresa, hemos ya hecho dos reestructuraciones de proyectos funcionales casi de cero, una aplicación en React Native ya usando estas prácticas y otra en un sitio de comercio para estandarizar componentes y estilos. Técnicamente fue un mes muerto, pero a la larga, ahora que todo está refactorizado y sin hardcoding es realmente más fácil de planificar actualizaciones y agregar nuevas características, inclusive sin tener que involucrar al equipo original.
que bueno que pudieron solucionarlo
excelente!!
Evitar el hardcoding
El hardcoding es la práctica de escribir valores literales en vez de identificadores. Debemos asegurarnos de que solo necesitemos hacer un cambio en un solo lugar y que el código este correcto.
Es preferible que todas estas variables que potencialmente van a ser modificadas se encuentre en un lugar común y no en las partes del código complejo.
No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding. No debo hacer hardcoding.
Esta plana esta HardCodiada. XD
<?php plana("No debo hacer harcoding", 20); function plana($texto, $veces){ for ($i = 0; $i <= $veces; $i++){ echo $texto.", "; } } ?>
Siempre es bueno poner variables en lugar de valores literales, algo que se suele hacer es crear un archivo de entorno (Usualmente llamado .env) en donde van todas tus variables, y simplemente en el código lo mando a llamar, es genial porque todo es automatizado, si necesitas cambiar algo, simplemente lo haces desde tu archivo .env
Un ejemplo podría ser el caso de implementar una pasarela de pagos, donde tienes un ambiente de pruebas y uno de producción, cuando pasas a producción debes establecer tus API Keys de producción, y es más fácil escribirlas simplemente en un archivo de entorno:D
Para estos casos donde se quieren almacenar valores que no deben de estar visibles en el código fuente existen servicios como Doppler o Azure Key Vault que almacenan estas variables y solo las llamamos desde el proyecto.
Claro, la otra opción es hacerlo local como lo menciona acá el profesor ~
Nota clase: hardcoding escribir valores literales en lugar de identificadores. Lo ideal es tener un identificador que contenga un valor y ese identificador en cada lugar donde va el valor del identificador. Otro efecto que tiene el hardcodig es oculta información, cuando estas desarrollando tienes una lluvia de ideas y las escribes directo al código y después de algunos días ya no les encuentras sentido ya que toda la idea no se escribió o desarrollo bien.
Bien dicho.
Ejemplos claros. Desde hoy voy poner en practica lo que estoy aprendiendo en este curso.
Hay valores que pueden evitar ser hardcodeados, hay valores que no. En todo caso, hardcodear o como le decimos algunos: grabar en piedra, es una mala práctica a veces necesaria ¯_(ツ)_/¯
¿En qué casos aplicarías hardcode?
Creo que el hardcoding solo se debe aplicar por ejemplo en ecuaciones o formulas es decir por si tienes que dividir por 100 siempre pues no hay necesidad de crear una variable para eso, ya que es una constante absoluta
Yo lo deje de esta manera
$IVA = 21; $precioInicial = 100; function precioConIVA($IVA, $precioInicial){ return $precioInicial * (1 + ($IVA / 100)); } echo "Valor del IVA:" .$IVA."%" . "<br />"; echo "Sin IVA: $".$precioInicial . "<br />"; echo "Con IVA: $".precioConIVA($IVA, $precioInicial);
Para el calculo de nuevos producto funciona código, pero si deseamos mostrar el historial de precios de los productos, en donde se cobró el IVA mas alto no nos serviría, utilizar el archivos de configuración, para este caso del calculo de IVA pensaría que la alternativa debería ser por base de datos, de donde mas del porcentaje se incluya con rango de vigencias del IVA.
Side Note: En Panamá he escuchado el término "quemar el código" cuando estamos hablando de hardcoding.
¿En sus países de residencia utilizan otro nombre para hablar de hardcoding?
En España hardcoding principalmente ;)
En Colombia también se utiliza el mismo termino Edward.
A veces sentía que exageraba parametrizando cosas pero ya me pasó que por descuido no lo hice con el valor de una url y en cuanto cambió hubo problemas. Ahora ya no me preocupa que haya una larga lista de parámetros en el archivo de configuración
Para evitar el hardcoding, se puede utiliza archivo de configuracion. con variables const.
Existe un peligro latente con los archivos de configuración. Estos pueden ser vulnerados, y en ese escenario es verdaderamente difícil encontrar el origen de los problemas, claro esto puede perfectamente controlarse a través de una verificación de hashcode, sin embargo, siempre será necesario manejar al menos ese valor hardcodeado. Creo que en ciertos escenarios es imposible evitar el hardcode.
Como se escribe el codigo del archivo config.inc.php?
Buenas, compañero. No sé básicamente nada de PHP, pero encontré este blog donde muestran lo que contendría ese archivo, por ende muestan la sintaxis, que es lo que te interesa.
Al parece la pagina esta caída :(
Yo que vine a la escuela de wordpress y ya me maree, pero me gusta, voy a estudiar php :D
Si quieres probar el código del profesor usando php, debes:
php index.php argumentos ...
NOTA: En argumentos irá el valor que será capturado por $argv[1] en el código y guardado en una variable. . Código de ejemplo: manejo del IVA evitando el hardcoding: . archivo configs.inc.php
<?php $configs = ['valor_iva'=>0.21]; ?>
. archivo index.php .
<?php include_once __DIR__.'/config.inc.php'; /** NOTA: ejecutar esto en terminal: php index.php argumento * *Supongamos el cálculo del iva sobre un precio * externalizamos el valor del iva a un archivo de configuracion */ $iva = $configs['valor_iva']; $precioInicial = $argv[1]; $precioConIva = $precioInicial * (1 + $iva); echo "valor del IVA es del: ".($iva * 100)."%".PHP_EOL; echo "precio con IVA: \$$precioConIva, precio sin IVA: \$$precioInicial".PHP_EOL; ?>
. Ejecución por terminal .
No sabía que esta mala practica tiene nombre :0
Tuve la misma reacción :) XD
Otro que justamente pensó lo mismo jaja.. Por cierto Susana, linda web. Me ha gustado :)
Escribir en un solo lugar para así impactar en en todos lugares donde sea necesario
He visto api's implementadas con código Hardcode y es un problema buscar para acceder a los endpoints de cada recurso.
Luego si olvido por que puse x numeros