20120129_日暮里.jsにいってきたよ。
社内で1人で書いててもなかなか進まないので、JS力を上げるために最近日暮里.jsというクローズドな勉強会に参加させてもらってます。今回で2回目の参加。今回は課題(詳細設計まではいかないけど、こういう方向で実装したらいいよ〜くらいのひな形が渡さる。)が出て、各自実装し、コードレビューをしてもらいました。かなり有用だったので、気になったことなどメモしておきます。
=======================================
【コードの実行速度に関して】
・eachは処理速度が遅い。forのほうが早い。
・forEachはIEの6,7では実装されていない。
・DOMの生成をforの中でやらないほうが良い。部品はループの外で作り、ループの中では部品のclone()で対応する。こうすると、大規模なAPI作成の際にも速度がおちない。
・jQueryで要素を作成する際に、長い文字列を+で繋ぐ場合があるが、配列に入れてjoinした方が実行速度が早くなる。最近のブラウザでは差がないかもしれないが、古いブラウザでは差が出てくる場合も。
var DOM = ’<ul>’+’<li></li>’+’<li></li>’+’<li></li>’+’<ul>’;
var DOM = [’<ul>’,’<li></li>’,’<li></li>’,’<li></li>’,’<ul>’].join();
【実行時間の測定について】
曰く、『推測より計測』。
console.time(“start”);
console.timeEnd(“end”);
【初期化の際のオプションをどこで設定するか】
コンストラクタを別に用意すればいいのかなーと思っていたんですが、初期化の際にオプションを設定したいときはinitの引数に持たせれば良いとのこと。例えば第一引数が必須で、第二引数がオプション、みたいな。引数にオブジェクトを取るようにすれば、初期化の際に様々なプロパティを設定できます。変数の宣言の仕方とか勉強になるから、ライブラリを読むのがおすすめだそうです。
例:タブを作成する際に、初期表示されたいタブを指定できるようにする。
function init(el,options){
options = options || {};
var def = options.default || 0;
chandgeTab(def);
}
init($el,{default:3,cls:‘test’}
【リテラルについて】
Javaでもよく聞いた「リテラル」という言葉。JavaScriptの関数も関数リテラルというリテラルです。「リテラル=ありのまま。展開されないという意味。ありのままの順番で実行されるイメージ。」という説明がありました。
var xxx = function(){};
function xxx(){};
【カプセル化とインターフェースについて】
無名関数でくるんでカプセル化し、windowオブジェクトに対してエクスポートして関数を利用するためのインターフェースを提供すると、堅牢になる。
【変数の命名について】
jQueryを使ったコードで、変数に’$'がついているのがあるけど、jQueryオブジェクトだよっていう意味。
=======================================
【その他便利ツール】
話の中で出てきた開発に役立つ便利ツールなど。
・Compass
http://compass-style.org/
Sass,LESS,Compassの説明と使い方の紹介がありました。かなり便利そう。
・P4Merge(ソースコードの比較、マージツール)
[参考] http://d.hatena.ne.jp/nakamura001/20110321/1300699836
ソースコードの比較ツールにはWinMergeを使ってるけど、Macにはないらしいので、これ。
・入門bash
・Mac Vim
http://code.google.com/p/macvim-kaoriya/
ターミナルを使うときに参考になるサイト→黒い画面:http://kuroigamen.com/
・google transrateのちょっと便利な使い方
chromeの検索エンジンの管理で、google transrateの設定をしておくと、パラメータに訳したい文字を入れるだけですぐに翻訳ができる。
[参考]chrome ヘルプ:検索エンジンを管理する
=======================================
コードレビューなんてJavaでのOJT以来だったけど、めちゃくちゃ学びになりました。気づかないうちにすごい変なことしてたり。自分で考えて書いて、レビューして直すみたいなループは必要ですね。講師の方々に感謝。
おさらいしてみて思ったのが、聞いて分かったつもりになってても、コード書こうとすると疑問に思うことがあったりして、やっぱ手を動かさないと理解ってすすまない。のろのろペースでもいいから吸収していけたらいいなぁ。