ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)

  • 60人登録
  • 4.18評価
    • (7)
    • (6)
    • (4)
    • (0)
    • (0)
  • 3レビュー
制作 : Steve Maguire  関本 健太郎 
  • アスキー (1995年3月発売)
  • Amazon.co.jp ・本 (261ページ)
  • / ISBN・EAN: 9784756103642

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)の感想・レビュー・書評

  • コードコンプリートやプログラミング作法で引用されている1990年ごろの書籍。

    1989年12月にANSI C89、1990年12月にISO C90 が制定されたが、コンパイラメーカ独自の実装が乱立していたり、Windows 3.xなどの16bit OSが主流だった当時ならではの注意点で、今日では定石として定着しているようなものなどもあり、やや役割を終えた感もある。

    しかし防御的プログラミングで仕様の本質から外れるようなフェールソフト化した結果、見つけづらいバグを埋め込むこともある。過剰な柔軟性もバグの元になる、といった指摘は今でもその光を失っていないと感じた。

    技術的チャレンジやひとりよがりな親切心から、必要以上の機能を追加したりどんな場合にも使えるような柔軟性を持たせすぎることで、メンテナンスのしづらいシステムになり、膨大なコストがかさんだり、リリース中止になったりすることを繰り返した点は当時、どこの会社でも見られた闇歴史だったらしい。

    今となっては他書籍でも注意されている部分が多いが、この当時ですら、メモリサイズや数クロックの微々たる性能差のために、可読性を犠牲にすることの問題点を指摘するなど参考になる部分も多い。

    ---
    ライティングソリッドコード

    STEVE MAGUIRE


    1995/03/21 初版発行
    1993年1月序文

    1981年UNIXの走るPDP-11、アセンブラ、Pascalを用いるのが普通。
    1983年8080/Z80, 6502, Z8000, TI99/a, 8086 むけインタプリタ。
    1985年IBM PCビデオモードの規格統一。

    ---
    著者1986年マイクロソフト入社。Macintosh向けアプリケーション開発

    プログラム書法 The Elements of Programming Style Brian Kernighan, P.J.Plauger

    ガイダンスには従うべきだが、ガイダンスを破ることで結果がよくなるときには
    破るべきである。


    どうしたらこのバグを自動的に検出することができただろうか?
    どうしたらこのバグを防ぐことができただろうか?

    ANSI標準以前のコードとの互換性のため、char int
    ハンガリアン記法 マイクロソフト Charles Simonyi
    イディオム : よく使われるひとまとまりの命令。

    打ちまくって観察する pound and observe テストしかテスターにはできない。

    コンパイラの警告を使う。lint 静的解析ツールを使う。

    出荷およびデバッグバージョンの両方を管理する。
    アルゴリズムも2つメンテナンスすることでバグを見つけやすくする。
    ASSERTをデバッグバージョンのみで使う。両方を常に正常に動作させる。
    ASSERTになった原因をコメント文で残す。アサート、デバッグ出力のみでしか使用しない変数や処理がないように注意する。
    防御的プログラミングによるフェールソフトでバグを見つけづらくするな。
    引数に柔軟性をもたせすぎるな。
    ブールの引数は直感的でないことが多いので使わない。
    危険性を警告する関数コメントを記載する。

    P137 ANSI標準は既存のコードを重視し、ポータブルなコードが保証されなくても、
    速度を向上させる 実装を行って良いとした。コンパイラメーカのため。

    トリッキーな実装で、オーバーフロー、アンダーフローを見落とさない。
    アドレス値の演算をミスしない。
    コードの冗長性を取り除くのと、1行にまとめることは同じではない。
    コードの共通部を複数箇所に配置するようなif文はNG。高速化?省メモリ?より
    読みやすさ。


    char 型が0-127
    int x:8 は 0 - 127
    signed int x:8 なら -1... 続きを読む

  • C言語開発のノウハウがぎっしりつまった本である。
    例えば、C言語で短いコードが、機械語で短い命令群になるとは限らないことを述べているところが気に入った。結果として、
    「論理式に対しては”||”を使用せよ。条件式に対しては?:演算子を使用せよ。
     条件文に対してはifを使用せよ。」
    教訓を導き出している。
    付け加えるとすれば、始めて各パターン、始めてコンパイルするコンパイラ(CPU)では、
    1度はアセンブラに直して確認しなさいと書いて欲しかったかもしれない。
    ps.
    自動車向けのコーディング標準であるMISRA-Cでは十分カバーできていないところを、
    本書では述べている点がいくつかあるようなので、併せて取り組むとよいと思った。
    MISRA-Cでは、C言語の落とし穴とSafer-Cを参照している。
    本書も参照文献の一つに加えるとよいと思う。

  • ソースコードを書く人すべてに読んでもらいたい本。ステップ実行を行う・assert()を活用する等、役に立つ話ばかりです。

全3件中 1 - 3件を表示

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)を本棚に登録しているひと

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)を本棚に「読みたい」で登録しているひと

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)を本棚に「いま読んでる」で登録しているひと

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)を本棚に「読み終わった」で登録しているひと

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)の作品紹介

ソフトウェアの複雑化、大型化にともなって増加するバグを根絶するためにマイクロソフトが実践しているプログラミングノウハウを一挙公開。

ライティングソリッドコード―バグのないプログラミングを目指して (マイクロソフトプレスシリーズ)はこんな本です

ツイートする