プログラミングのインデントの意味とルール【読みやすいコードを書く】まなびアクト初心者がプログラミングを学びIT業界に就職・転職する為の情報をお伝えしていますHOMEプログラミングプログラミングのインデントの意味とルール【読みやすいコードを書く】プログラミングのインデントの意味とルール【読みやすいコードを書く】2019年6月30日プログラミングツイートシェアはてブ送るPocketインデントって言葉が出てきたけどこれって何なんだろうそんな疑問を持つ方向け。自動インデント可能なテキストエディタインデントの意味インデントの意味はプログラムのコードを読みやすくするための空白、もしくはタブなどで「字下げ」をするということです。※この記事のコード例は以下すべてPHPになります。“変数aとbの値は一致していません”;}見てわかる通り強烈に読みづらいですよね。以下のようにインデント(字下げ)します。“変数aとbの値は一致していません”;}これで最初よりは見やすくなりました。言うとif文の書き方にもいくつか方法があったりします。私は上の書き方がメインなんですが、最初の{の前で改行するパターンもあります。“変数aとbの値は一致していません”;}私は縦に1行長くなってしまうのでこの方式では書いていないんですが、プロジェクトでルールが決まっている場合でもない限りはまぁ好きな書き方で書いてもいいと思います。このように見やすい・読みやすいを意識してコードを書こうとすると色々勉強になります。インデントのルールみんなが好き勝手に字下げしているとそれこそコードがバラバラで見にくくなってしまうので、インデントにもある程度ルールがあります。インデントに使う文字は2パターン。半角スペース4文字このあたりが主流です。中には3文字とか8文字とか使う人もいるみたいですが、レアケースなので気にしなくてもいいと思います。多く使われているパターンが「半角スペース4文字」です。実は私は最初タブを使っていたんですが、チームで開発をする時にほとんどの人が半角スペース4文字を採用しており、これだとみんなと違うルールでインデントをしてしまうため多数派の半角スペース4文字に鞍替えしました。それぞれのポリシーがあると思いますが、チームに迷惑をかけてまで自分のポリシーを貫くことはおすすめしません。極論、見やすければ何使っててもいいですよね。読みやすいコードを書く方法インデントとはif文やfor文などでコードを読みやすくする為の字下げのことである、とお伝えしました。そもそもの目的は「コードを読みやすくすること」です。コードを読みやすくする為に他にも知っておくと良いことをまとめました。キャメルケースとスネークケース変数の名前の付け方にはキャメルケースとスネークケースの2パターンあります。これらどちらのケースで命名するかを統一しておくと統一性があり読みやすいコードとなります。実際に2つのパターンで商品の合計金額を格納する変数を作るとした場合。・キャメルケース$totalAmount・スネークケース$total_amountキャメルケースは単語のつなぎ目はなく次の単語の頭文字を大文字にする形、これをラクダのコブにみたててキャメルケースと言います。スネークケースは単語を_(アンダーバー)でつなぐ、これをヘビに見立ててスネークケースというわけですね。どっちを使うのがいいかってことなんですが、個人でやる分には好きにやったらいいんですが、今後使うことになりそうなフレームワークの命名規則に合わせておくのが無難です。現状のPHPでいえばLaravelの命名規則に合わせて書いておけばひとまずOKでしょう。ややこしいのは関数名はキャメルケースで変数名はスネークケースとかになっているんですよね。うっかり変数名にもキャメルケースを無意識に書いてしまったりしている時があります。いってバグが起きるわけでもないのですが、コードレビューとかで指摘されると思うので気付いて直せる範囲なら直しておきましょう。それを直したら重大なバグを誘発してしまいそう...とかいう状況では無理に直すという判断をしなくても仕方ない場面もあるとは思います。横に長くしすぎない例えばif文において条件を10個も20個も横に並べてスクロールしなければ条件を全て把握することができない、このコードはかなり見づらいので改行で数段に切り分けるか、そもそも条件を見直してもっと文字書く書くようにする工夫が必要です。こんな実例は実際の業務ではないのですが一応以下に書いておきますね。“変数の値は1から5の間です”;}ここでは5までにしましたがこれを100まで書いたとんでもなく横に長いコードとしましょう。条件文を改行するのはあまり好きではないので、そもそもの条件を見直すと。“変数の値は1から5の間です”;}この書き方が正解でもないですし、他にもいろいろな書き方がありますが最初よりはスッキリしましたよね。条件が長くなりすぎる時はうまく考えると条件をシンプルにかけると思います。ネストを避けるネストとは入れ子のことです。上記の例で行くとネストが一つ深くなる書き方は以下の通り。“変数の値は1から5の間です”;}}ネストが深くなればなるほど読みづらく理解しづらくなります。ネストせずに一階層で済むように工夫する癖をつけてくと良いと思います。私も適切なコメントとは何ぞやをまだ完璧に理解しているとは言えないのですが、コメントを入れておくと後で読んだ時に理解しやすいのあれば書いておくわかりきったことまでいちいち全部コメントを書かないくらいが基本なのかなと思います。こんなコードはNG読みやすいコードの逆をいけば完成です。個人的には縦に異様に長い、もしくは1文が横に異様に長いなどとにかく無駄に広がっているケースのコードは読みづらいなと感じます。いってなんでもかんでも超最小単位で区切ってあっちこっちいくのも好きじゃないので難しいんですけどね。読みやすい・読みづらいには個々人の主観に関わる部分もあります。プログラミングのご法度プログラミングでやってはいけないことの一つとしてマジックナンバーというものがあります。簡単に言うとコードの中に突然出てくる謎の数字です、例えば以下のコード。“処理が成功しました”;}1って何だ、その後の出力的には成功が1って意味なのか?と疑問を抱きコードを読むだけはわからず仕様書を引っ張り出してきて該当箇所を確認しなければよくわからない。いう謎の数字がマジックナンバーです。回避するには数字を定数にして意味を持たせる方法が一つあるかと思います、以下のような形。“処理が成功しました”;}これで謎の数字1は成功時のステータスコードであることが理解しやすくなります。自動インデント可能なテキストエディタ話が大分インデントからそれてしまいましたが、改行するたびにいちいちインデントに半角スペースを手で打っていたんじゃしんどいですよね。テキストエディタの中には自動的にインデントに対応してくれるものがあるので、利用してみるとコードを書く速度を早められると思います。web系サーバサイドの開発をメインに10年以上お仕事をさせていただいております。