テクニック

読みやすい綺麗なソースコードを書く5つの掟【初心者必見】

この記事では、プログラマとして必須スキルの綺麗なソースコードの書き方をご紹介します。

プログラマーなら知っていて当たり前、でも最初は誰もが知らない。

知っていても、実はきちんと綺麗に書けていない人はいませんか?

書き方を理解して、実践することはスキルアップの近道です!

ここでしっかりと理解して基礎を固め、実践していきましょう。

分かりやすい変数名を使う

さっそくですが、まずはこちらの変数名をご覧ください。

int a;    // 意味の無い文字
int tf;   // total fee (合計金額)の略称

プログラミング初心者にありがちですが、変数名に意味の無い文字略称を用いています

このような、変数名がソースコード中に散見すると、何のために使っている変数なのかがわからなくなり、可読性が下がります。

可読性とは、読んで字の如く、ソースコードの読みやすさと内容の理解しやすさです。

また、変数名から無駄な誤解を生んでしまう恐れもあります。

必ず変数名は、省略せずに意味のある文字列を用いましょう。

int totalFee;

変数名や関数名に意味を持たせる

変数や関数を定義する際は、目的があって定義するため、予めどのような処理にするかを考えていると思います。

そのときに、定義した変数や関数の目的が一目でわかるように定義することで、処理の中で何の役割を持っているかが一目瞭然です。

次のように、特徴ごとに意味のわかる名前にしましょう。

  • true、falseを意味する場合は、isから始まる名前
  • 最大値を表す変数はmaxから始まる名前
  • 何かを作成する場合はcreateから始まる名前
  • 何かを追加する場合はaddから始まる名前

人によって定義の仕方は異なりますが、一般的には上記のような名前が使われることが多いです。

例は一部のみを紹介していますが、とにかく読んで意味のわかる名前を定義することが重要です。

このように名前の付け方に気を付けることで、処理内容を見なくても名前だけで内容がわかるので、非常に読みやすくなり、内容を理解するのにかかる時間が短縮されます。

処理は目的ごとに細かく分ける

ソースコードも文章と同じで、詰め込みすぎると読みにくくなります。

適切な改行を入れ、ある程度まとまった処理は処理ごとに関数化しましょう。

例えば、1000円以上の本は200円引き、300円以上の鉛筆は100円引きするときの合計金額を求めるtotalPrice関数があるとします。

public int totalPrice() {
    int totalFee;     // 合計金額
  int bookPrice;    // 本の価格
  int pencilPrice;  // 鉛筆の値段
  if (bookPrice >= 1000) { 
      bookPrice -= 200;
  }
  if (pencilPrice >= 300) {
      pencilPrice -= 100;
  }
  totalPrice += bookPrice;
  totalPrice += pencilPrice;
  return totalPrice;
}

このような場合は、まず以下の特徴をひとまとまりと考え、改行を入れます。

  • 変数を定義している箇所
  • 値引きを行っている箇所
  • 合計金額を計算している箇所
public int totalPrice() {
    int totalFee;     // 合計金額
  int bookPrice;    // 本の価格
  int pencilPrice;  // 鉛筆の値段

  if (bookPrice >= 1000) { 
      bookPrice -= 200;
  }

  if (pencilPrice >= 300) {
      pencilPrice -= 100;
  }

  totalPrice += bookPrice;
  totalPrice += pencilPrice;
  return totalPrice;
}

このtotalPrice関数の目的は、合計金額を求めることなので、値引きを行う処理は関数化してしまいます。

// 合計金額を求める関数
public int totalPrice() {
    int totalFee;     // 合計金額
    int bookPrice;    // 本の価格
    int pencilPrice;  // 鉛筆の値段

    bookPrice = discountBookPrice(bookPrice);
    pencilPrice = discountPencilPrice(pencilPrice);

    totalPrice += bookPrice;
    totalPrice += pencilPrice;
    return totalPrice;
}

// 本の値引きを行う関数
public int discountBookPrice(int bookPrice) {
    if (bookPrice >= 1000) { 
      bookPrice -= 200;
    }
    return bookPrice;
}

// 鉛筆の値引きを行う関数
public int discountPencilPrice(int pencilPrice) {
    if (pencilPrice >= 300) { 
      pencilPrice -= 100;
    }
    return pencilPrice;
}

ここでは、合計金額を求める関数に含まれていた本と鉛筆の値引き処理をそれぞれ別の関数で定義しました。

そして、それぞれの値引き処理を行う関数を合計金額を求める関数から呼び出しています。

このように、合計金額を求めるtotalPrice関数では合計金額を求める処理だけを書き、値引きを行うそれぞれの関数に値引き処理を書くことで、それぞれの関数の目的がハッキリしました。

同じ処理を複製しない

合計金額を計算するtotalPrice関数では、本の値引きを行う関数と鉛筆の値引きを行う関数を作成しました。

しかし、この値引き関数の目的はどちらも”一定以上の金額の商品を値引く“ことです。

このままだと、新しい商品が追加されたときには、新たに値引き関数を作成しなくてはなりません。

これが、同じ処理を複製してしまう。ということです。

同じ処理は共通処理として扱う

商品や値引き額にこだわらずに、全ての商品に対する値引き処理を一つ作成しましょう。

重要な事は、全ての商品が一定以上の金額の時に、いくらの値引きを行うか。ということです。

  • 全ての商品
  • 一定以上の金額
  • 値引き額

商品によって変動する3つの要素を引数として値引き関数に渡します。

// 合計金額を求める関数
public int totalPrice() {
    int totalFee;     // 合計金額
    int bookPrice;    // 本の価格
    int pencilPrice;  // 鉛筆の値段

    bookPrice = discountPrice(bookPrice, 1000, 200);
    pencilPrice = discountPrice(pencilPrice, 300, 100);

    totalPrice += bookPrice;
    totalPrice += pencilPrice;
    return totalPrice;
}

// 値引きを行う関数 
// itemPrice: 商品の金額
// conditionPrice: 一定以上の値引き条件額
// discountAmount: 値引き額
public int discountPrice(int itemPrice, int conditionPrice, int discountAmount) {
    if (itemPrice >= conditionPrice) { 
        itemPrice-= discountAmount;
    }
    return itemPrice;
}

これで、値引き関数が一つになり、何の商品が増えても一つの関数で全て収まるようになりました。

基本的には、同じ処理は使いまわせるように実装することが重要です。

コメントを書く

コメントを書くことも、ソースコードの可読性を上げ、処理内容の理解を深めるのに役立ちます。

次にあなたの書いたソースコードを読む、未来の自分もしくは他人のために親切な気持ちでコメントを残すことを心掛けましょう。

コメントを書くのはこういう時

  • 何の処理を行っているかの説明
  • なぜこのような処理を書いたか
  • 後から修正の必要があると事前にわかっている時

ここまでの、ソースコードの例でも関数の前にその関数が何を行う関数か、というのをコメントで記載しています。

はじめは特に、“何の処理を行っているかの説明”をたくさん書きましょう。

複雑なシステムや仕様になると、“なぜこのような処理を書いたか”という説明が重要になる場面が多いです。

目的を達成する方法にはいろんなパターンがあるので、その中でもなぜそのパターンで実装を行ったかというのが、大切になってきます。

初心者はまずは、関数ごと処理ごとに何の処理を行っているかのコメントをたくさん残しましょう。

特に業務で、プログラミングを行っている人は”なぜそうしたか”ということに重点を置いてコメントを記載しましょう。

まとめ

今回は、読みやすいソースコードを記述するために必須のテクニックをご紹介してきました。

  • 意味のある変数名や関数名を定義する
  • 内容の同じ処理は共通化させる
  • コメントをしっかり書く

読みやすいソースコードを書くというのは、わかっていても実は結構面倒な作業で大変です。

しかし、汚いコードを書いて後から困るより、多少面倒でも最初から綺麗に記述しているほうがよかったなと思える時が必ず来ます。

早い段階から、綺麗なソースコードを書くことに慣れておきましょう。

綺麗で読みやすいソースコードが書けるようになれば、次は良いソースコードを記述するテクニックを習得しましょう。

合わせて理解することで、より良いコードが書けるようになります。

良いソースコードの書き方紹介!4つのポイントで自身のスキルと周りの評価がアップする方法!この記事では、ソースコードの記述テクニックをご紹介します。 プログラマとして、良いソースコードを記述するのに必須のテクニックです。...

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です