javascriptの複雑の複雑さとコードの品質について「メモ」(かなり途中)
http://www.slideshare.net/JarrodOverson/complexity-28214103 を読んだメモ
かなり途中ですごく荒削りです。
重要事項
- Javascriptは動的言語である
- 未熟なツールとIDE
- モジュールのスタイルが乱暴
- ベストプラクティスは言語の進化によって変化する
サーバとクライアントが似てるようで異なる
人材がいない
- クロージャーがわかる人(少ない)
- jQueryのエキスパート(さらに少ない)
- webプラットフォームの専門家(もっと少ない)
進歩は驚異
- そしてそれについていくのは難しい
- 新しい技術は使用できなくなる場合があり、実際にそれを利用できるようにする必要もある
リファクタリングは容易ではない
- コールバック地獄はただ深いネスト以上のもの。
- IDEはまだあまり役立たない
- しかし、柔軟性はどこよりもWEB上の方が重要
WEBは難しい( The Web is hard )
- WEBアプリケーションは解決されていない
- 事実巨大な方向転換と、同じ道をたどっている
多くのソリューションはまだ存在しない。
jsは中立のリードにフリーランでも、最終的な形ではありません。(わからん。。。)
静的解析とlinting(lint)
静的解析とlintingはあなたのコードを尊重し、体系化する
- すべてのコードが同じになるはず
- スタイル
- 命名
- 句読点
- インデント
- すべてのコードが同じになるはず
GitHubの分析に基づいたコーディング規則
- 90%以上が、最後のコンマを使用
//最後のカンマ var foo = 1, bar = 2; //最初のカンマ var foo = 1 ,bar = 2;
- 80%以上が、スペースを利用したインデント
- 55%以上が、単一引用符を使用する
緩い施行は違反を生む
- 警告はビルド失敗する必要がある
- これらはテストの失敗と同様に重要
対応するオプションが存在
- JSLint
- Closure Linter
- JSHint
- ESLint
- これらを積極的に利用
循環複雑度はコードのブロックパスの数
lint*1 ⇒wikipedia
複雑度の可視化( visualizing complexity )
*1:主にC言語のソースコードに対し、コンパイラより詳細かつ厳密なチェックを行うプログラム