「綺麗なコード」の書き方まとめ【プログラミング】

Web3
まるお
まるお

綺麗なコード書けるようになりたいわぁ・・・

 
かとてん
かとてん
せやなぁ
俺も勉強中や・・・
まぁ綺麗なコードを書く能力はもはやエンジニアの必須スキルと言っても過言じゃないしな
 
 

綺麗なコードとは?

この記事では、綺麗なコードを「文章のように読むことができるコード」と定義します。
要は、読む人のことを考えて記述された分かりやすいシンプルなコードのことです。
 
汚いコードを読む場合、コードの中身を解読するのにかなりの労力と時間を要します。
さらに、その汚いコードが書かれたアプリケーションを保守する場合、修正箇所が無駄に多く、コードを書き直す箇所が多くなるので保守性がかなり悪いです。
 
一方で、綺麗なコードは解読にかかる労力が少なく、保守性もかなり高いです。
 
「綺麗なコード」に正解はありませんが、常に読む人のことを考えて「綺麗なコード」で書けるように意識すべきだと思います。
自分だけでなく、コードを読む人の時間も大切にしましょう。
 
 
 

綺麗なコードの条件(順不同)

綺麗なコードには以下のような条件があります。
これらの条件を意識してコードを書くように意識しましょう。
 
 

処理や名前の記述が短い

全体のコード数が少ない方が見やすいものです。
処理の中身や関数/変数名の記述をできるだけ短くしましょう。
 

関数/変数名に適切な名前が付けられている

誰が見ても誤解なく理解できる名前を付けましょう。
名前を見ただけで何をしているのかわかるのが理想です。
 

機能が分けられている(モジュール化)

機能を分けることで、保守や使いまわしが容易になります。
例えば関数の場合、1つのことしかできない関数が理想です。
 

同じ処理が複数回書かれていない

まったく同じ処理が複数回書かれていたら1つの関数などにまとめましょう。
無駄がなくなり、一気に保守性が高まります。
 

コメントが必要最低限しかない

コメントがなくても理解しやすいコードが理想です。
どうしてもコメントしなければ分からない処理がある場合のみ記述するようにしましょう。
 

空白、改行、インデントが適切である

ここは好みもありますが、通常はコードを書く時のルールに基づいて記述します。
適当に書いている場合は、どうすれば見やすいか考えたり、GoogleやAirbnbなどのコードルールを参考にしたりしてみましょう。
 

深いネストがない

ネストは入れ子のことで、if文などが何重にも重なったコードになります。
ネストが深いとコードの可読性が著しく低下するので、ネストは浅くを意識しましょう。
 

マジックナンバーが使われていない

マジックナンバーはパッと見で理解できない数字のことです。
理解しやすいように定数や変数、関数などを利用しましょう。
 

非破壊的な処理を実装している

変数や配列を上書きするなどの破壊的な処理はバグを生み出す原因になる可能性があります。
可能な限り破壊的な処理ではなく、非破壊的な処理を実装しましょう。
 

決められたコードルールに従って書かれている

綺麗なコードを書くためには、何気にこれが一番大事なのではないでしょうか。
複数のルールを混ぜてはいけません。(混ぜるな危険)
 
 
 

【基本のキ】綺麗なコードを書きはじめよう!

この節では、綺麗なコードを書くために最初の一歩として、関数/変数名の命名方法について、必要最低限の覚えておきたいことや参考となる記事を紹介していきます。
 
まず、以下の内容を覚えておきましょう。
定数の場合は大文字を利用する(例:TEST_NUM)
ループカウンターはiから始める(例:i→j→k…)
関数は実行されるので動詞/助動詞から、変数/クラスはオブジェクトなので名詞から名前付けする(例:function SendNum、class ArrayList)
 
次に、こちらの記事で紹介されている関数/変数名の命名に良く使われる200単語を覚えておきましょう
※頻出単語なので、ここで見なくてもコードを読んでいればそのうち覚えると思います。
 
そして最後に、こちらのメソッド名クラス名の名前付けの具体例が載っている記事を参照しながら実際に名前を付けてみましょう。
 
名前が異様に長くなったり、しっくりくる名前が思いつかない場合はメソッドに機能を詰め込み過ぎている可能性があるため注意しましょう。
 
 
 

さいごに

綺麗なコードを意識して書いた後は、リファクタリングを行なったり、コードレビューを依頼したりしましょう。
そうすることで、より洗練されたコードになるはずです。
 
私自身まだまだなので、これから洗練された美しいコードを書けるように日々努力していきたいと思います!
 
 
 
タイトルとURLをコピーしました