sinProject流システム開発のススメ #002 同じ処理を「書かない・書かせない・ゆるさない」

前回:「sinProject流システム開発のススメ」はじめました

説明の都合上、話は凄くシンプルに進めていきます。

簡単な要求がきました。

「100を2倍して1足した結果を出力して」

さて、書いてみましょう。
※変更が無かったり重要じゃなくてコードを省略したところを「// …」と書くことにします。

[code lang=”java”] package net.sinproject;

public class Lesson {

// …
public static void main(String[] args) {
// TODO: 100を2倍して1足した結果を出力
}
}
[/code]

まずはやることをTODOで書きます。その後コードに変換していきます。まずはコードを書く場所にやることを書く癖をつけます。これを書くことで頭の整理とロジックの組み立てが行えます。これが普通にかけないとコードもかけません。

[code lang=”java”] package net.sinproject;

public class Lesson {

// …
public static void main(String[] args) {
System.out.println(100 * 2 + 1);
}
}
[/code]

これで「100を2倍して1足した結果を出力して」の要求が満たせました。そこに新しい依頼がきました。

「200を2倍して1足した結果も出力しといて」

さて、TODO書いてみましょう。

[code lang=”java” collapse=”true”] package net.sinproject;

public class Lesson {

// …
public static void main(String[] args) {
System.out.println(100 * 2 + 1);
// TODO: 200を2倍して1足した結果を出力
}
}
[/code]

TODOを書いたらコードに変えていきます。

[code lang=”java” collapse=”true”] package net.sinproject;

public class Lesson {

// …
public static void main(String[] args) {
System.out.println(100 * 2 + 1);
System.out.println(200 * 2 + 1);
}
}
[/code]

さて、ここで同じような処理が出てきました。2つ以上同じことを書かないようにするために、メソッド化しましょう。

ここではTODOのサンプルは省きますが、さっそく書いてみて下さい。
※サンプルでは、計算するメソッドの名前を「calc()」としました。

[code lang=”java” collapse=”true”] package net.sinproject;

public class Lesson {

public static int calc(int value) {
return (value * 2 + 1);
}

// …
public static void main(String[] args) {
System.out.println(calc(100));
System.out.println(calc(200));
}
}
[/code]

このように、同じ処理を書いてしまいそうになったら、メソッド化してしまいます。このことでバグが減ったり、見やすくなったりして、保守のコストを減らすことが出来ます。これはリファクタリング手段の一つであり、リファクタリングといえば「コードクローンを無くすこと(コピペしないこと/同じことを書かないこと)」といっても過言ではないほど重要な事です。

サンプルコードで新しく出てきた新しいコーディング規約も含めて、今回のおさらいをしておきます。

  • コードを書く前にやることをTODOで書く
  • 同じ処理はメソッド化する
  • 作成するメソッドは呼び出し元より上に記述する(同じファイルに書く場合)
  • 丸カッコ「(」「)」の内側には半角スペースなどで間隔を開けない
  • 演算子「* とか + 」の前後は半角スペースを開ける
  • return 行に式を書く場合は丸括弧で囲う

次回:sinProject流システム開発のススメ #003 コメントは最小限に

Leave a comment

メールアドレスが公開されることはありません。

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)