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

|
以下のメソッドを持つToukeiクラスを作成してください。
Toukeiクラスの機能をテストするプログラムも作成してください。
※メジアンとは、中央の値のことです(偶数の場合は中央の2数の平均値)。
※モードとは、最も出現頻度の多い値のことです。
|
// 機 能:平均値を返す
// 引 数:データの配列
// 戻り値:平均値
public int getHeikin(int[] data)
public double getHeikin(double [] data)
// 機 能:メジアンを返す
// 引 数:データの配列
// 戻り値:メジアン
public int getMedian(int[] data)
public double getMedian (double [] data)
// 機 能:モードを返す
// 引 数:データの配列
// 戻り値:モード
public int getMode(int[] data)
public double getMode (double [] data)
|


[プログラムを見る]

コメントがとてもよくなりました
前回のアドバイスに従って、ソースコードの先頭にプログラムの概要、作者、作成日などをコメントしてくれましたね。これだけでも「プロらしさ」を感じました。
クラスごとにファイルを分けるとよいでしょう
Javaの基本は、1クラスを1ファイルにすることです。2つのクラスを1ファイルにまとめてくれると、添削する側としては助かりますが、どうぞ遠慮しないで複数ファイルを提出してください。
その際に「クラスを再利用できるかどうか」にも注目してください。再利用できそうだからこそ、独立したファイルに分ける意味があるのです。
例外処理をどこですべきか考えてみましょう
Toukeiクラスを使う側(mainメソッドの側)で例外処理をしていますね。Toukeiクラスの側で例外処理をすることも検討してください。クラスは、プログラムの部品だと考えられます。例外処理を内部的に行ってくれる部品の方が便利ですね。オブジェクト指向プログラミングでは、クラスを使う人への思いやりが重要なのです。思いやりを込めた使いやすいクラスは、効率的なプログラミングを実現できます。すなわち、コストを下げられるのです。
同じ処理をなくす方法を考えてみましょう
Toukeiクラスでは、同じ機能のgetHeikinメソッドをint用とdouble用で2つ作っています。これらのメソッドの処理内容は、データ型が異なるだけで、後はすべて同じです。同じようなコードを2回も書くのは面倒ですね。もしも修正することになったら、両方に手を加えなければならないからです。無駄なコードを書かない方法を考えてください。
案1:int用のメソッドの中で、引数をdouble型にキャストしてdouble用のメソッドを呼び出す。
案2:引数をObject型の配列にする。
案3:Javaにも、C++のようなテンプレート機能がないかどうか調べてみる。
|
……などなど、自分で調べて、実際に実験プログラムを作ってみましょう!
|