Blog ブログ

リーダブルなコード書けるかな??

みなさん、こんにちは。
NieR:Automata、やってますか?エンド回収が終わらない水瀧でございます。
そういえば Nintendo Switch が発売されましたねぇ。
皆さんはもう手に入れましたか?手に入れましたよね?
まだだというそこのあなた!私も持ってません☆
とりあえず遊びたいソフトが3本になったら私も購入を検討しようと思います ニッコリ

今回の本題ですが、タイトルで察する方もいるかとは思いますが、
そうです。あの本ですよ。その名も
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
です。

とある勉強会でこの本の存在を知り、前々から興味はあったので、ようやく読み始められましたよ。
とりあえずまだ途中ですが、幾つか内容の紹介をしていこうと思います。
今回はエラー処理と変数に関しての内容でいきます!

ガード節
ガード節、大事ですね。
プログラミングを習い始める頃なんかは if 条件は実装したい条件に適うように書いたりすると思います。
実装者の想定する正しい条件に当てはまるということはそれ以外の異常があった場合は処理しないということです。
(実際のところはエラー処理をするのですが・・・)
そこでご紹介したいのが、こちら!
ガード節」でございます!
実装条件に合わない時、つまり、処理するデータに何か異常があった場合を
できるだけ早く検知し、バグの波をせき止めるために使います。
エラー処理によく登場するものだと思います。
簡単なサンプルを書きます。

許容してはいけない処理結果の異常を検知し、今回の場合は例外を投げるようにしました。
本来実行させる処理の事前条件をチェックするために有効です。
事前条件のチェック処理のブロックがガード節となり、
その後の処理コードのブロックは事前条件が満たされていることを期待するコードを書くだけで済みますね。
こういったガード節があるとコードの見通しもよくなり、
書き手も読み手もハッピーになれますね。(なれるはずです・・・。)

ネスト
ガード節にもチラッと出てきたネスト。「入れ子」ということもありますね。
ソースコードのネストが深いとエディタで表示する時、どんどん右に寄っちゃいます。
しかも、深いまま下へ読み進めると何が起こるか・・・。もうお判りですね。
そう。自分が今どのスコープにいるかわからなくなります。迷子ですよ。
プログラムにおいて、特にソースコードは人間が見るものなので、
見やすくないと内容の理解が遅れます。その分、実装にも遅れが出ます。
「期日」という悪魔を追い払う一手に減らせる階層は減らしましょう!
サンプル、一応書いておきますね。(もう言わずもがなだとは思いますが・・・。)

学生の頃に書いていただろうコードになりました。
(いい案が浮かばなかったです・・・。)

説明変数・要約変数
説明変数や要約変数、おそらく変数を作る際は基本的にこの変数になるのではないかなと思います。
私なりの解釈では、説明変数はどんな値なのかを、
要約変数はどんな式なのか(またはその結果)を入れるのに使うものじゃないかなぁと考えています。
どちらにも共通しているのは、
できるだけ短い名前でそれが何なのかを伝える必要がある
ということではないでしょうか。
とはいえプロジェクト固有の略称なんかは使うべきではないですよね。
略称を使う場合は一般的なものをチョイスすれば良いと思いますし、
私もできるだけ、そうできるように気をつけてはいます。
(が、見事に突っ込まれ続けています・・・ 笑)
こういうのはもう、センスとボキャブラリーの産物ですよ・・・。
何が入っているかわからない玉手箱になるくらいなら、
ある程度の名前の長さを許容して、ガラスの箱にでもする方が役に立つ変数が作れます。

説明変数は演算に、要約変数は制御式に使うとシチュエーション的にも良さげだと思っています。
(間違ったことを書いていると指摘をされないかドキドキします・・・ 汗。)

まとめ
本のタイトルにもある通り、実践的なテクニックがたくさん載っているので、
今の時点でも早速業務に反映できるものが多かったですね。
特に新人の頃はコード規約を覚えたり、新しい言語に慣れたりで、
なかなかコード品質にまで目が向かないと思います。
そんな人こそ一度読むといいかもしれないですね。
(新人が何を言っているのか・・・ 笑)

ちなみにですが、この本の前にリファクタリングの本を読みましたが、
リーダブルコードはリファクタリングに通づる内容があるなとも感じました。
この本を読みきるまではまた、幾つか紹介ができればと思います。
それでは今回はここまで。


採用情報

クラウドクリエイティブスタジオではエンジニアの方を絶賛募集中です。
皆さんとともに、是非!良きゲームを作っていきたいと思っております!

採用情報