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が読むべき雑誌、書籍、ユーザーグループを一挙紹介!
登録記事  
  第8回 Javaコース中級編(その3) 著者顔写真
グレープシティ株式会社 アドバイザリースタッフ
矢澤久雄
2004/7/1

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

使用したプログラミング言語はJavaです。プログラミング経験の有無から「初級コース」と「中級コース」に分かれて、それぞれ4問ずつプログラミングの課題に取り組んでいただきました。講師を務めた私の役目は、赤ペンでソースコードを添削することでした。提出されたプログラムは、どれもきちんと動作しましたが、誰にも共通した問題がありました。それは「プロらしくない」ということです。

実際に内定者さん(学生さん)から提出していただいたソースコードと添削結果を掲載しますので、皆さんも一緒にプロらしさとは何かを考えてみてください。また、指導する立場の人は、連載で指摘していく項目を意識しながら、後輩指導に取り組んでみるのもよいでしょう。今回は、中級コース第3回の課題を紹介します。なお、提出者の名前は匿名であり、ソースコードも一部を抜粋したものを掲載しています。

☆ ☆


指定された年月のカレンダーを表示するプログラムを作成してください。
その年が閏年の場合は「閏年です」、そうでない場合は「閏年ではありません」と表示してください。

 

 


[プログラムを見る]



プロらしい書式になりました!
コメントの付け方や、インデント(字下げ)など、とても見やすいプログラムになりました。ご自身でも、第1回の提出課題と見比べてみてください。大いに進歩したことがわかるでしょう。自信を持ってください。

極力マジックナンバーをなくしましょう
マジックナンバー(magic number、魔法の数字)とは、123や456のように直接数値で記述されているデータのことです。マジックナンバーは、自分にはわかっても他人にはわかりににくいものです。しばらく時間が経つと、自分でも数値の意味を思い出せない場合もあります。
1は1月、12は12月のことでしょう。28は2月の末日、29はうるう年の場合の2月の末日のことでしょう。これらの数値の意味は、何となくわかりました。どれをマジックナンバーとみなすかは「他人が見てわかるかどうか」で判断してください。プログラムを見てすぐに意味がわからなかった数値はマジックナンバーです。これらには、finalキーワードで名前(数値の意味を表す名前)を付けておくとよいでしょう。

else if(i < 10){ ・・・この10は何でしょう?
for(int i = 1 ; i < 32 ; i++){ ・・・この32は何でしょう?


// finalキーワードで名前を付ける
final int FUTAKETA = 10; // 10以上は2桁である
final int MATUJITUGOE = 32; // 32日なら末日を越えている

例外処理をしましょう
極端なことを言えば、プロが書くプログラムの50%は例外処理(エラー処理)なのです。何か1行処理をしたら、次の1行でエラーチェックをするからです。ただし、Javaではtry〜catch文によって、例外処理が効率的に記述できるようになっています。
現状のプログラムには、例外処理が一切ありません。キー入力があるからには、例外が発生する可能性があります。練習プログラムなら少しぐらい抜けがあっても構いませんが、考えられるあらゆる例外に対処したプログラムがプロの完成品プログラムです。

1つのメソッドの処理を短くしましょう
mainメソッドの中ですべての処理を行っているため、処理が長くて解読しにくくなっています。処理のまとまりごとにメソッドを分けるとよいでしょう。メソッド単位で処理が理解しやすくなります。また、同じメソッドを他のプログラムで再利用できる場合もあります。たとえば、以下の処理を行うメソッドを作り、それらをmainメソッドから呼び出すようにするとよいでしょう。どのメソッドも「再利用できそうだ」と感じるでしょう。ここでは省略していますが、状況に応じて適切な引数や戻り値を考えてください。

・キー入力を行うメソッドkeyInput()
・閏年の判定を行うメソッドisUruDoshi()
・カレンダーを表示するメソッドshowCalendar()

// mainメソッドの内容
public static void main(String args[]) {
  keyInput();
  isUruDoshi();
  showCalendar(); }
トップページ
(c) 2004 Shoeisha Co., Ltd. All rights reserved.