• 締切済み

どのようなクラス名をつけた方が良いのでしょうか?

C#でクラスライブラリを自作しようと考えているのですが、 入力された値などをチェックするバリデーションクラスを作りたいと思っています。 プログラム言語「PHP」のフレームワークで 「zend framework」というのがありまして、C#のライブラリでもそのような構造にしたいと思いまして、 そこで次のような構造で ┬ Mylibrary(ライブラリ名) │└ Validateフォルダ │ ├Alpha.css(アルファベットかチェック) │ ├Date.css(日付かチェック) ├Validate.css(各種のバリデーションを繋げて、一括でチェックする、または管理するクラス) というふうに考えていたのですが、コンパイルすると「Validate.css」で次のような 「名前空間 'Mylibrary' に 'Validate' の定義が既に含まれています。」 と名前がバッティングするようなのです・・・ なので仕方なく、「Validate.css」ファイルの方を、 「ValidateManager.css」(←この違いも自分の中では曖昧ですが・・・→)「ValidationManager.css」 や単に 「Validationt.css」 にしたり、それかValidateフォルダ(「namespace Mylibrary.Validate」)の方を 「Validations」(「namespace Mylibrary.Validations」) にしようか迷っています・・・ みなさんなら(このようなライブラリを作るか否かも含めて)どのような名前を付けるのか アドバイスを頂けないでしょうか?

みんなの回答

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.2

ご自分でよくわかっていないものを、プログラムで定義するのは不可能です。ただの自作のライブラリなら、必要と思う時が来るまで作る必要はないでしょう。 ディレクトリ構造ですが、DB の例で言えば私なら以下のようにするでしょう。 -DB --Statement.cs --PdoStatement.cs --MySqlStatement.cs ... あるいはこうかもしれません。 -DB --Statement ---AbstractStatement.cs ---PdoStatement.cs ---MySqlStatement.cs s を語尾につけるのは、読みにくい上に英語の語形に依存しすぎていて、私もあまり好きではないですね。 それと、PHPのことはよくご存知のようですが、新しい言語を勉強するなら新しい概念を学ぶことを恐れていてはいけません。 言語を学ぶこととは、文法だけではなく考え方を学ぶことでもあるので。

takagoo100
質問者

お礼

ご回答ありがとうございます。 なるほど、階層わけしないという選択肢もあるわけですか。 たしかに仰るとおり、もっとフレームワークや言語そのものを理解しないと 決定すら下せないですね・・・ この問題については、もう少し考えてみたいと思います。

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

zend framework についてはあまり知りませんので、ちょっと検索しただけです。 見たところ functor クラスを作りたいようですが、そういうとき C# では delegate を使います。 やっつけですが、私なら以下のようにします。 struct Validation { bool IsValid; String Reason; }; delegate Validation Validator(String str); 仮称ValidationManager の必要性がよくわからないので、もうちょっと詳しくお願いします。「~を管理するクラス」というのはクラスの定義としてよくありません。なぜなら、データを管理することはプログラムの役割そのものだからです。

takagoo100
質問者

お礼

ご回答ありがとうございます。 ValidationManagerについては自分でもよく分からないですが、とにかく いろいろなバリデーションを繋げて扱うので、そしてよくManagerという関数を 見かけるので、それを付ければいいのかな?と思ったのです。 仮にZend通りの構造にしようとすると名前がバッティングしてしまうので、 避ける方法はないかという消極的な選択です・・・(PHPだとこのフォルダ構造で大丈夫なのです) もうひとつ、Zendをあまり知らないということですので申し訳ないですが、 たとえば、ZendにはZend_Dbというデータベースを扱うライブラリがあります。 そのZend_Db_StatementクラスとStatementのそれぞれのデータベースの種類ごとのファイルが 次のような構造であるのですが、 ┬ Zend │└ Dbフォルダ │ ├ Statementフォルダ │ │ ├ Pdo.php │ │ ├ Mysqli.php │ ├ Statement.php(←このクラス名がバッティングしてしまう) これもこの構造をC#で再現しようとすると名前がバッティングしてしまいます。 myuki1232さんならこの場合どのような名前を付けるのでしょうか? 自分としては、StatementフォルダをStatementsフォルダとしたくないので、 Statement.phpの方をStatementManager.phpとかにして避けようと考えていたのですが、 たしかにmyuki1232さんの仰るとおり英語の意味的にもプログラムの機能的にも おかなしな意味の名前をつけるのは変ですよね・・・ ただ自分的にはフォルダ(例えばPdoやMysqliなどのファイルが入ってるフォルダ)に sを付けるのは好きではないです。というのは、ひとつsをつけるとほかの全ての そういうフォルダにsを付けないと統一感がないというかめんどくさいというか、、、 だったらsなしで統一したいですね。。 http://framework.zend.com/manual/ja/zend.db.statement.html

関連するQ&A