プログラミング初学者のコードの質を1レベル上げる5つの方法

ゆーたろー

こんにちは、ゆーたろーです。

HRTechベンチャーのエンジニアです。
TypeScript/Vue.js(Nuxt.js)/Laravelを使っています。

・プログラミングスクール講師
・月1で勉強会運営
・神戸メインのグルメインスタ運営

など色々やっています。1児のパパです。

・プログラミング初学者がコードを書く時に気をつけるべきことって何?
・現役エンジニアから教えて欲しい!

と疑問をお持ちの方のお悩みを解決できる記事になっています!

昨今のプログラミングブームにより異業種からエンジニアに転職しようとする方がかなり増えています。

プログラミング初学者はまずは『動くコード』を書いてアプリケーションを開発する楽しさを感じるのが1番と思います。

ですが、これから現場に入って実際に開発を仕事にする上では『動くコード』を書くだけではいけません。

というわけで、『動くコード』を書けるようになった次のステップとしてコードを書く時に気をつけるべきことを解説しますね!

目次

『動くコード』を書けるようになったら次にすることは?

『動くコード』を書けるようになったら次にすることは『キレイなコードを書く』ことです。

プログラミング初学者がプログラミングの勉強をして、何かしらのアプリケーションを開発する時はほとんどの場合は1人での開発だと思います。

1人での開発は自分が読めるコードで正しく動けばOKなのですが、仕事の場合はほぼ100%複数人でのチーム開発です。

チーム開発の場合、自分が実装したコードを自分以外のチームメンバーが読み解いたり、修正することが多々あります。

よってチーム開発を行う上では、『キレイなコード』を書くことがとても重要なのですが、それはどのようなコードのことを指すのかというと、

  • コーディングルールを守っているコード
  • 自分以外のチームメンバーが見ても理解しやすいコード
  • 修正がしやすいコード(保守性の高いコード)
  • 思わぬバグを生み出す原因がないコード

このようなコードです。

現在エンジニア転職を目指してプログラミング学習をしている方々が現場に入る前から上記の『キレイなコード』を書くために気をつけるべきことを知るのはとても大切なことなのです!

プログラミング初学者がコードを書く時に気をつけるべきこと

それでは、プログラミング初学者がコードを書く時に気をつけるべきことを解説します。

僕は『やんばるエキスパート』というプログラミングスクールでメンターをしており、受講生のコードレビューをしています。

コードを書くときに気をつけるべきことはたくさんあるのですが、この記事では僕がプログラミングスクールのメンターとして日頃からプログラミング初学者のコードレビューをする中で、『これ、めちゃくちゃ大事なのにできてない人が多いな…』と感じたことを5つピックアップします。

コーディング規約を準拠する

まずはコードの統一性を維持するために必要なコーディング規約です。

コーディング規約とはその名の通り、コードを書く時のルールです。

コーディング規約はフレームワーク毎に定められいることがほとんどであり、僕が仕事で使っているPHPフレームワークのLaravelは『PSR-2』と言うコーディング規約を準拠しています。

Laravelが採用しているコーディング規約『PSR-2』で解説するとほんの一例ですが、

if ($user) {
    // 処理
}

$numbers = [1, 2];

public function get()
{
    // 処理
}

上記のように

  • ifと ( の間、( と } にそれぞれ半角スペースを入れる
  • ,(カンマ)の後には半角スペースを入れる、前には半角スペースは不要
  • クラスやメソッドの { } は改行してから書く

このようにルールが決まっています。

チーム開発を想定しコードの統一性をある程度維持するためにコーディング規約が定められています。

参考までにLaravelで採用している 『PSR-2』のルール内容がわかりやすくまとめっているサイトをご紹介しますので、一度確認してみてください!

変数・関数などの命名を意識する

プログラムコードを書く上で変数・関数などの命名はとても重要なのですが、プログラミング初学者で上手くできている人はあまり多くありません。

なぜ変数・関数などの命名が重要かというと、自分以外のチームメンバーが自分が書いたコードを見た時にどんな処理をしているのかを理解しやすくできるからです。

ではよくない例と良い例を比較して見てみましょう。

内容としては『注文データを取得するメソッドを考える』処理とします。

良くない例

class Order
{
    public function orderInformations()
    {
        // 全データを取得
        $orders =  Order::all();
    } 
}

上記コードの良くないポイントはこちらです。

  • orderInformationsというメソッド名では注文情報を『どうするのか』がわからない(取得なの?編集なの?削除なの?)
  • 変数$ordersも『どんな』注文データなのかがわからない(全データ?最新の1つ?特定の誰かの注文?)

これらの良くないポイントを解消した良い例はこちらです。

良い例

class Order
{
    public function getAll()
    {
        // 全データを取得
        $allOrders =  Order::all();
    } 
}
  • orderInformationsというメソッド名では注文情報を『どうするのか』がわからない(取得なの?編集なの?削除なの?) → メソッド名がgetAllなので全ての注文データを取得することが一目でわかる
  • 変数ordersも『どんな』注文データなのかがわからない(全データ?最新の1つ?特定の誰かの注文?) → 変数名が$allOrdersなので全ての注文データなのが一目でわかる

このように変数・関数などの命名はコードの読みやすさ(可読性)に大きく影響します。

変数名・関数名は長くなっても良いのでできる限り一目で『どのようなデータを格納しているのか』『どのような処理をしているのか』がわかるように命名することが大切です。

マジックナンバーを使わない

マジックナンバーはプログラミング初学者には馴染みの薄い言葉かもしれません。

簡単に言うと『パッと見何を表しているかわからない数字』のことです。

これもコードを例にして解説します。

内容としては『注文ステータスによって処理を分岐する』処理とします。

良くない例

if ($orderStatus === 2) {
    // 処理
}

これ、何が良くないかというと、2がどのようなステータスなのかがパッと見わからないことです。

この2がまさにマジックナンバーです。

それではマジックナンバーを解消したコードを書いてみます。

良い例

const ORDER_STATUS_CANCEL = 2; 

if ($orderStatus === ORDER_STATUS_CANCEL) {
    // 処理
}

簡単にコードの解説をします。

const ORDER_STATUS_CANCEL = 2; 

このようにORDER_STATUS_CANCELという定数を定義することで『キャンセルの注文ステータスは2ですよ』というのが誰が見てもすぐにわかります。

このように数字をベタ書きするのではなく、定数(もしくはconfigファイル)に定義することでマジックナンバーを防ぐことができます

マジックナンバーについては別の記事で詳しくまとめています。

不要なコメント残さない

これはテクニックではなく、ケアレスミスなのですが、プログラミング初学者がやりがちなことです。

良い例

// PHPの場合
if ($orderStatus === 2) {
    // echo ‘<pre>’;
    // var_dump(‘OK’);
    // die;
    $userId = $user->getId();
}

// Laravelの場合
if ($orderStatus === 2) {
    // dd('OK');
    $userId = $user->getId();
}

上記の通り、デバッグ用のコードのコメントアウトが残ったままプルリクエストを出してしまっているケースがかなり多いです。

このケースは単なるデバッグ用のコードなので大きな問題にはなりません(とは言え、チーム開発する上で不要なコードが残ってしまうのはコードが汚れるので避けたい)が、消し忘れてしまったコメントが第3者に絶対に見られてはいけない内容だったら…やばいですよね。

実務経験のないプログラミング初学者にはどうしてもイメージしにくいかもしれませんが、アプリケーション開発ではちょっとしたミスが大きな損害を生む可能性があります。
(その時点でもはや”ちょっとしたミス”ではなく”ヤバいミス”ですが…笑)

このような全く嬉しくない事態にならないように日頃から不要なコメントを残さないようにしましょう!

とりあえず変数定義しない

変数というのはあるデータを格納する箱のようなもので、繰り返し使うことができコードを書く量を減らすことできますよね。

しかし、時には変数を定義することでコードの全体量が増えてしまうケースがあります。

それはどのようなケースなのか、解説します!

良くない例

public function update ($post) {
    $id = $post->id;
    $this->updateData($id);
}

このコードを簡単に説明するとこのように

  • POSTデータの id の値を変数 $id に格納
  • updateDataメソッドの引数に定義した変数 $id を代入

このコードの何が良くないのか、良い例と比較してみましょう。

良い例

public function update ($post) {
    $this->updateData($post->id);
}

updateDataメソッドの引数には$idに格納していた$post->idを直接代入しています。

このように変数定義しない方が良いのはあるメソッドの中で変数を1回しか使ってないケースです。

変数のメリットは先述しましたが、同じコードを繰り返し書くのを防ぐことですが、繰り返さないのであれば変数を使う必要はありません。

(とはいったものの、1行に書くコードの文字数が多すぎる場合はスッキリさせるために変数を使う場合もあります)

とりあえず変数を定義するのではなく、『変数を使った方が良いのか?』という観点でコードを書くのが大切です。

『動くコード』が書けるようになったら『キレイなコード』を意識しよう

プログラミング初学者は『動くコード』がある程度書けるようになったら、更なるステップアップとして『キレイなコード』を書けるように努力してみましょう!

おさらいになりますが、『キレイなコード』はこのようなコードのことを指します。

  • コーディングルールを守っているコード
  • 自分以外のチームメンバーが見ても理解しやすいコード
  • 修正がしやすいコード(保守性の高いコード)
  • 思わぬバグを生み出す原因がないコード

繰り返しになりますが、このようにチーム開発する上で重要である『キレイなコード』を書くためにプログラミング初学者でも気をつけるべきことはこちらです。

  • コーディング規約を準拠する
  • 変数・関数の命名を意識する
  • マジックナンバーを使わない
  • 不要なコメントを残さない
  • とりあえず変数定義しない

上記の5つは比較的簡単にでき、一気にコードのレベルも上げてくれるのでぜひ普段のコーディングに取り入れてみてください!

“頭おかしい”プログラミングスクール『やんばるエキスパート』

内定者続出のエンジニア転職特化オンラインコミュニティ『転職クエスト』

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

上場グループのHRTechベンチャーで働くWebエンジニアです。
新卒で入社した大手重工メーカを4年で退職し、2020年4月からエンジニアとキャリアチェンジしました。

仕事ではTypeScript/Vue.js(Nuxt.js)/Laravelを主に使っています。

プログラミングスクールの講師やデザイン関連のお仕事もさせてもらっています。

神戸で「つながる勉強会」という勉強会を月1で運営しています。
https://tsunagaru-kobe.connpass.com/

お仕事のご依頼、ご相談はお問い合わせページもしくはTwitterのDMからお願いします。

コメント

コメントする

目次
閉じる