

Writing Maintainable JavaScript - rmurphey3
http://channel9.msdn.com/events/mix/mix11/EXT23

======
mberning
Write as little code as possible. The easiest code to maintain is the code you
never had to write.

~~~
cema
Partially true. Short code may be too cryptic to be easily maintained.

~~~
IgorPartola
Write neat code. Not clever, not verbose. Neat.

Also, write code which calls only really well documented functions. Doing
jQuery("#my-input").val() is clear enough. Doing
myCrazyFramework.dom.manuplators.find.get_value('my-input') is more obscure,
even though it's more verbose.

Write code that's been written before. Don't use clever patterns you found on
code snippet sharing websites
([http://code.activestate.com/recipes/66531-singleton-we-
dont-...](http://code.activestate.com/recipes/66531-singleton-we-dont-need-no-
stinkin-singleton-the-bo/) for example). Keep using the same pattern over and
over.

Write small chunks of code: a function over 50 lines is probably really hard
to read. This is a rule of thumb, not a commandment, but I found it to be true
in at least > 51% of cases.

Avoid code magic. E.g.: deleteUsers(username) should not check for whether
username has the substring "test" in it to see if the user should really be
deleted.

Avoid state at all cost.

Avoid timing dependence. Pretend like anything in your application can happen
any time any place.

Handle all exceptions.

I'm probably wrong on at least 50% of the above, and am probably missing 10
time as much...

~~~
jamesbritt
_Write small chunks of code: a function over 50 lines is probably really hard
to read. This is a rule of thumb, not a commandment, but I found it to be true
in at least > 51% of cases._

Peter Seibel, in _Practical Common Lisp_ , has a footnote about this:

"A friend of mine was once interviewing an engineer for a programming job and
asked him a typical interview question: how do you know when a function or
method is too big? Well, said the candidate, I don't like any method to be
bigger than my head. You mean you can't keep all the details in your head? No,
I mean I put my head up against my monitor, and the code shouldn't be bigger
than my head."

[http://www.gigamonkeys.com/book/practical-a-simple-
database....](http://www.gigamonkeys.com/book/practical-a-simple-
database.html)

------
wccrawford
These apply to all languages, not just Javascript. It's pretty basic
techniques for keeping your code nice:

Decouple/Blackbox

Naming Conventions

Start using these techniques now, refactor old code over time

------
euroclydon
Straight up question: How do you build source code documentation?

I use jsDoc (closure compiler's version, with data annotations). Because of
this, I can't wrap all my code in a closure, which seems so popular these
days. jsDoc won't parse through the closure. So, I use namespaces, and keep
all my code in the global scope. It works great.

------
autalpha
I refuse to install Silverlight :P

~~~
ChiperSoft
Shows up as an HTML5 video element for me in Safari.

~~~
emehrkay
Forced me to install silverlight; safari windows (work machine so I dont care)

~~~
autalpha
FF4 on OSX here and I can't view the slideshow without installing Silverlight.
Didn't know I would offend people with my stance on Microsoft's Silverlight. I
am peeved at Microsoft's stance on Flash or other open solutions. And don't
get me started on their "web standards" implementations.

------
Todd
Thanks for posting. I meant to go to this session but it was too early.

------
ChiperSoft
My god, he is so hungover in this video...

~~~
clocktower
Not hungover; just _really_ tired. I want to have a talk with whomever
scheduled me for a 9am slot. Also, the light was in my eyes whenever I tried
to look out toward the audience. AND OTHER EXCUSES, TOO

------
kragen
Is there a non-video version of this?

------
diamondhead
see the irony

