JavaScriptのカリスマ的ハッカーが、「読みやすくメンテナンス性の高いJavaScriptコード」という観点から書いた一冊。JavaScriptを知り尽くした著者が自らの開発経験を通して身に付けた、チームで開発する上で、誰もが読め、そしてメンテナンスしやすいコードを書くための規約、プログラミングプラクティス、環境についてのTipsをまとめたものです。多くのJavaScriptプログラマ、特にチームで開発を行い、効率の良い開発方法を模索している開発者にとって貴重な内容です。
メンテナブルJavaScript
―読みやすく保守しやすいJavaScriptコードのための作法
Nicholas C. Zakas 著、豊福 剛 訳
- TOPICS
- Web , JavaScript
- 発行年月日
- 2013年03月
- PRINT LENGTH
- 256
- ISBN
- 978-4-87311-610-5
- 原書
- Maintainable JavaScript
- FORMAT
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
第1刷正誤表
メンテナブルJavaScript第1刷正誤表
2013年5月9日更新位置 | 誤 | 正 |
p.7 下から 6行目 |
ロンのどちらである点です。 | ロンのどちらかである点です。 |
p.22 下から 17行目 |
// Bad: コードとコメントの間に余白がない var result = something + somethingElse; // somethingElseはnullにならない |
// Bad: コードとコメントの間に余白がない var result = something + somethingElse; // somethingElseはnullにならない |
p.119 下から 4行目 |
element.className += " " + className; | this.element.className += " " + className; |
目次 はじめに 第I部 スタイルガイドライン 1章 基本フォーマット 1.1 インデントのレベル 1.2 文の終端 1.3 1行の長さ 1.4 改行 1.5 空行 1.6 命名 1.6.1 変数と関数 1.6.2 定数 1.6.3 コンストラクタ 1.7 リテラル値 1.7.1 文字列 1.7.2 数値 1.7.3 null 1.7.4 undefined 1.7.5 オブジェクトリテラル 1.7.6 配列リテラル 2章 コメント 2.1 1行コメント 2.2 複数行コメント 2.3 コメントを使う 2.3.1 難解なコードにコメントを付ける 2.3.2 エラーになりそうな箇所にコメントする 2.3.3 ブラウザ特有のハック 2.4 ドキュメントコメント 3章 文と式 3.1 波括弧を揃える 3.2 ブロック文での空白 3.3 switch文 3.3.1 インデント 3.3.2 caseから caseに続けられる 3.3.3 default 3.4 with文 3.5 forループ 3.6 for-inループ 4章 変数、関数、演算子 4.1 変数の宣言 4.2 関数の宣言 4.3 関数呼び出しにおける空白 4.4 即時関数呼び出し 4.4.1 strictモード 4.5 等価性 4.6 eval(.) 4.7 プリミティブラッパー型 第II部 プログラミング実践 5章 UI層での疎結合 5.1 疎結合とは? 5.2 CSSから JavaScriptを隔離する 5.3 JavaScriptから CSSを隔離する 5.4 HTMLから JavaScriptを隔離する 5.5 JavaScriptから HTMLを隔離する 5.5.1 代替案 1:サーバからロードする 5.5.2 代替案 2:簡単なクライアントサイドのテンプレート 5.5.3 代替案 3:複雑なクライアントサイドのテンプレート 6章 グローバル変数/関数を作らない 6.1 グローバル変数 /関数の問題 6.1.1 名前の衝突 6.1.2 コードの壊れやすさ 6.1.3 テストが難しくなる 6.2 誤ってグローバル変数が作られる 6.2.1 グローバル変数を避けるには 6.3 1-グローバルのアプローチ 6.3.1 名前空間 6.3.2 モジュール 6.4 0-グローバルのアプローチ 7章 イベント処理 7.1 古典的な使い方 7.2 ルール 1:アプリケーションロジックを切り離す 7.3 ルール 2:イベントオブジェクトを引き回さない 8章 nullとの比較を避ける 8.1 プリミティブ値の判定 8.2 参照値の判定 8.2.1 関数の判定 8.2.2 配列の判定 8.3 プロパティの判定 9章 設定データをコードから切り離す 9.1 設定データとは? 9.2 設定データを外出しする 9.3 設定データを格納するには 10章 自前のエラーを投げる 10.1 エラーの本質 10.2 JavaScriptでエラーを投げる 10.3 エラーを投げると何がいいのか 10.4 いつエラーを投げればいいか 10.5 try-catch文 10.5.1 throwすべきか、それとも try-catchすべきか? 10.6 エラーの型 11章 所有していないオブジェクトを変更しない 11.1 何を所有しているか? 11.2 規則 11.2.1 メソッドをオーバーライドしない 11.2.2 メソッドを新規追加しない 11.2.3 既存メソッドを削除しない 11.3 より良いアプローチ 11.3.1 オブジェクトベース継承 11.3.2 型ベースの継承 11.3.3 Facadeパターン 11.4 ポリフィルについて 11.5 変更を妨げる 12章 ブラウザ判定 12.1 ユーザエージェント判定 12.2 特徴検出 12.3 特徴推定を避ける 12.4 ブラウザ推定を避ける 12.5 何を使うべきか? 第III部 自動化 13章 ファイルとディレクトリの構成 13.1 ベストプラクティス 13.2 基本的配置 14章 Ant 14.1 インストール 14.2 ビルドファイル 14.3 ビルドを実行する 14.4 ターゲットの依存関係 14.5 プロパティ 14.6 Buildr 15章 バリデーション 15.1 ファイルを探す 15.2 タスク 15.3 ターゲットを改良する 15.4 その他の改善項目 15.5 Buildrタスク 16章 ファイルの連結 16.1 タスク 16.2 行末 16.3 ヘッダとフッタ 16.4 ファイルの焼き上げ 17章 ミニファイと圧縮 17.1 ミニファイ 17.1.1 YUI.Compressorを使ったミニファイ 17.1.2 Closure.Compilerを使ったミニファイ 17.1.3 UglifyJSを使ったミニファイ 17.2 圧縮 17.2.1 実行時圧縮 17.2.2 ビルド時圧縮 18章 ドキュメンテーション 18.1 JSDoc.Toolkit 18.2 YUI.Doc 19章 自動テスト 19.1 YUI.Test.Selenium.Driver 19.1.1 Seleniumサーバを設定する 19.1.2 YUI.Test.Selenium.Driverを設定する 19.1.3 YUI.Test.Selenium.Driverを使う 19.1.4 Antターゲット 19.2 Yeti 19.3 PhantomJS 19.3.1 インストールと使い方 19.3.2 Antターゲット 19.4 JsTestDriver 19.4.1 インストールと使い方 19.4.2 Antターゲット 20章 統合する 20.1 ミッシングピース 20.2 ビルドを計画する 20.2.1 開発ビルド 20.2.2 統合ビルド 20.2.3 リリースビルド 20.3 CIシステムを使う 20.3.1 Jenkins 20.3.2 その他の CIシステム 付録 A JavaScriptスタイルガイド A.1 インデント A.2 行の長さ A.3 プリミティブのリテラル A.4 演算子の間隔 A.5 括弧の間隔 A.6 オブジェクトリテラル A.7 コメント A.7.1 1行コメント A.7.2 複数行コメント A.7.3 コメントのアノテーション A.8 変数の宣言 A.9 関数の宣言 A.10 命名 A.11 strictモード A.12 代入 A.13 等号演算子 A.14 三項演算子 A.15 文 A.15.1 簡単な文 A.15.2 return文 A.15.3 複文 A.15.4 if文 A.15.5 for文 A.15.6 while文 A.15.7 do文 A.15.8 switch文 A.15.9 try文 A.16 空白 A.17 避けるべき事柄 付録 B JavaScriptツール B.1 ビルドツール B.2 ドキュメンテーション作成ツール B.3 Lintツール B.4 ミニファイツール B.5 テストツール 索引