Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Du JavaScript propre
Search
zenigata
June 13, 2013
Programming
0
260
Du JavaScript propre
Compilation personnelle de quelques bonnes pratiques de codage en JavaScript.
zenigata
June 13, 2013
Tweet
Share
More Decks by zenigata
See All by zenigata
Refaire le SI d'une université catholique en 7 jours
zenigata
0
43
[REx] Mon premier train SAFe
zenigata
0
430
L'agilité vue par les animaux
zenigata
0
29
L'estimation AGILE démystifiée !
zenigata
1
160
Other Decks in Programming
See All in Programming
[KR] Server Driven Compose With Firebase
skydoves
2
170
Subclassing, Composition, Python, and You
hynek
3
120
DevFest Android in Korea 2024 - 안드로이드의 문단속 : 앱을 지키는 암호화 이야기
mdb1217
1
140
.NET Aspireのクラウド対応検証: Azureと他環境での実践
ymd65536
1
380
PHPを書く理由、PHPを書いていて良い理由 / Reasons to write PHP and why it is good to write PHP
seike460
PRO
5
360
[PHPカンファレンス沖縄2024]「無理なくできるだけ安全に」テストもないレガシーコードをリファクタリングするテクニック
ikezoemakoto
3
120
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
1.2k
ビット演算の話 / Let's play with bit operations
kaityo256
PRO
4
170
ACES Meet におけるリリース作業改善の取り組み
fukucheee
0
130
Infrastructure as Code でセキュリティを楽にしよう!
konokenj
6
1.4k
Frontend Magic mit CSS Houdini
joergneumann
0
430
ポケモンで考えるコミュニケーション / Communication Lessons from Pokémon
mackey0225
4
160
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
105
48k
Testing 201, or: Great Expectations
jmmastey
38
7k
RailsConf 2023
tenderlove
28
840
Writing Fast Ruby
sferik
625
60k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Music & Morning Musume
bryan
46
6.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
Building Adaptive Systems
keathley
37
2.1k
Faster Mobile Websites
deanohume
304
30k
Being A Developer After 40
akosma
84
590k
Build The Right Thing And Hit Your Dates
maggiecrowley
31
2.3k
Transcript
Du JavaScript propre ce que j'ai retenu
Promis, j'arrête
Inline <div style="width: 800px; margin: 1em auto; font: bold 1em/1.2
Verdana, Arial, Helvetica, sans-serif"> <div style="float: left; width: 400px; padding: 1em 2em; font- size: 0.9em"> <span id="get-shit" onclick="callSomeFunction()">News</span> </div> </div>
Point-virgule, où es-tu ? var foo = function() { }
// parse error, semicolon expected test()
Espace de nommage pollué // global scope var foo =
42; function test() { // local scope foo = 21; } test(); foo; // 21
Eval c'est le mal var foo = 1; function test()
{ var foo = 2; var bar = eval; bar('foo = 3'); return foo; } test(); // 2 foo; // 3
Le changement c'est maintenant
Couverture de tests et CI
QUnit test("prettydate.format", function() { function date(then, expected) { equal(prettyDate.format("2008/01/28 22:25:00",
then), expected); } date("2008/01/28 22:24:30", "just now"); date("2008/01/28 22:23:30", "1 minute ago"); date("2008/01/28 21:23:30", "1 hour ago"); date("2008/01/27 22:23:30", "Yesterday"); date("2008/01/26 22:23:30", "2 days ago"); date("2007/01/26 22:23:30", undefined); });
Mocha test('display received results', function () { var sr =
new SearchResults(ul); sr.setResults(data); assert.equal(ul.find('.no-results').length, 0); assert.equal(ul.find('li.result').length, data.length); assert.equal( ul.find('li.result').first().attr('data-name'), data[0].name ); });
Module var counter = (function() { var privateValue = 0;
var publicMethod = function() { privateValue++; return privateValue; }; return { increment: publicMethod }; })(); // On passe à l'utilisation du compteur : counter.increment(); // 1 counter.privateValue; // undefined counter.privateValue = 0; counter.increment(); // 2
Classe // A car "class" function Car( model ) {
this.model = model; this.color = "silver"; this.year = "2012"; this.getInfo = function () { return this.model + " " + this.year; }; } var myCar = new Car("ford"); myCar.year = "2010"; console.log( myCar.getInfo() );
Package var myapp = { subpackage: { counter: (function() {
// ... })() } } // Et son utilisation : myapp.subpackage.counter.increment(); // 1
Design patterns Singleton Decorator Observer Prototype Factory MVC ...
Style guide
Webographie http://linsolas.github.io/blog/2013/04/03/devoxx-france-2013-du-javascript-propre-challenge-accepted/ http://coding.smashingmagazine.com/2012/06/27/introduction-to-javascript-unit-testing/ http://alistapart.com/article/writing-testable-javascript http://robertnyman.com/2008/11/20/why-inline-css-and-javascript-code-is-such-a-bad-thing/ http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml http://contribute.jquery.org/style-guide/js/ https://github.com/styleguide/javascript http://addyosmani.com/blog/javascript-style-guides-and-beautifiers/ http://javascript.crockford.com/code.html
http://addyosmani.com/resources/essentialjsdesignpatterns/book/ http://bonsaiden.github.io/JavaScript-Garden/ http://ejohn.org/apps/learn/ http://www.eriwen.com/tools/perfect-front-end-build/ http://500px.com/photo/15306253 http://www.danescobar.com/albums/people/BRAWNY-20GIRLS_web.jpg