hiromitsuuuuu.log();

to see more to see.

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以来だったけど、めちゃくちゃ学びになりました。気づかないうちにすごい変なことしてたり。自分で考えて書いて、レビューして直すみたいなループは必要ですね。講師の方々に感謝。
おさらいしてみて思ったのが、聞いて分かったつもりになってても、コード書こうとすると疑問に思うことがあったりして、やっぱ手を動かさないと理解ってすすまない。のろのろペースでもいいから吸収していけたらいいなぁ。