Title: プログラム書法 (The Elements of Programming Style)
Section: 格言

教訓は、各セクションの最後に「汚れ仕事は機械にやらせよう」といった簡潔な格言としてまとめられている。※現代語に一部置き換えたため、訳本の訳とは必ずしも一致しない。尚、functionは「関数」と訳されるが「機能」の意をもち、両義的に使われるため、直訳では原意を十分に伝えきれない。Write clearly – don't be too clever.わかりやすく書こう - うますぎるプログラムはいけないSay what you mean, simply and directly.いいたいことを単純素直にいおうUse library functions whenever feasible.ライブラリ関数を使おうAvoid too many temporary variables.一時変数はなるべく使わないことWrite clearly – don't sacrifice clarity for efficiency.わかりやすく書こう - 効率のためにわかりやすさを犠牲にしてはいけないLet the machine do the dirty work.汚れ仕事は機械にやらせようReplace repetitive expressions by calls to common functions.同じ表現の繰り返しは共通関数の呼び出しに変えようParenthesize to avoid ambiguity.括弧を使って誤解を避けようChoose variable names that won't be confused.混同の恐れのない名前を使おうAvoid unnecessary branches.無用な分岐は避けようIf a logical expression is hard to understand, try transforming it.論理表現がわかりにくいときは表現を変えようChoose a data representation that makes the program simple.プログラムが単純になるようデータ表現を選ぼうWrite first in easy-to-understand pseudo language; then translate into whatever language you have to use.わかりやすい擬似コードで書いてから実際の言語に落とそうModularize. Use procedures and functions.モジュール化し、手続きと関数を使おうAvoid gotos completely if you can keep the program readable.読みやすさを保てる限り、GOTO文は避けようDon't patch bad code – rewrite it.ダメなコードを直すのはやめて、書き直そうWrite and test a big program in small pieces.大きいプログラムは小さい部分に分けて書き、テストしようUse recursive procedures for recursively-defined data structures.再帰的に定義されたデータ構造には再帰手続きを使おうTest input for plausibility and validity.入力の妥当性と有効性をテストしようMake sure input doesn't violate the limits of the program.入力がプログラムの限界を超えていないことを確認しようTerminate input by end-of-file marker, not by count.入力はファイル終端で終了するようにし、回数指定に頼らないIdentify bad input; recover if possible.ダメな入力を特定し、できれば回復しようMake input easy to prepare and output self-explanatory.入力データは準備しやすく、出力はわかりやすくUse uniform input formats.共通の入力フォーマットを使おうMake input easy to proofread.簡単に確認できる入力形式に設計しようUse self-identifying input. Allow defaults. Echo both on output.意味のわかりやすい入力を使おう。デフォルトを許容しよう。出力時に両方とも表示しよう。Make sure all variables are initialized before use.全ての変数を使用前に初期化しようDon't stop at one bug.バグをひとつ見つけたところで止まってはいけないUse debugging compilers.デバッグ機能付のコンパイラを使おうWatch out for off-by-one errors.桁ずれのエラーに注意Take care to branch the right way on equality.条件分岐時の等号を正しく扱おうBe careful if a loop exits to the same place from the middle and the bottom.ループの真ん中や最後から同じ所に抜けるときは気をつけようMake sure your code does "nothing" gracefully.何もしないはずのコードが余計なことをしないようにしようTest programs at their boundary values.境界値でテストしようCheck some answers by hand.出力のいくつかを正解と比べて確認しよう10.0 times 0.1 is hardly ever 1.0.10.0×0.1が1.0になると考えてはいけない7/8 is zero while 7.0/8.0 is not zero.7/8はゼロだが7.0/8.0はゼロではない※整数演算と小数演算に注意Don't compare floating point numbers solely for equality.浮動小数点数が等しいかどうかだけで比較してはならない※同値に複数の表現があり得るMake it right before you make it faster.速くする前に正しくしようMake it fail-safe before you make it faster.速くする前にフェールセーフにしようMake it clear before you make it faster.速くする前にわかりやすくしようDon't sacrifice clarity for small gains in efficiency.わずかな効率向上のためにわかりやすさを犠牲にしてはいけないLet your compiler do the simple optimizations.簡単な最適化はコンパイラに任せようDon't strain to re-use code; reorganize instead.コードを兼用しようとせず、組み直そうMake sure special cases are truly special.特例が本当に特例かを確認しようKeep it simple to make it faster.速くする前に単純さを保とうDon't diddle code to make it faster – find a better algorithm.速くするためにはコードをこねくり回すのでなく、よりよいアルゴリズムを探そうInstrument your programs. Measure before making efficiency changes.効率改善の前にプログラムを計測しようMake sure comments and code agree.コメントとコードを一致させようDon't just echo the code with comments – make every comment count.コメントはコードのオウム返しではなく、意味あるものにしようDon't comment bad code – rewrite it ダメなコードにコメントするのはやめ、コードを書き直そうUse variable names that mean something.意味のわかる変数名をつけようUse statement labels that mean something.意味のわかるステートメントラベルをつけようFormat a program to help the reader understand it.読みやすいようにプログラムをレイアウトしようDocument your data layouts.データのレイアウトをドキュメント化しようDon't over-comment.コメントしすぎないようにしよう現代の読者は、この本の例題が、現在はあまり使われなくなった古い手続き型プログラミング言語（FortranやPL/I）を取り上げていることを欠点と感じるかもしれない。本書が書かれたときには、現在の言語はほとんどなかった。しかし、一般的にスタイルや構造的な問題に関わる本書の指摘の多くは、特定の言語の詳細を超越していると言って良い。