angart01 / AngelaMaria

0 stars 1 forks source link

Separar la entrada y salida de los programas del resto del código #4

Open manuel-freire opened 4 years ago

manuel-freire commented 4 years ago

En muchos programas usas funciones que piden datos directamente del usuario y/o muestran datos directamente al usuario. Es mejor separar esta funcionalidad (es decir: que tus funciones que puedas querer reutilizar no hagan ni entrada ni salida). Así, por ejemplo, Function_min.js quedaría algo mejor así:

function valorMin(a, b) {
    return Math.min(a, b);  // <-- ya no hace "console.log" dentro
}

console.log(valorMin(12, 9)); // <-- si lo necesitas, mejor hacerlo fuera

Esto te permite usar valorMin en otros sitios, donde te haga falta usar el valor devuelto para algo.

Usando lo mismo en funciones.js, podrías tener

function opera(a, b) {
    return { 
       suma: a + b,
       resta: a - b,
       multiplicacion: a * b,
       division: a / b 
   }
}

function porConsola(o) {
  for (let [key,value] of Object.entries(o)) {
        console.log(key + ":", value)    
  }
}
function porPagina(o) {
  for (let [key,value] of Object.entries(o)) {
        document.write(key + ": " +  value + "<br>\n")    
  }
}

let o = opera(30, 5)
porConsola(o);
porPagina(o);

Incluso puedes fijarte en que el código de porConsola y porPagina se parece mucho, y podrías romperlo en varias funcione, cada una de las cuales sólo sepa hacer 1 única cosa:

function muestra(o, expositor) { // <-- expositor puede ser expositorConsola o expositorPagina
  for (let [key,value] of Object.entries(o)) expositor(key, value);
}

function expositorConsola(k, v) {
  console.log(k, v);
}

function expositorPagina(k, v) {
  document.write(k + ": " +  v + "<br>\n");
}

let o = opera(30, 5)
muestra(o, expositorConsola)
muestra(o, expositorPagina)
angart01 commented 4 years ago

A) Entendido function_min.js B) for (let [key,value] of Object.entries(o)) {.Entiendo que es un método que puede integrar un array con un objeto? En todo caso veo que lo perfecciona.