2016年09月30日23:32
Javaプログラミング研修会 5日目
こんにちは、たかしーです。
今日はJava講座5日目でした。
今日のテーマは”リファクタリング”です。
リファクタリングとは、コードを開発中のコード、あるいは開発が終わったコードを、読みやすい形に書き換えることで、将来の機能追加やバグ修正をしやすくする目的の工程です。
よくプログラミングをしていると、バグを修正したり、後から機能追加が必要になったりします。
そうすると、コードが継ぎ接ぎになり、そのままだとどんどんコードが複雑化し、最終的には誰も触れない(触るとプログラムが壊れてしまう)コードになってしまいます。
そうなる前に、機能追加やバグ修正などの操作を行った際に、都度コードのリファクタリングを行うことで、コードを触っても読みやすく、手をつけやすい状態を維持できるというわけです。
リファクタリングの際、気をつけなければいけないのが”プログラムの見た目上の機能(振る舞い)”が変化しないようにするという点です。
いざ実際にリファクタリングをしていると、ついつい既存の機能の改善までやりたくなってしまいますが、リファクタリングはあくまで”読みやすくする”ことが目的なので、ここで機能追加をすることはよくありませんし、そのリファクタリングをまたしないといけなくなってしまいます。
では、その"振る舞いが変化していない"というのは何で判断すればいいのか。
それこそが先日教えていただいた”テスト”です。
リファクタリングをかける前に、仕様に基づいた網羅テストを自動化した形で用意しておきます。
こうすると、リファクタリング後に同じテストをかけ、リファクタリング前と同じふるまいをしている(同じ答えを出している)かどうかをチェックできます。
テストの際、テスト用のライブラリを使用するとかんたんにテストを作成することができて非常に便利です。
今回使ったのは
JUnitというライブラリです。
Javaでは広く使われているデファクトスタンダード化したライブラリですので、入れておいて損はないかと思います。
他の言語でもそれぞれテストライブラリが用意されており、同じような事ができます。
普段よく使うJavascriptやPHPにもそれぞれテストライブラリがあったので、是非活用したいと思います。
今回も非常に勉強になりました。
自分の書いたコードで、きれいにしたいものも結構あるので、ぜひ教えていただいたことを活用してリファクタリングに挑戦してみたいと思います。
今日はJava講座5日目でした。
今日のテーマは”リファクタリング”です。
リファクタリングとは、コードを開発中のコード、あるいは開発が終わったコードを、読みやすい形に書き換えることで、将来の機能追加やバグ修正をしやすくする目的の工程です。
よくプログラミングをしていると、バグを修正したり、後から機能追加が必要になったりします。
そうすると、コードが継ぎ接ぎになり、そのままだとどんどんコードが複雑化し、最終的には誰も触れない(触るとプログラムが壊れてしまう)コードになってしまいます。
そうなる前に、機能追加やバグ修正などの操作を行った際に、都度コードのリファクタリングを行うことで、コードを触っても読みやすく、手をつけやすい状態を維持できるというわけです。
リファクタリングの際、気をつけなければいけないのが”プログラムの見た目上の機能(振る舞い)”が変化しないようにするという点です。
いざ実際にリファクタリングをしていると、ついつい既存の機能の改善までやりたくなってしまいますが、リファクタリングはあくまで”読みやすくする”ことが目的なので、ここで機能追加をすることはよくありませんし、そのリファクタリングをまたしないといけなくなってしまいます。
では、その"振る舞いが変化していない"というのは何で判断すればいいのか。
それこそが先日教えていただいた”テスト”です。
リファクタリングをかける前に、仕様に基づいた網羅テストを自動化した形で用意しておきます。
こうすると、リファクタリング後に同じテストをかけ、リファクタリング前と同じふるまいをしている(同じ答えを出している)かどうかをチェックできます。
テストの際、テスト用のライブラリを使用するとかんたんにテストを作成することができて非常に便利です。
今回使ったのは
JUnitというライブラリです。
Javaでは広く使われているデファクトスタンダード化したライブラリですので、入れておいて損はないかと思います。
他の言語でもそれぞれテストライブラリが用意されており、同じような事ができます。
普段よく使うJavascriptやPHPにもそれぞれテストライブラリがあったので、是非活用したいと思います。
今回も非常に勉強になりました。
自分の書いたコードで、きれいにしたいものも結構あるので、ぜひ教えていただいたことを活用してリファクタリングに挑戦してみたいと思います。