developer's diary

最近はc#のエントリが多いです

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言語のソースコードに対し、コンパイラより詳細かつ厳密なチェックを行うプログラム