SEの現場2004
SE shop.com SEの現場を購入する
SEの現場2004
   
過去記事
第9回 「Javaコース中級編(その4)」
第8回 「Javaコース中級編(その3)」
第7回 「Javaコース中級編(その2)」
第6回 「Javaコース中級編(その1)」
第5回 「Javaコース初級編(Q&A)」
第4回 「Javaコース初級編(その4)」
第3回 「Javaコース初級編(その3)」
第2回 「Javaコース初級編(その2)」
第1回 「Javaコース初級編(その1)」

誌面記事
マンガでわかる
会社・業界図鑑2004
気になる会社の状況と、業界でのポジションが一目でわかる。転職者・新入社員必見!!
SEの職場を拝見
日本オラクル、サイバードなど、「こんな会社で働きたい」職場を持つ企業に突撃取材。本誌未収録写真もアップ。
データベースのセキュリティを考える
今、重要な課題として挙げられるセキュリティの強化。なかでもデータの保護は最も重要です。データは通常データベースに格納されていますが、データベースの中にあれば大丈夫とは言い切れません。この連載ではデータベースのセキュリティについて皆さんと一緒に考えていきたいと思います。
クイズで実践
成功するSEの交渉術
この連載では、SEが獲得すべき交渉のスキルについて、会話形式の例題にそって解説していきます。現場での交渉は毎日が真剣勝負です。ここでは会話に沿って示される選択肢のなかから「これだ」と思うものを選ぶことにより、あなたの交渉スキルをチェックできます。では、さっそく始めましょう。
矢澤久雄の「プロのコード、アマのコード」
「プロらしいコードとは何か?」って聞かれたら、あなたは、何と答えますか? 『プログラムはなぜ動くのか』の著者矢澤久雄がプロのプログラミングを懇切丁寧に教えます。
新人PMに贈る、53通の手紙
え、今日から、プロジェクトマネージャー?期待と不安に満ちた新人PMに贈る現場感が満ちたエールです。
あなたは「もの作り派?」
「マネジメント派?」
 
あなたはどちらの道を選びますか? 自分のキャリアを、限りなくシンプルに考えるためのガイド。
トム・デマルコ インタビュー
プロジェクトマネジメントの神様 トム・デマルコに聞く「PMに必要なもの」。本誌未収録部分も掲載。
SEのための情報源
〜ユーザーグループ・雑誌・書籍〜
『SEの現場 2002〜2004』に掲載した、SEが読むべき雑誌、書籍、ユーザーグループを一挙紹介!
登録記事  
  第4回 Javaコース初級編(その4) 著者顔写真
グレープシティ株式会社 アドバイザリースタッフ
矢澤久雄
2004/5/06

 この記事は、翔泳社で実施する独習ゼミの研修を紙上で再現したものです。

使用したプログラミング言語は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を紹介し、次々回から中級コースに進ませていただきます。お楽しみに!。

トップページ
(c) 2004 Shoeisha Co., Ltd. All rights reserved.