実務に耐えうる準備をするための項目比較
下記の表1は、前述の書籍を障害(仕様と結果が一致しないこと)の出にくいプログラムを作る上で必要と考えた要素で比較した表です。「品質のよい」ではなく「障害の出にくい」と書いている点に注意してください。
品質がよいとは、変更しやすい、読みやすい、簡単にプログラムを入れ替えられる、という風に言い換えることもできます。入門段階では欲張らず、まずは障害の出にくいプログラムを作ることに専念してください。ここにある項目すべてを理解できるのが理想ですが、仕事や研究を進める中で分からない部分が出てきた場合に、この表に戻って読んでいただいても結構です。
入門編とオブジェクト指向編に分けているため、表1は入門編のみの評価項目となっています。少し見づらいこともあり、添付ファイルとして前編・後編を合わせたExcelの表を用意しています。詳しくはこちらをダウンロードして確認するとよいでしょう。
なお、すべての本の目次を列挙しているわけではなく、入門時の勘所となる項目を列挙しています。従って、入門書に必ず記載されている演算子やif文・for文・while文は比較するための項目として含めていない点について注意してください(表の見方は表下部を参照)。
| 評価項目 | 明解Java | Java言語プログラミングレッスン | やさしいJava | わかりやすいJava | ||||||
| プログラムのコンパイルの仕方、実行の仕方 | ○ | 6 | 上 | ○ | 6 | ○ | 8 | 入 | ○ | 448 |
| mainメソッドの意味 | ×(*1) | - | 上 | ○ | 18 | ○ | 22 | 入 | ○ | 366 |
| 識別子 | ○ | 294 | × | - | △ | 45 | 入 | △(*2) | 389 | |
| 演算子と優先順位 | ○ | 88 | 上 | ○ | 334 | ○ | 91 | 入 | ○ | 576 |
| 変数 | ○ | 26 | 上 | ○ | 51 | ○ | 44 | 入 | ○ | 64 |
| 文字と文字列の違い | ○ | 106 | 上 | ○ | 61 | ○ | 31 | 入 | ○ | 60 |
| 基本型と参照型の違い | ○ | 142 | 上 | ○ | 62 | ○ | 198 | 入 | ○ | 58 |
| java.util.Scanner | ○ | 36 | 上 | △(*3) | - | △(*3) | - | × | - | |
| 式 | ○ | 62 | ×(*4) | - | ○ | 77 | ×(*4) | - | ||
| if文の詳細な構文 | ○ | 65 | 上 | △(*5) | 85 | △(*5) | 85 | 入 | △(*5) | 254 |
| 短絡評価(short circuit evaluation) | ○ | 69 | × | - | × | - | 入 | ○ | 216 | |
| 後置増分(減分)演算子と前置増分(減分)演算子 | ○ | 112 | 上 | ○ | 172 | × | - | 入 | ○ | 306 |
| break文とcontinue文(ラベル付きを含む) | ○ | 101 | ×(*4) | - | ○ | 82 | 入 | ○ | 96 | |
| printfメソッド | ○ | 134 | 上 | ○ | 45 | × | - | オ | ○ | 383 |
| 基本型の縮小変換、拡大変換 | ○ | 164 | 上 | △(*6) | 217 | ○ | 96 | 入 | ○ | 84 |
| エスケープ・シーケンス(拡張表記) | ○ | 170 | 上 | ○ | 26 | ○ | 32 | 入 | ○ | 81 |
| 配列の初期化と代入 | ○ | 188 | 上 | ○ | 218 | ○ | 188 | 入 | ○ | 312 |
| 拡張for文 | ○ | 196 | × | - | × | - | 入 | ○ | 190 | |
| 配列のコピー(配列変数の代入との違い) | ○ | 200 | × | - | × | - | 入 | ○ | 352 | |
| ガーベジコレクション | ○ | 207 | 下 | ○ | 126 | ○ | 322 | オ | △(*7) | 134 |
| finalizeメソッド | × | - | 下 | ○ | 138 | ○ | 323 | × | - | |
| 仮引数と実引数の区別 | ○ | 224 | 下 | ○ | 14 | ○ | 244 | 入 | ○ | 393 |
| enum | × | - | 下 | ○ | 363 | × | - | オ | ○ | 484 |
| マジックナンバーの定数化 | × | - | 下 | ○ | 33 | × | - | × | - | |
| 数の表記法 | × | - | 上 | ○ | 337 | × | - | 入 | △(*8) | 59 |
| 予約語 | × | - | 上 | ○ | 341 | × | - | 入 | ○ | 67 |
- *1 mainメソッドやコマンドライン引数についての言及はあるが、『Java言語プログラミングレッスン』p18-19の「mainというメソッドが実行開始位置であり、スタートポイントなのです」のように「実行開始位置」である旨の説明が必要。
- *2 識別子は変数だけではなく、クラス名やメンバにも当てはまるが、その説明がp66とp389をくっつけないと理解できないところが分かりづらい。
- *3 BufferdReaderを使用した標準入力からの読み取りの説明はある。しかしJava SE 5から導入されたScannerを使った方が便利であり、コードもすっきりする。
- *4 式の詳細な説明がない。
- *5 中カッコ(ブロック)を明記しているから問題ではないが、中カッコを明記しなかった場合の落とし穴についての記述がない。『明解Java』のColumn 3-2(p65)にあるような説明が必要。
- *6 明確な説明がない。
- *7 詳細な説明が必要。
- *8 『Java言語プログラミングレッスン(上) Java言語を始めよう』のような詳細な説明があった方がよい。
表の見方
- 『改訂第2版 Java言語プログラミングレッスン』は上下巻に分かれており、どちらに記載されているかを「上」・「下」で、『わかりやすいJava』は入門編とオブジェクト指向編に分かれており、どちらに記載されているかを「入」・「オ」という表記で区別しています。
- 数字は○や△の場合、記載のあるページ数を示しています。
- ○、△、×とあるのは適切な説明があるかどうかを示しています。
- 適切:○
- 不十分:△
- 説明自体がない:×
なお、△や×に(*+番号)が付いているものは、表の後に注釈があるものです。
