プログラミングのセオリー プログラムの価値を高める"定石"を学ぶ

[表紙]プログラミングのセオリー プログラムの価値を高める

A5判/328ページ

定価(本体2,380円+税)

ISBN 978-4-7741-3628-8

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

書籍,雑誌,セミナーと,そのわかりやすい解説で多くのプログラマから支持を集める矢沢久雄氏の書き下ろしです。

プログラマとしてより高いレベルを目指す方を対象に,プログラミングの達人たちが長い年月をかけて編み出してきた知恵とテクニックを「セオリー(定石)」として1冊にまとめました。効率的で,改造しやすく,速いソースコードはどうすれば書けるのか,書くためのポイントは何か。上級プログラマへの道を後押しする本格派の解説書です。

こんな方におすすめ

  • プログラマとして1年以上のキャリアをお持ちの方
  • プログラミングの腕を磨きたい方
  • 部下・後輩の指導用のテキストをお探しの方

この書籍に関連する記事があります!

ツールいらずのデバッグテクニック
突然ですが,プログラマの皆さんにクイズです。リスト1は,2つの整数の最大公約数を求めるC言語の関数です。大きい方の数から小さい方の数を引くことを繰り返して最大公約数を求める「ユークリッドの互除法」と呼ばれるアルゴリズムを使っています。

目次

Chapter1 書式のセオリー
プロは書き方のルールを守る

  • 1 わかりやすいプログラムの第一歩は名前付けから始まる
    【命名規約】
  • 2 統一性のある書式がメンテナンスをスムーズにする
    【ソースコードの書式】
  • 3 誰もが一目でわかり,混乱を防ぐコメントの付け方
    【コメント】
  • 4 数値に名前を付けて,作業の手間を省く
    【マジックナンバー】
  • 5 思わぬバグを生む落とし穴は,この方法で避ける
    【ハードコーディング】
  • 6 短いことより,わかりやすいことの方が価値がある
    【トリッキーなコード】
  • 7 トラブルのタネ,一本ソースは関数化で防止
    【恐怖の一本ソース】

Chapter2 変数と演算のセオリー
見落としがちなプログラミングの決まり事

  • 1 int型とdouble型なら余計な問題に巻き込まれない
    【データ型】
  • 2 浮動小数点数には誤差が付きもの
    【浮動小数点数の誤差】
  • 3 適切な初期化で,処理を高速化,コードを短縮できる
    【変数の初期化】
  • 4 #defineとconstの使い分けの意味を理解する
    【#defineとconst】
  • 5 わかりやすいプログラムはカッコを省かない
    【演算子の優先順位】
  • 6 数字に強いプログラマは数の調整法を知っている
    【乱数と丸め】
  • 7 無限大,データの異常など,おかしな結果の原因を押さえる
    【0除算とオーバーフロー】

Chapter3 制御構造のセオリー
考えをわかりやすく,スマートに書く

  • 1 考えをそのまま表せば,見直しがスムーズになる
    【forとwhile,ifとswitchの使い分け】
  • 2 goto文は毒にも薬にもなる。盲目的に拒否しない
    【goto文】
  • 3 状態を示す変数を上手に活用する
    【フラグ】
  • 4 while文と再帰呼び出しに潜むバグに注意する
    【無限ループ】
  • 5 状態遷移図はスマートなプログラムを書くヒントになる
    【状態遷移】

Chapter4 関数のセオリー
作りやすく,使いやすくするためのテクニックがある

  • 1 迷ったときは標準ライブラリ関数を真似る
    【引数の順序と戻り値】
  • 2 すでにある関数を内部に取り込んで効率を上げる
    【ラッパ関数】
  • 3 優れたプログラマは,むやみに引数を増やさない
    【引数の数を減らす】
  • 4 再帰はメリットとデメリットを秤にかけてから使う
    【再帰呼び出し】
  • 5 基本機能を複数回呼び出してコードを短くする
    【花文字の回転と拡大】
  • 6 メンテナンスが楽で,再利用性に優れた関数の作り方
    【関数の構造】
  • 7 改造しやすいモジュールを作るポイント
    【モジュール間結合度とモジュール強度】

Chapter5 ポインタのセオリー
 きちんと理解して1つ上のレベルに到達する

  • 1 ポインタはメモリとデータの仕組みから理解する
    【引数をポインタにする】
  • 2 やっかいなバグ=メモリリークの発生の原因と防ぎ方
    【戻り値をポインタにする】
  • 3 リスト構造は「つながり情報」で考えればわかる
    【リスト構造】
  • 4 ポインタの配列を活用する場面を知る
    【ポインタのポインタ】
  • 5 委譲がわかれば,イベントの本質をつかめる
    【イベントハンドラ】

Chapter6 速く,小さく,わかりやすくするセオリー
 最適化のためのアイディア

  • 1 速さを取るか? 大きさを取るか?
    【実行速度 vs. サイズ】
  • 2 目印のデータを使って処理を高速化する
    【番兵】
  • 3 ユーザーに遅いと感じさせないテクニック
    【見かけ上の速さ】
  • 4 条件式をわかりやすく,ブロックを少なくする
    【複雑な条件式とブロック】
  • 5 後々の負担を減らす行為は,すべてリファクタリング
    【リファクタリング】

Chapter7 オブジェクト指向のセオリー
 考え方とテクニックを分けてとらえる

  • 1 どんな言語でもオブジェクト指向を実践できる
    【オブジェクト指向とプログラミング言語】
  • 2 なぜあるのかがわかれば,使いこなせる
    【ラッパクラス】
  • 3 オブジェクト指向の考え方とテクニックを区別する
    【継承,カプセル化,多態性】
  • 4 デザインパターンからOOPにおける工夫のポイントを知る
    【GoFデザインパターン】
  • 5 クラスライブラリと自分のプログラムをつなぐための鍵
    【インターフェイス】

Chapter8 エラーとデバッグのセオリー
 エラー,デバッグと上手に付き合う

  • 1 エラーの確認は無駄を省いて行う
    【エラーチェック】
  • 2 エラーの通知方法は関数や言語によって使い分ける
    【エラーを知らせる方法】
  • 3 コンパイルエラーの原因はコメントで囲んで絞り込む
    【コンパイルエラー】
  • 4 ツールいらずのデバッグテクニック
    【printfデバッグ】
  • 5 処理の時間と回数を把握して,プログラムを高速化する
    【処理時間と呼び出し回数】

著者プロフィール

矢沢久雄(やざわひさお)