【初心者必見】プログラミングにおける美しいコードの書き方『6選』を解説

こんにちはゆうき(@RubyPHP2)です。

このブログでは、Webエンジニアである僕自身の体験をもとに、プログラミングについてのノウハウを発信していきます。

疑問をもつ男性

美しいコードを書けるようになりたいんだけど、何を意識すればいいの?

今回は以上のような質問にお答えしていきます。

僕は元々未経験からエンジニアになりました。
(その時の給料をこちらの記事で公開しています。)
▶︎【給料公開】駆け出しエンジニアの給料はいくら?それでもエンジニアを目指すべきか?

最初はコードを書くのに必死すぎて保守性、可読性を完全に無視していました。

しかし、先輩方からのレビューや後の修正で繰り返し痛い目を見ることで美しいコードの書き方、重要性がわかるようになりました。

そこで、今回は『美しいコードの書き方』というテーマでお話ししていきます。

ポートフォリオや実務で今すぐ使える内容になっていますので是非最後までご覧ください。

この記事でわかること
  • プログラミングにおける美しいコードの定義
  • プログラミングにおいてコードを美しく書く必要がある理由
  • プログラミングにおける美しいコードの書き方『6選』
  • 美しいコードを勉強するには

では、順に見ていきましょう!

当ブログでも使用しています!

プログラミングにおける美しいコードの定義

そもそも美しいコードとはなにか?

まずはこれを理解する必要がありますね。

✔︎ 美しいコードの定義

  • コードが読みやすい
  • 後の修正が楽
  • コードの目的が直感的に理解できる

以上があげられます。

つまり、美しいコードとは、

可読性、保守性が高く、コードの目的が明確なコードを指します。

コードは他人から見てどう見えるかが重要です。

今エンジニアを目指して勉強中という方は勉強会などに参加して他人に自分のコードを見てもらうことをおすすめします。
▶︎ 駆け出しエンジニアは勉強会に参加するべき?事前に知っておくべき『3つ』のこと

当ブログでも使用しています!


プログラミングにおいてコードを美しく書く必要がある理由

では、なぜ美しいコードを書く必要があるのでしょうか。

美しいコードを書く必要がある理由

  • プログラムを理解する時間が短縮される
  • 仕様変更、追加開発に対応しやすくなる
  • チーム全体の生産性が向上する

以上のこととがあげられますね。

僕がプログラミングの勉強を始めた頃は、

  • とりあえず動けばいい
  • 自分の好きなようにコードを書いた方が早い

こんな風に考えていました。

確かに、自分の好きなようにコードを書いた方が早いです。

しかし、実装した後の仕様変更などで何度も痛い目を見ました。

美しいコードを書く恩恵は決まってコードを書いた後に得られるものです。

つまり、将来の自分やチームメンバーを楽にさせるために、美しいコードを書く必要があるのです。

また、美しいコードは実務だけでなくポートフォリオでも意識するべきです。

どのようなコードを書くかで企業からの評価も大きく変わります。

詳しくはこちらの記事で解説しています。
▶︎【保存版】好評価が得られるポートフォリオ作成方法11選を解説


プログラミングにおける美しいコードの書き方『6選』

美しいコードを書く理由がわかったので、次は書き方について解説していきます。

✔︎ 美しいコードの書き方

  1. 意味のわかる名前をつける
  2. 一つの関数でできることは最小限まで絞る
  3. コメントを書く、誤った内容は書かない
  4. 何度も同じコードを書かない
  5. ロジックに用いる特定の値は定数を用いる
  6. コードの書き方は統一する

では、順に見ていきましょう!


1.意味のわかる名前をつける

プログラミングではあらゆる場面で名前をつける機会があります。

✔︎ 名前をつけるもの

  • ディレクトリ名
  • ファイル名
  • 変数名
  • クラス名
  • 関数名

特に、変数、クラス、関数については常に命名する機会があります。

✔︎ 変数名
その変数にどんな値が入っているのか明確にわかる名前をつけます。
長くなりすぎないのがベストです。
▶︎ 正しい変数名の付け方

✔︎ クラス名
名詞を使うのが一般的です。
また、最初の文字は大文字を使うようにしましょう。
【例】User、Article、Customer

✔︎ 関数名
動詞を交えるのが一般的ですね。
【例】getUser、updateUserName

命名規則を学ぶことで適切な名前がつけられるようになります。


2.一つの関数でできることは最小限まで絞る

次に一つの関数で行う処理は最小限にすることが重要です。

具体的には一つの関数は一つの処理に特化している状態が理想です。

関数というのは一度作ればあらゆる箇所で使い回しができます。

その一つの関数が複数の処理を担っている場合なにが問題なのか?

それは仕様変更やバグなどで関数に修正を入れると、修正に伴う影響範囲が広くなってしまうことです。

修正後の試験などにも時間がかかってしまい、メンテナンスの観点からよろしくないですね。

このように、一つの関数は一つの処理に特化させると美しいコードになります。


3.コメントを書く、誤った内容は書かない

先ほどもお話ししましたが、美しいコードとは他人から見てわかりやすいかも重要なポイントです。

  • どのような意図で書かれたコードか直感的にわからない
  • 何を実行している処理なのかわからない

このような状態だと、プログラムを解読するのに時間がかかりすぎてしまいます。

そこで最も簡単に解決する方法として、『コメントを書く』があげられます。

✔︎ コメントを書くメリット

  • 他人に処理内容を簡単に伝えることができる
  • 将来の自分でも処理内容を理解することができる
  • メンテナンスがしやすくなる

このように処理内容を直感的に理解することができるので結果的に開発効率が向上します。


4.何度も同じコードを書かない

美しいコードを書くため同じコードは何度も書かないようにしましょう。

というのも、同じコードを複数箇所に書くと、保守性が著しく低下するからです。

具体例として、

  • 仕様変更時、全ての箇所に修正が必要になる
  • 修正漏れが発生し、予期せぬバグに繋がる

このようなことがあげられます。

以上のことから、複数の箇所で同じコードが必要になった時は関数化して使い回すと良いですよ。


5.ロジックに用いる特定の値は定数を用いる

特定の決められた値は定数を使うようにしましょう。

具体例として、以下の仕様で開発するとします。

✔︎ 具体的な仕様
過去30日以内
10000円以上課金しているユーザのみ特別なログボを付与する。

ここで定数化するべき特定の値とは、

  • 過去30日以内の「30」
  • 10000円以上課金「10000」

という値です。

これらの値は仕様変更などで変更となる場合が容易に想像できます。

このような場合でも定数化さえしておけば、定数の値を書き換えるだけで対応することができます。


6.コードの書き方は統一する

最後にコードの書き方はプロジェクト全体で統一するようにしましょう。

コードが統一されていないと単純に見づらくなります。

✔︎ 統一する内容

  • インデントは揃える
  • スペース or タブをどちらかに統一
  • キャメルケース、スネークケースの統一

これらのこと徹底するだけでもコードは見やすくなりますよ。

補足

✔︎ キャメルケース
単語の先頭を大文字にする命名規則。
【例】camelCase

✔︎ スネークケース
単語の間をアンダーバーでつなぐ命名規則。
【例】snake_case


美しいコードを書くには

美しいコードを書くにはとにかくコードを繰り返し書いて身につけるしかありません。

命名規則については一度正しい知識を頭に入れておくと効率よく美しいコードが書けるようになります。

僕の場合は、『リーダブルコード』という技術書を読んで、勉強しました。

美しいコードを書く大半のエンジニアがこの『リーダブルコード』に則った書き方をしているので、初心者の内から一読しておくことをおすすめします。

また、技術書を読む以外のインプット学習方法を知りたい方はこちらの記事で僕のおすすめの学習方法を紹介しています。
▶︎【プログラミング】おすすめのインプット学習方法を紹介!


まとめ : 美しいコードは未来の開発者を助ける

今回はプログラミングにおける美しいコードの書き方『6選』というテーマでお話ししました。

僕は最初、何が美しいのか、汚いコードなのか全くわかりませんでした。

その結果、実装後の未来の自分が苦しむという経験を何度もしてしまいました。

実際に美しいコードについて理解した上でコードを書くことでしか身につけることはできません。

ここまで読んでくださった方は必ずどれか一つでもいいので実践してみてください。

また、コードを書く前にどのプログラミング言語を勉強するか迷っているという方はPHPという言語がおすすめです。以下の記事でPHPがおすすめの理由を解説しています。
▶︎ 駆け出しエンジニアがPHPを勉強するのはあり?

この記事が少しでも参考になれば幸いです。

最後まで読んでいただき、ありがとうございました!

ではまた◎

当ブログでも使用しています!