MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

コードを日々きれいにする指針『Java言語で学ぶリファクタリング入門』


Java言語で学ぶリファクタリング入門

目次

はじめに

冒頭の『Java言語で学ぶリファクタリング入門』

を読んだらかなり良かったので、

感想と読書メモを残しておきます。

結城浩さんのリファクタリングの本、長い間、積ん読してたけど、名著の予感。。

感想

『Java言語で学ぶリファクタリング入門』は、

コードをメンテナンスする手法や指針をまとめた本です。

 

リファクタリングとは、外部へのAPIを変更せずに、

中身のコードや構成をクリーンナップする方法ですが、

すべてのプログラマが少なからず、

リファクタリングを実施していると思います。

 

しかし、

そのリファクタリングの指針というのは、

プログラミングを初めて学んだ人には、

うまく学ぶ方法が無いと思っていました。

 

自分もこの本の中に書かれているリファクタリングの内容は、

無意識でコードクリーンナップ時に実施していた内容が多かったですが、

それが一冊の本として体系的にまとめられているのは素晴らしいと感じました。

 

できれば、学生の時に読んでいたたら、

もっとスムーズにコードを書けるようになっていたのになと感じます。

 

サンプルコードはJavaですが、C++が分かる人であれば、

大体理解できると思います。

また、Pythonなどのスクリプト言語のみを知っている人でも、

クラス設計をしたことがある場合は、

少なからず同じようなコードの問題点に

ぶつかったことがあるはずなので、

この本で議論されているコードの

リファクタリングする目的や手段は、理解できると思います。

 

これまで、できるだけ早いうちから読んでおきたかった本として、


【電子合本版】Code Complete 第2版 完全なプログラミングを目指して


リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)


新装版 達人プログラマー 職人から名匠への道

などがありますが、

この本もこのリストの中に入れたいと感じました。

 

読書メモ

リファクタリング: 外部からの振る舞いを変えずに、プログラムの内部構造を変更すること

リファクタリングにユニットテストは必須

リファクタリングは、一つ一つ実施する。

複数のリファクタリングを同時に実施しない

一つのリファクタリングが終わったら、必ずコンパイルと、ユニットテストを実施する

javaはクラスの中に、内部クラス(nestedクラス)を置くことができる

jUnitでは、はじめのテスト前の関数をSetup,

テスト後に実行される関数をtearDownと名付ける

継承は最終手段

リファクタリングリスト

  • マジックナンバーは、const変数で置き換える

  • flagはbreakやreturnで削除する

  • アサーションを入れる

  • 長すぎるメソッドや、コードにコメントを入れたくなったら、新しいメソッドに置き換える

  • int型で、オブジェクトを管理している場合は、enum クラス サブクラスで管理するようにする

  • エラー処理を分離したくなったら、エラーコードを例外で置き換える

  • GUIプログラミングでは、GUIに関係するViewクラスと、関係ないモデルクラスを分ける

  • 無駄な継承は、委譲に切り替える

  • 複数の委譲関係をシンプルにするために、委譲元に委譲先のメソッドをまとめて、委譲元のみにアクセスするようにする

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com


Java言語で学ぶリファクタリング入門

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com