Blog ブログ

新人プログラマが本を読んでみた その5

みなさん、こんにちは。
ダンジョンに潜り、マモノゴハンを食べてみたいプログラマの水瀧です。
そういえば、最近は飯テロ漫画が多くなってきてますね。
業界的に流行っているのでしょうか?
この記事を書いてる間もよだれが出てきます・・・笑。

さて、前回まででリファクタリングの本についての書評を書いてきましたが、
読者さん的にはね・・・つまんないんじゃないかなぁ・・・なんて思う次第で、
この本については今回で決着をつけますよ!
(実はちょっと水瀧が飽きてきちゃったのは秘密です。←おい)
そんなこんなで今回は満員の特急列車(10両編成)で行きます!
各章でちょっぴりシンプルにさせてもらっています。
(その方がきっと皆さんも読みやすいと信じて!)

第7章 オブジェクト間での特性の移動
第7章では主にクラス設計についての内容が述べられています。
クラスの持つべき責任がどこなのか?ということを考えるための
一つの意見がここで知れると思います。
あえて「意見」というのはこれが正解ではないと思うからです。
一つのクラスが責任を抱えすぎているだとか、はたまた、責任が分散しすぎているだとか
そういった場合に適用できるリファクタリングも紹介されています。
クラス設計のリファクタリングで悩むときは、
この章を見返してみてもいいかもしれないですね。

第8章 データの再編成
第8章ではデータ操作に関するリファクタリングの紹介があります。
自己カプセル化フィールドの作成や、値から参照への変更、オブジェクトによる配列の置き換えなど、
どのようなデータをどのように持つべきかを考えるコツが得られるのではないかなと思います。
こういったデータに関するリファクタリングは比較的適用しやすいような印象を受けました。
簡単に適用できる分、かえって見づらいコードになってしまう。
なんてことにはならないように気をつけたいところです。

データといえば、ビバ!定数!滅びろ!マジックナンバー!と水瀧は考えております。
読んでいけばわかる数字は幻です。
頭の中ですぐに消えて、もう一度見返す羽目になりますよ・・・。

第9章 条件記述の単純化
第9章では条件記述の単純化についてです。
条件記述はコードが成長するにつれ、どうしても複雑になってしまいがちな部分です。
最初は1つしかない条件式でもあれもこれもと式を追加して、
気づけば、条件式がミルフィーユに・・・。(しかも美味しくない)

説明変数や要約変数の導入、ガード節などを駆使し、
いかにすっきりした条件記述ができるかがキモですかね?
ひとまず、実装してみて、ひと段落つくところでさっき書いた条件式を見てみれば、
自分でもちゃんと読み易いと感じるような条件式を書くコツに気づけるようになると思います。
(それでも不安なら THE・コードレビュー!)

第10章 メソッド呼び出しの単純化
第10章では関数呼び出しの単純化について。
シンプルな関数呼び出しや、何をする関数かがすぐにわかるような命名など、
関数の呼び出し側での見易さにつながるようなリファクタリングが紹介されています。

確かに多すぎる引数はエディタを横にスクロールしなくちゃいけなかったり、
ここでも美味しくないミルフィーユができてしまってたりしますからね・・・。
(まあ、ライブラリの約束などでどうしても、というときはあると思います。)
なんかこの関数呼び出し、ピンとこないな。と思ったあなた。
第10章を見て、当てはまるリファクタリングがないか、
探してみてはどうでしょうか?

第11章 継承の取り扱い
第11章では継承構造に関するリファクタリングが紹介されています。
私自身、継承はなぜか苦手意識があります・・・。
おそらくコードの追いかけで行ったり来たりするからですかね・・・?
それくらい複雑になり易いのではないかなと思っています。

そんなときはフィールドを昇格・降格させたり、クラス抽出したり、と
適切な構造に治すにつれ、おそらく読み易い継承構造ができてくるのだと思います。
うーん、私も継承の取り扱いには慣れたいものです・・・。

第12章 大きなリファクタリング
第12章ではこれまで紹介された細かいリファクタリングを駆使した、
大きなリファクタリングを「ゲーム」と称して、どういう進め方で、
今までよりも大きなかたまりでリファクタリングをするのか、
また、なぜ大きなリファクタリングが必要なのか?などの意見を知ることができると思います。

とはいえ、私が感じた分だと、小さなリファクタリングを重ねて行くこと自体が
大きなリファクタリングになるのではないかなぁ何て考えています。
時間的に短いリファクタリングも継続していればトータルの時間は長くなるので、
あまり大きな差がないような気がしています。

第13章 リファクタリング、再利用、現実
第13章ではリファクタリングにまつわる現実性についての話や、
リファクタリングをしたがらない理由などの話が上がっていました。

特にやりたくない理由の部分であげられている4つの理由が、
これまた納得できちゃう理由で、新人の私でさえも確かにな、と思ってしまいました。
それでも、リファクタリングの必要性は知れたつもりではいますので、
「だけどやらなきゃいけない」の精神でネガティブな発想は覆していきたいですね。

第14章 リファクタリングツール
第14章ではリファクタリングに使うツールについての紹介がありました。
ツールを使うことで手作業で行っていたリファクタリングが楽にはなります。
ただし、ツールが全て正しいリファクタリングをしてくれるとは限らないので、
あくまで人間が行うリファクタリングをサポートしてくれるような、
それくらいのレベルのものだという認識でいいと思います。

IDE なんかにもリファクタリングの機能が搭載されているものも多いですし、
そういった、ちょっと楽できるリファクタリング機能はどんどん使って、
効率よくリファクタリングしていきましょう!

第15章 部品から全体へ
最後の章ではリファクタリングができるようになったけど、
ここで終わりではないということを語っています。

これまでにリファクタリングとはなんぞや?について知り、
実際に適用できる手法、それを適用すべき状況などについても知り、
一通りリファクタリングができるようにはなった。
けども、これからは、一人でリファクタリングするのではなく、
誰かと組んでリファクタリングしたり、潮時に気づけるようになったりしたいと、
そう思わせるような内容でした。

まとめ
この本の全体的な内容としては、リファクタリングのバイブルになりそうな本だと感じました。
しばらくリファクタリングやってないな。なんか基本的な部分が怪しい。だとか、
ん?こういう時ってどうやるんだっけ?なんて時に読み返すと良いのかなと思います。
後半からは1回では理解しきれないものも多いので、
必要な時に何度でも見る。そんな読み方をする本かもしれないですね。

超特急ではありましたが、ようやくこの本の書評が書けました!
長らくお付き合いいただき、本当にありがとうございました!
次回がいつになるか、どんな内容になるかは今の時点ではわかりませんが、
また次回があればお会いできるかと思います。
それでは今回はここまで。


採用情報

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