#staticクラスを積極的に使用すべき場面とはどこなのか?
ご覧いただきありがとうございます。
いま私はデータベースにアクセスをしたりユーザーからフォームで値を受け取ったり、といった
ごくごく標準的なWEBサイト(WEBアプリ)の作成を業務で行っております。
その中で
「このメソッドって他のクラスでも使うから共通化したいな」
「このコードって他の色々なクラスで使うから共通化したいな」
「この変数って・・・」「この定数って・・・」
という事を多々感じます。
例えば
"String型の変数を引数で受け取り、数値に変換できるかどうかチェックするメソッド"
"2つ以上のクラスで使われるSQL文"
"データベースのレコードが論理削除されているかいないかを判別する0と1という数値"
などです。
私個人としては上の例で挙げた3つであればstaticクラスのstaticメソッドやstatic変数などにしてしまうべきだと感じます。
テーブル定義が変わったりした場合、複数クラスに同じSQL文を書いていたらその分だけ直さなければなりませんが、static変数として持っておけば修正する箇所がそこだけで済みますし、メソッドなんかも一見正しく動作してたがある条件を満たすとエラーになることが発覚した!なんてなったら目も当てられません。
0や1といったたった一桁の数値であっても、マジックナンバー化を防ごうと思ったら各クラス毎に定数として定義すべきですし、そうするくらいならstaticな定数として定義した方がよいと感じます。
#メンテナンス性が損なわれるという真逆の意見
そんなことを思いながらネットで調べてみたのですが、そこでびっくり。
「staticは多用するとメンテナンス性が損なわれる」
といったような内容が結構書かれていたのです。
他にも**「staticはメモリを使う」**といった意見も人から聞いたりしました。
#個人的な意見で良いのでお聞かせください
このような背景があり質問をさせていただきました。
絶対に正しい一般論は難しいと思うので、個人としての主張を聞かせてください。
私個人としては共通化できる部分はどんどん共通化すべきだと思っていますし、同じコードや同じ定数を複数のクラスに書いてしまっている方がよほどメンテナンス性に欠ける、変更に弱いと思います。
よろしくお願いいたします。
#追記
読んだサイトなど
ttps://ryoasai.hatenadiary.org/entry/20110702/1309600182
ttps://anopara.net/2014/04/11/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%AB%E8%AA%AD%E3%82%93%E3%81%A7%E3%81%BB%E3%81%97%E3%81%84%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89/
ttps://qiita.com/ue_knnk/items/fa84b8bc30ba319e5744
メモリについては先輩から受けた話です。(Javaの事を言ったのかどうかはわかりません><)
回答4件
あなたの回答
tips
プレビュー