JavaScript obviamente se ha vuelto bastante indispensable; Sin embargo, todavía soy nuevo en esto, y he encontrado que es difícil luchar contra la sensación de que parece un desastre y no quiero lidiar con eso en este momento. Estoy mucho más lejos en mi comprensión de otros lenguajes que con JavaScript, porque parece que no puedo manejar este miedo. Tengo la sensación de que, cuando escribo JavaScript, intento pintar un retrato de cachorros Weimaraner.
Por lo general, me ayuda a tener en cuenta un puñado de las directivas más importantes que puedo preguntarme por cada movimiento que hago. (En mi opinión, un puñado es cinco o menos).
¿Puedes enumerar cinco (o menos) preguntas específicas sobre JavaScript que debería preguntarme por cada movimiento que realizo cuando estoy codificando JavaScript? ¿Qué serían ellos?
Actualización: para aclarar, no estoy pidiendo cinco cosas a tener en cuenta al aprender JavaScript; Estoy pidiendo cinco preguntas para hacerme siempre en el futuro, que todos deberían hacer siempre. Preguntas de alto nivel como: "¿Es probable que repita esto en otro lugar?" o "es esta variable / nombre de función lo suficientemente específico (o demasiado específico)" <== excepto que estas preguntas de ejemplo no son peculiares de JavaScript. Estoy buscando directivas que son peculiares de JavaScript.
Respuestas:
Voy a responder esto en dos partes. Uno es "Cinco o menos consejos para aprender a escribir un buen JavaScript". El otro es "Cinco o menos consejos para escribir un buen JavaScript".
Aprendizaje:
Haciendo:
EDITAR (agregar preguntas para cumplir con el OP):
¿A qué alcance estoy haciendo referencia?
Esto debería ayudar con las fugas globales, los controladores de eventos y cuándo usar cierres.
¿Me estoy repitiendo?
La abstracción y el uso adecuados de las técnicas de OO son importantes. Úsalos sabiamente.
¿Mi código se repite?
Es notablemente fácil encontrarse poniendo el acceso DOM en un bucle o creando funciones (anónimas o no) en un bucle. Tenga en cuenta que esto puede ser cierto para el código que usa
setTimeout
osetInterval
para los bucles tradicionales.¿Esto significa lo que creo que significa?
Los valores de verdad y falsedad en JS pueden ser un poco complicados, especialmente cuando se utilizan comparaciones no estrictas (
==
en lugar de===
). La escritura dinámica, la coerción de tipo y si hace referencia a objetos o literales también pueden ser relevantes.fuente
Primero, sepa cómo funciona la tecnología detrás de esto.
Usted necesita saber esto porque el conocimiento detrás de cómo funciona, porque se va a ejecutar en problemas de red, o bien, como he visto infinidad de veces, la gente del todo faily a la comprensión de lo que del lado del servidor y del lado del cliente que realmente es. Una de las preguntas newb más comunes que veo es "¿Cómo puedo hacer que JS cambie una variable en mi código ASP?"
Comprenda que su código es más grande que usted o su situación específica
cell.innerHTML = "<script>alert("xss")</script>"
, y aparece un cuadro de alerta, lo ha hecho mal.<noscript>
etiquetas para alertarlos./[a-z ']/i
, pero que incluyen acentos en hindi, árabe (este es un problema existente de los desarrolladores miopes), chino , y otros. Comprender los conjuntos de caracteres, Unicode y UTF-8.Eres un programador, no una fábrica de pasta. Deja de escribir espagueti.
"This fizzes the bizz"
o mitad inglés o mitad francés no son útiles. Describe lo que hace una función. Describe secciones complejas de código.<a href="javascript:alert("foo")">
. FFS NO HAGA ESO. Espere a que se cargue el documento completo, separe su código JavaScript del documento html. Estas son prácticas básicas de OOP 101, simplemente no alinee su JS o CSS en su documento html, nunca. Averigüe cómo hacerlo correctamente o busque a alguien que sepa cómo mostrarle cómo hacerlo. Nuevamente, haga preguntas.Javascript:foo("buz")
es un psudeo protocolo, no es totalmente compatible, y si no lo hace en línea javascript no estaría utilizando en primer lugar. Le prometo desde el fondo de mi corazón que no hay ninguna razón en este mundo o en cualquier parte del universo en la que NECESITA poner su JavaScript dentro de un elemento HTML. Nunca. Entonces no lo hagas. Ya ni siquiera voy a ayudar a las personas que hacen eso, es tan malo.Descubre cómo escribir código de tal manera que no se rompa todo el tiempo.
main_backup_20110911.js.bak.1
. Pierde cosas, su directorio se desordena, no puede "rebobinar" fácilmente a un punto anterior en el tiempo. No puedes ver lo que está pasando, no puedes hacer parches de código. Entonces, solo comienza a aprender GIT, te tomará una hora y nunca volverás.Escribe JavaScript que la gente ama
Concéntrese en lo básico, siempre.
for (;;)
qué usa unfor( in )
bucle. Cuándo usar un bucle while. Deje de anidar IF cuando solo puede usar una caja de interruptor. Los objetos no conservan el orden, así que no los use como una matriz; antigua Opera / FF, antigua MISE, a veces Flash no respetará el orden de sus objetos. Use una matriz si desea mantener un orden de cosas, use un objeto si desea un objeto (algo que no tiene orden de elementos).Concéntrese en el juego largo, no en un destello rápido y muera.
which
", suelte un montón de código que nadie puede usar y desaparece. No contribuiste nada. No use variables comoa
ychezburger
.Para cualquier persona interesada, en realidad he tomado la mayor parte de esto de notas personales en un tutorial que no he escrito en ninguna parte .
fuente
TCPIP(HTTP(ClientServerRelationship(), Cookies(), HTML(JavaScript(Knowledge))))
Lea el Javascript de Douglas Crockford : The Good Parts . Es un buen consejo, pero sinceramente, es el mejor consejo que he escuchado para escribir un buen JavaScript.
Relacionado, lea los artículos de Douglas Crockford en Javascript .
fuente
fuente
Aquí hay algunas preguntas que deberían ayudarlo a usar JavaScript.
¿Cómo funciona JSON y para qué sirve?
¿Por qué las funciones son objetos en Javascript?
¿Por qué no debería usar eval?
¿Cómo creo eventos en javascript?
¿Cómo presento la función de detección en JavaScript?
Prácticamente cubre la mayoría de las cosas que debes hacer en Javascript.
fuente
eval()
, verifique doble y triple de otra manera; casi siempre hay una manera más limpia y fácil a menos que esté intentando ejecutar una cadena completa de JavaScript.(function() {/* stuff */})()
es una buena manera de encapsular un conjunto de código y crear un ámbito local para él. Usar objetos es otra forma, a menudo mejor; los objetos son más análogos a los espacios de nombres en otros idiomas cuando se usan de esta manera. Solo ten cuidadothis
. A diferencia de la mayoría de los otros idiomas,this
no siempre hace referencia a lo que intuitivamente podría pensar que hace. Recuerde también que, a menos que se especifique lo contrario, todas las variables JS, funciones y otros objetos son globales, incluso en varios.js
archivos.fuente
return
, y la siguiente línea que contiene sus datos, en realidad lo habrá dichoreturn ;
debido a ASI. Yo diría que es más importante entender las reglas ASI y espacios en blanco que "usar siempre punto y coma". Pero es una excelente manera de salvarse.I'd say it's more important to understand ASI and whitespace rules than it is "always use semicolons."
Creo que las clases son una herramienta bastante poderosa para estructurar código. Hay muchas reglas agnósticas de lenguaje sobre cómo diseñar sistemas basados en clases y algunos principios OO se implementan más obviamente cuando se usan clases.
Por lo tanto, le sugiero que eche un vistazo a CoffeeScript .
A partir de ahí, le sugiero que intente recopilar información sobre cómo implementar SOLID , DRY , GRASP , KISS y YAGNI , y lo más importante, cómo abordar situaciones, donde parecen entrar en conflicto (nunca lo hacen, solo su comprensión de ellas o el problema en cuestión sí) Es bastante fácil de encontrar, incluso en stackexchange.
Tenga en cuenta que estos principios se aplican tanto al desarrollo de JavaScript "en bruto". Sin embargo, una gran cantidad de contenido que encontrará en ellos los ilustrará utilizando lenguajes basados en clases y, por lo tanto, podría ser útil para programar en un idioma, donde no hay demasiada sobrecarga involucrada en comprenderlos.
Personalmente, creo que JavaScript es un lenguaje extremadamente poderoso, pero en realidad primero tendrá que comprender profundamente otros idiomas, para apreciar realmente este hecho.
fuente
Supongo que está utilizando JavaScript para el desarrollo de la interfaz de usuario del lado del cliente en una aplicación web.
1) ¿Debería ser del lado del cliente o del servidor? Sé que me fui y escribí fragmentos de código serios que realmente merecían estar en el lado del servidor y viceversa. Muchas veces me dirigiré a hacer una llamada AJAX por algo que termina mejor ubicado en el código del Servidor para ser incluido en el camino. Especialmente cosas que son de naturaleza estática pero cambian con bastante regularidad (lista de categorías, por ejemplo).
2) ¿Hay algún complemento que ya lo haga? Yo uso mucho JQuery y la respuesta casi siempre es SÍ. A menudo tomo el código del complemento que alguien ha escrito y lo adapto a mis necesidades (generalmente agregando clases adicionales a las cosas, etc.) pero rara vez necesito comenzar desde cero.
3) ¿Es Javascript el lugar adecuado para esto? Ocasionalmente me sorprenderé agregando un montón de estilo dinámico a algo a través de Javascript cuando tenga mucho más sentido usar CSS inteligente.
4) ¿Debería estar usando una herramienta diferente? Esto es algo con lo que he estado lidiando últimamente. Hay algunas alternativas de javascript como el script de café que se manejan bien en mi pila (Rails 3.1) y he estado considerando si mover o no gran parte de mi código allí.
5) ¿Es este código Javascript un buen código? Javascript es un código como cualquier otro código. ¿Es este código tan bueno como el resto de mi código? ¿Si no, porque no? ¿Es desechable? ¿Soy flojo?
fuente