Javascript es un mal lenguaje para los emprendedores: evítalo

Elige opción

  • Sí, es horrible

    Votos: 5 33,3%
  • No obstante, tiene una sintaxis muy clara

    Votos: 1 6,7%
  • Lo destacable es que es ultraveloz

    Votos: 0 0,0%
  • No estoy de acuerdo contigo

    Votos: 9 60,0%
  • No sé, no contesto. Estoy programando funciones javascript desde C++ para V8

    Votos: 0 0,0%

  • Total de votantes
    15

pijoprogre

Madmaxista
Desde
14 Jul 2013
Mensajes
3.191
Reputación
2.703
Lugar
Expaña.
Estoy trabajando en una cosa y miren el lío que tengo. Infierno de callbacks.... hallludaaaaa!!!

Infinitos callbacks que llaman a otro callback que llaman a otro callback hasta el punto de requerir una pantalla con una resolución de 2000x890000, que puede estar parametrizado o puede no estarlo. Imaginaos lo complicado que es trazar mentalmente todo esto. Cada vez que dejas la programación para otro momento has de detenerte unos minutos para hacerte un nuevo mapa mental. Ya no sé ni qué carajos hago



Otro problema que tendréis será el manejo de this, recordad que es diferente según el contexto. Esto significa que deberéis conservar una referencia al this originario usando self. Es una pesadilla.



¿Qué otro problema hay? El manejo de errores (Exception handling) es horrible, pésimo. Simplemente todo ha de ir entre try...catch y usar a conveniencia throw para disparar errores y capturarlos antes de que tiren la aplicación.

En definitiva, evítenlo en la medida de lo posible. Especialmente si necesitan algo fiable y robusto.
 
Última edición:

El grito

Madmaxista
Desde
18 Ago 2013
Mensajes
956
Reputación
1.187
No es el javascript. Eres tú. Ese código es malísimo.
 

aminomepilla

Madmaxista
Desde
13 May 2013
Mensajes
3.366
Reputación
3.868
Lugar
Sagitario A
No soy un experto en javascript, no te ofendas, pero viendo el código el problema no es el lenguaje...

El último snippet es para enmarcarlo ¿que prentendes hacer?

PHP:
try{
  throw "Error in IndexQuery";  /*¿lanzas una excepción para recogerla abajo de modo incondicional!!!?*/
} catch(err){
     self.Error(err); /*¿Es un constructor que no construye? ¿porque esta el método en mayúsculas? ¿es un objeto Error que quieres lanzar?*/ 
}

/* no se que pretendes hacer pero esto es equivalente ... */

self.Error("Error in IndexQuery");

Y estructura un poco el programa, objetos, funciones etc no tiene que ser todo inline y las excepciones no recuperables se lanzan a las capas superiores sin controlar, la capa superior se hará cargo: log, limpieza, etc ...
 
Última edición:

pijoprogre

Madmaxista
Desde
14 Jul 2013
Mensajes
3.191
Reputación
2.703
Lugar
Expaña.
No soy un experto en javascript, no te ofendas, pero viendo el código el problema no es el lenguaje...

El último snippet es para enmarcarlo ¿que prentendes hacer?

try{
throw "Error in IndexQuery"; /*¿lanzas una excepción para recogerla abajo de modo incondicional!!!?*/
} catch /*donde esta el (err)!!!?*/ {
self.Error(err) /*¿Es un constructor que no construye? ¿porque esta el método en mayúsculas? ¿es un objeto Error que quieres lanzar?*/
}

no se que pretendes hacer pero esto es equivalente ...

self.Error("Error in IndexQuery") o esto


Y estructura un poco el programa, objetos, funciones etc no tiene que ser todo inline y las excepciones no recuperables se lanzan a las capas superiores sin controlar, la capa superior se hará cargo: log, limpieza, etc ...
Te explico. Es una plantilla. Escogí esa porción con fin ilustrativo. En realidad los trys abarcan varios segmentos del código y según la comprobación se hace throw a un tipo u otro de error para ser capturado (fíjate en el throw de la primera imagen)

La mayoría de errores en js se disparan intencionalmente con la finalidad de ser capturados.

Hay otras formas, como usar Error.

Por cierto. self.Error no es lo mismo que this.Error, ya que en el contexto de función (contexto local) this no hace referencia al contexto global donde está el objeto Error.

Por cierto, los callbacks no son eludibles. Son de uso obligatorio en casos como este. El flujo de ejecución es siempre más rápido que el tiempo de latencia de respuesta de la base de datos.
 
Última edición:

aminomepilla

Madmaxista
Desde
13 May 2013
Mensajes
3.366
Reputación
3.868
Lugar
Sagitario A
Y es un lenguaje que esta bastante bien, muy potente, pero no es nada fácil.

---------- Post added 12-mar-2014 at 08:29 ----------

A ver, el primer throw del primer snippet parece correcto, pero el ultimo snippet no tiene sentido, ese donde lanzas la excepcion para capturarla inmediatamente.
 

pijoprogre

Madmaxista
Desde
14 Jul 2013
Mensajes
3.191
Reputación
2.703
Lugar
Expaña.
Y es un lenguaje que esta bastante bien, muy potente, pero no es nada fácil.

---------- Post added 12-mar-2014 at 08:29 ----------

A ver, el primer throw del primer snippet parece correcto, pero el ultimo snippet no tiene sentido, ese donde lanzas la excepcion para capturarla inmediatamente.
Porque el último es con fin ilustrativo. No tengo ninguna porción de código donde pueda resumirse en una sola imagen el inicio del try, los throws y el catch.

Es rápido, no potente.

He quitado la imagen. No pensé que pudiera malinterpretarse.
 
Última edición:
Desde
15 Mar 2007
Mensajes
5.115
Reputación
3.340
Pequeño Padawan...

Simplifica el código. Javascript hace muchas cosas bien, pero si lo complicas, es posible que te tires horas en hacerlo funcionar.

Yo suelo utilizarlo mucho en combinación con php y todas mis aplicaciones van de miedo.
 

JyQ

Madmaxista
Desde
29 Jul 2009
Mensajes
9.325
Reputación
13.822
¿Pero qué ostras va a ser el lenguaje??????

Siempre es una mala metodología si el lenguaje es de uso común.

Usa jquery y deja de complicar los callbacks.
 

pijoprogre

Madmaxista
Desde
14 Jul 2013
Mensajes
3.191
Reputación
2.703
Lugar
Expaña.
Pequeño Padawan...

Simplifica el código. Javascript hace muchas cosas bien, pero si lo complicas, es posible que te tires horas en hacerlo funcionar.

Yo suelo utilizarlo mucho en combinación con php y todas mis aplicaciones van de miedo.
¿Pero qué ostras va a ser el lenguaje??????

Siempre es una mala metodología si el lenguaje es de uso común.

Usa jquery y deja de complicar los callbacks.
Es javascript del lado del servidor.

Un saludo.
 

Carbonilla

Madmaxista
Desde
25 Ene 2011
Mensajes
6.119
Reputación
12.098
Dejad de llamar emprendedores a los programadores e informáticos, hombre ya.
 
Última edición: