|
この記事は、翔泳社で実施する独習ゼミの研修を紙上で再現したものです。
使用したプログラミング言語はJavaです。プログラミング経験の有無から「初級コース」と「中級コース」に分かれて、それぞれ4問ずつプログラミングの課題に取り組んでいただきました。講師を務めた私の役目は、赤ペンでソースコードを添削することでした。提出されたプログラムは、どれもきちんと動作しましたが、誰にも共通した問題がありました。それは「プロらしくない」ということです。
実際に内定者さん(学生さん)から提出していただいたソースコードと添削結果を掲載しますので、皆さんも一緒にプロらしさとは何かを考えてみてください。また、指導する立場の人は、連載で指摘していく項目を意識しながら、後輩指導に取り組んでみるのもよいでしょう。今回は、初級コース第3回の課題を紹介します。なお、提出者の名前は匿名であり、ソースコードも一部を抜粋したものを掲載しています。
☆ ☆

|
ボタン操作で四則演算ができる「電卓アプレット」を作成してください。
使いやすいユーザーインターフェイスを工夫してください
|


[プログラムを見る]

コメントは、大きなものから優先しましょう
今回もコメントの付け方をアドバイスさせていただきます。コメントは「このプログラムは何であり、いつ誰が作ったのか」→「このクラスは何か」→「個々のメンバは何か」の順に付けてください。
「メソッド内の細かな処理」のコメントがあるのに、メソッド全体のコメントがないとわかりにくいプログラムになります。「メソッドの処理内容を追えば何をするメソッドなのかわかる」というのは小さなプログラムの場合だけです。大規模なプログラムでは、メソッドの処理内容などはクラスの作者だけが分かればよいことであって、クラスの利用者は「メソッド全体の機能(引数、機能、戻り値)」を知りたいのです。
マジックナンバーを使わないようにしましょう
マジックナンバー(magic number:魔法の数字)とは、123や456のように、プログラムの中に直接数値で記述されているデータのことです。マジックナンバーは、それが何を意味しているか分かりにくいものです。さらに、同じマジックナンバーが何度も使われていると、プログラムの修正が面倒になり、プログラムのバグの原因にもなります。
例えば、現状のプログラムでは、42行目の以下の部分で17というマジックナン バーが使われています。
42: // 2つ目のパネルに17個の電卓ボタンを配置する。
43: int i;
44: Button bt[] = new Button[17];
45: for (i = 0; i < 17; i++) {
46: bt[i] = new Button(BTN_LBL[i]);
47: p2.add(bt[i]);
48: bt[i].addActionListener(this);
49: }
50: }
|
ボタンの数を16個に変更することになったとしましょう。2箇所の17を16に書き換える必要がありますね。もしも後にある17の書き換えを忘れたら、例外が発生してしまいます。大規模なプログラムなら、発見困難なバグを生む可能性もあります。
マジックナンバーは、以下のようにfinalキーワードで定数を定義することで防げます。これなら、定数の宣言部(1箇所)だけを17から16に書き換えるだけで、2箇所のBUTTON_NUMの値を変更できます。
final int BUTTON_NUM = 17;
Button bt[] = new Button[BUTTON_NUM];
for (i = 0; i < BUTTON_NUM; i++) {
bt[i] = new Button(BTN_LBL[i]);
p2.add(bt[i]);
bt[i].addActionListener(this);
}
|
メンバに可視性の指定をしましょう
7、8行目の以下のフィールドに可視性(publicやprivate)の指定がありませんね。
7: double d1, d2, d3;
8: String keisan;
|
意図的にそうしたらのなら構いませんが、これらはクラスの外部に公開する必要があるのでprivateを指定するべきでしょう。可視性が指定されていないフィールドは「何かのメソッドの内部変数なのか?」と誤解されてしまう危険性があります。つまり、プログラムが読みにくくなるのです。以下のようにきちんとprivateを指定しましょう。
private double d1, d2, d3;
private String keisan;
|
処理を短くする工夫をしましょう
53行目から始まるactionPerformed()メソッドの中にあるif文の処理が、あま りにも長いですね。自分でもプログラムの打ち込みが面倒だと感じたでしょう。似たような処理をまとめることで、プログラムを短くする工夫をしてください。処理を短くするための最も簡単な方法は、処理をメソッドにまとめることです。メソッドの中に処理を隠してしまうわけです。
プロになったら、常にプログラムを短くする意識を持たなければなりません。短いプログラムなら、バグを含む可能性も減り、後から改造するのが容易になります。よいこと尽くめなのです。プロらしいプログラムとは「誰が見ても分かりやすいプログラム」です。そして、よいプログラムとは「短いプログラム」なのです
。
初級コースは今回で終了です。次回は受講者から寄せられたQ&Aを紹介し、次々回から中級コースに進ませていただきます。お楽しみに!。
|