皆さん、こんにちは!
この記事では基礎的なプログラミング力を見分ける指標として用いられるFizzBuzz問題で学んだことを書いていこうと思います。
問題内容としてはごく簡単な「3の倍数はFizz」、「5の倍数はBuzz」、「3と5の公倍数はFizzBuzz」、「いずれでもない場合はそのまま表示」させていく問題です。
しかし、今回はmainメソッド内だけで終わらせず、条件としてメソッド分けを行って問題を解きました。
mainメソッドでは、挙動の確認のため、1〜100までの整数を引数にして「anotherMethod」を呼び出しています。
anotherMethodメソッドでは、戻り値をString型としてそれぞれ結果を返します。
ちなみにint型→String型の変換ではtoString()メソッドを使用していますが、valueOfでも変換は可能です。
正直これだけ見るとすごく簡単に見えるのですが、これが膨大な量のコードとなると難易度がグンと上がります。
メソッドを分けることによるメリットはたくさんありますが、私のようにプログラミング初心者のうちは整理がつかず理解しにくい面もあると思います。
また、Junitでの検証メソッドに「assertEqualsメソッド」があります。今回はこれを用いて9,20,45,44の時の検証を行う際のコードを書いてみました。
左側が「期待値」で、右側が「実測値」となります。
意外と混同しそうなのでこれは私も覚えておこうと思います。
最後に、「String.valueOf」と「Integer.toString」の違いに関して触れておこうと思います。ちなみに一般的によく好まれているのは「String.valueOf」の方らしいです。
引数の柔軟性がある
引数の型が自作のObjectでも、Doubleでも、Booleanでも良いというように柔軟にString型に変換してくれて使い易いです。
NullpointerExceptionにならない
null.toString()といった状況になってしまうとNullpointerExceptionで落ちてしまいます。しかし、valeuOfの方ではnullの場合、nullという文字列を返してくれるので落ちる心配がありません。
一般的にはvalueOfの方が使い勝手が良さそうですが、現場によっては「NullpointerExceptionにならない」=「nullの検知が出来ない」
ということもあるので、toString()を使う場合もあるようです。
今回のように、何かの勉強に付随して、またさらに別の事柄を勉強していけるのがプログラミングの楽しいところだなと感じました。
次から次へとわからないことが出てきますが、一つ一つ潰していけるようこれからも精進していきます。
では、また👋