ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

プログラミングをしていて関数/メソッドを分割したくなるとき

プログラミングをしていると、関数またはメソッドに分けたくなるときがあります。

  • 同じような処理を再度書くかなくてはならず、コピーして手直しすれば手早いけれど、修正が発生した場合漏れがありそうなとき。
  • 3重ループになっていて、ループの条件がわかりにくくなっているとき。
  • 条件分岐が深くなったとき。

  • 行数が多くてコードを読んで処理を理解しようとした際に時間がかかるとき。

といった場合もあります。

プログラミング
unsplash-logoKelly Sikkema

同じ変数名を知らず知らずのうちに使ってしまっていたとき

行数が多い場合、最初からコードを読むのも手間ですが、同じ変数名をまだ使われていないと思って使ってしまい、処理の結果が正しくなくて悩まされる場合があります。
使った当初は同じ変数名を使いまわしても大丈夫だと思ったのかもしれませんが、プログラミングが進んだ結果、同じ変数名で保持しておかなければならない値が、随時更新を行って、結果が正しく得られないという経験を最近しました。
変数名を分けて暫定対処を行い、結果が正しくなるのは確認しましたが、今後分けていかなければなりません。

変数名を考えたら同じになるとき

どんな値を入れるのかを考えて変数名を決めますが、変数名を考えた結果、すでに変数名と同じになったら、似たような処理をプログラミングしている可能性があります。
関数名/メソッド名も同様です。
どう考えても同じ変数名にして、2個目には2とつけた方がわかりやすいとなれば別ですが、めったにありません。
処理をまとめられないのか、関数/メソッドに分けられないのか考えて、分けていかなければなりません。


同じ変数名をつけたくなった時点で、手早く分けてしまうのが、後々のデバッグでの手間の軽減につながるのかもしれません。
分けすぎて、むしろわかりにくなる場合もあります。
単純な機能の組み合わせで実現したいと思っていますが、実際はできない場合が往々にしてあります。
このように思うと同時に、方法論をもっと学ばなければならないとも思っています。