プログラムは時間が経過すると忘れてきます。
他人に使ってもらったりする場合、間違えて使ってしまう場合もあり得ます。
それゆえ、なるだけ余計な機能やややこしく感じることは避けることが無難です。
間違って使ったらバグらずに静的エラー(エディターのコード内で波線が出る)が出るようにする必要があります。
酒飲んでヘロヘロ状態でコードを組んだら、
バグが良く起きる・・・NG
静的エラーがよく出る・・・OK
上記を基本に考えていきます。
●クラスで静的関数を定義する場合
インスタンス生成やその他、特別なものがあるかもしれない・・・などを考えてしまいます。
人間、疲れてくると単純なミスも犯しやすいです。
インスタンス生成を抑止するコンストラクタを記述したり、コードが煩雑になります。
機能拡張やクラス内メソッドでの相互関連性などがある場合いいかもしれません。
●名前空間でグローバル関数(グーグル流の言葉ならグローバルメソッド)
より独立しているよっていう意味付けや意識づけがされます。
シンプルで分かりやすいです。
インスタンス生成するかどうかなんて悩まなくていいです。クラスでないのでインスタンス生成ミスはあり得ません。
関数が少ないなら、名前空間も不要でしょう。
しかし、関数が多い場合、カテゴリによる選択に手間がかかります。
カテゴリによる名前空間で分ければ、迷わなくて済み、選択効率も上がるわけです。
複数人のプログラマーの作業ならば、作業者の名前空間、処理のカテゴリの名前空間、という感じでネストしていきますね。
●結論
いずれにしても長いプログラムで、どういう働きのモジュールが必要かによって、
どちらがいいかは変わってきます。
間違ったら、バグでなく、静的エラーになる、この仕組みを徹底することが重要と考えています。
グーグルのコーディング規約ではグローバルメソッドは使うな、とか書かれていたような気がしますが、
人それぞれかとは思いますね。
※間違っていたらご指摘お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/15 04:06
2017/08/15 04:17