「本書で提供するのは、1つのベストプラクティス集である。コードの作成方法に関する誰かの机上の理論ではなく、実際のコーディング方法に関する実体験に基づいており、首尾一貫し、用途が広く、バランスよくまとめられている。何よりも、これは実際にうまくいくプラクティス集であり、世界中の多くの開発者によってすでに使用されている。Perl自体と同様に、これらのガイドラインの目的は、開発者にわずらわしさを感じさせずに、作業を行うための手助けをすることである。」(本書「はじめに」より)
Perlベストプラクティス
Damian Conway 著、株式会社クイープ 訳
- TOPICS
- Programming , Perl
- 発行年月日
- 2006年08月
- PRINT LENGTH
- 520
- ISBN
- 4-87311-300-8
- 原書
- Perl Best Practices
- FORMAT
目次
はじめに 1章 ベストプラクティス 1.1 3つの目標 1.1.1 堅牢性 1.1.2 効率性 1.1.3 保守性 1.2 本書について 1.3 新しい習慣 2章 コードのレイアウト 2.1 かっこ 2.2 キーワード 2.3 サブルーチンと変数 2.4 組み込み関数 2.5 キーとインデックス 2.6 演算子 2.7 セミコロン 2.8 コンマ 2.9 行の長さ 2.10 インデント 2.11 タブ 2.12 ブロック 2.13 チャンク化 2.14 Else 2.15 縦の整列 2.16 長い文の分割 2.17 非終端式 2.18 優先度による分割 2.19 代入 2.20 3項演算子 2.21 リスト 2.22 自動レイアウト 3章 命名規則 3.1 識別子 3.2 ブール 3.3 参照変数 3.4 配列とハッシュ 3.5 アンダースコア 3.6 大文字の使い分け 3.7 略記 3.8 意味不明な略記 3.9 意味不明な名前 3.10 ユーティリティサブルーチン 4章 値と式 4.1 文字列デリミタ 4.2 空の文字列 4.3 1文字で構成される文字列 4.4 エスケープ文字 4.5 定数 4.6 先頭のゼロ 4.7 長い数字 4.8 複数行の文字列 4.9 ヒアドキュメント 4.10 ヒアドキュメントのインデント 4.11 ヒアドキュメントのターミネータ 4.12 ヒアドキュメントの引用符 4.13 裸のワード 4.14 ファットコンマ 4.15 シンコンマ 4.16 優先度の低い演算子 4.17 リスト 4.18 リストのメンバーシップ 5章 変数 5.1 レキシカル変数 5.2 パッケージ変数 5.3 ローカル化 5.4 初期化 5.5 句読点変数 5.6 句読点変数のローカル化 5.7 マッチ変数 5.8 ドル記号とアンダースコア 5.9 配列のインデックス 5.10 スライス 5.11 スライスのレイアウト 5.12 スライスのファクタリング 6章 制御構造 6.1 ifブロック 6.2 ポストフィックスセレクタ 6.3 ほかのポストフィックス修飾子 6.4 否定制御文 6.5 Cスタイルのループ 6.6 不要な添え字 6.7 必要な添え字 6.8 反復子変数 6.9 非レキシカルループ反復子 6.10 リストの生成 6.11 リスト選択 6.12 リスト変換 6.13 複雑なマッピング 6.14 リスト処理の副作用 6.15 マルチパート選択 6.16 値の交換 6.17 表形式の3項演算子 6.18 do-whileループ 6.19 線形コーディング 6.20 分散制御 6.21 やり直し 6.22 ループラベル 7章 ドキュメント 7.1 ドキュメントの種類 7.2 ひな形 7.3 拡張ひな形 7.4 場所 7.5 近接性 7.6 位置 7.7 テクニカルドキュメント 7.8 コメント 7.9 アルゴリズムのドキュメント 7.10 補足のためのドキュメント 7.11 防御的なドキュメント 7.12 暗示的なドキュメント 7.13 言説的なドキュメント 7.14 校正 8章 組み込み関数 8.1 ソート 8.2 リストの反転 8.3 スカラーの反転 8.4 固定幅のデータ 8.5 分離されたデータ 8.6 可変幅のデータ 8.7 文字列の評価 8.8 ソートの自動化 8.9 部分文字列 8.10 ハッシュ値 8.11 グロブ 8.12 スリープ 8.13 mapとgrep 8.14 ユーティリティ 9章 サブルーチン 9.1 呼び出し構文 9.2 同音異義語 9.3 引数リスト 9.4 名前付きの引数 9.5 欠けている引数 9.6 引数のデフォルト値 9.7 スカラーコンテキストでの戻り値 9.8 コンテキストに応じた戻り値 9.9 マルチコンテキストでの戻り値 9.10 プロトタイプ 9.11 暗黙的なリターン 9.12 失敗のリターン 10章 I/O 10.1 ファイルハンドル 10.2 間接的なファイルハンドル 10.3 ファイルハンドルのローカル化 10.4 きちんと開く 10.5 エラーチェック 10.6 クリーンアップ 10.7 入力ループ 10.8 行ベースの入力 10.9 単純な丸呑み 10.10 強力な丸呑み 10.11 標準入力 10.12 ファイルハンドルへの出力 10.13 単純なプロンプト 10.14 対話性 10.15 強力なプロンプト 10.16 プログレスインジケータ 10.17 自動プログレスインジケータ 10.18 自動フラッシュ 11章 参照 11.1 逆参照 11.2 中かっこで囲まれた参照 11.3 シンボリック参照 11.4 循環参照 12章 正規表現 12.1 拡張フォーマット 12.2 行の境界 12.3 文字列の境界 12.4 文字列の末尾 12.5 任意の文字とのマッチ 12.6 遅延フラグ 12.7 中かっこのデリミタ 12.8 その他のデリミタ 12.9 メタ文字 12.10 名前付き文字 12.11 プロパティ 12.12 ホワイトスペース 12.13 制約なしの繰り返し 12.14 捕捉のためのかっこ 12.15 捕捉された値 12.16 捕捉変数 12.17 トークンごとのパターンマッチ 12.18 表形式の正規表現 12.19 正規表現の生成 12.20 既製の正規表現 12.21 選択肢 12.22 選択肢のリファクタリング 12.23 バックトラック 12.24 文字列比較 13章 エラー処理 13.1 例外 13.2 組み込み関数のエラー 13.3 コンテキストに応じたエラー 13.4 システムエラー 13.5 回復可能なエラー 13.6 エラーの報告 13.7 エラーメッセージ 13.8 エラーの文書化 13.9 オブジェクト指向例外 13.10 揮発性のエラーメッセージ 13.11 例外階層 13.12 例外処理 13.13 例外クラス 13.14 例外の展開 14章 コマンドライン処理 14.1 コマンドラインの構造 14.2 コマンドラインの規則 14.3 メタオプション 14.4 上書き処理を指定する引数 14.5 コマンドラインの処理 14.6 インターフェイスの一貫性 14.7 プログラム間の一貫性 15章 オブジェクト 15.1 オブジェクト指向の使用 15.2 判断基準 15.3 擬似ハッシュ 15.4 制限付きハッシュ 15.5 カプセル化 15.6 コンストラクタ 15.7 クローン化 15.8 デストラクタ 15.9 メソッド 15.10 アクセサ 15.11 lvalueアクセサ 15.12 間接的なオブジェクト 15.13 クラスのインターフェイス 15.14 演算子のオーバーロード 15.15 型の強制変換 16章 クラス階層 16.1 継承 16.2 オブジェクト 16.3 オブジェクトのブレス化 16.4 コンストラクタの引数 16.5 基底クラスの初期化 16.6 オブジェクトの生成と破棄 16.7 クラス階層の自動生成 16.8 属性の破棄 16.9 属性の構築 16.10 強制的な型変換 16.11 累積メソッド 16.12 自動的なロード 17章 モジュール 17.1 インターフェイス 17.2 リファクタリング 17.3 バージョン番号 17.4 バージョン要件 17.5 エクスポート 17.6 宣言によるエクスポート 17.7 インターフェイス変数 17.8 モジュールの作成 17.9 標準ライブラリ 17.10 CPAN 18章 テストとデバッグ 18.1 テストケース 18.2 モジュール型のテスト 18.3 テストスイート 18.4 失敗 18.5 何をテストするか 18.6 デバッグとテスト 18.7 制約 18.8 警告 18.9 正確さ 18.10 制約の無効化 18.11 デバッガ 18.12 手動でのデバッグ 18.13 半自動デバッグ 索引