-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ランダムジェネレータ:テストで必要なメソッドをpublicにする #160
ランダムジェネレータ:テストで必要なメソッドをpublicにする #160
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
本体でプライベートで良いメソッドなら、テストの時には通常とは違う方法(send)で呼び出していても良い気がしますが、そういうものでもないのでしょうか。
本番で、アダプタから直接呼び出されないメソッドがプライベートになっていた方が、呼び出すべきではないメソッドを呼んでいる(プライベートになっていてメソッドを見つけられない)エラーが発生するので、安全な設計に思えます。
全部はやりすぎかもしれませんが、少なくとも |
logger は元々アダプターから呼べる(厳密には書き込みさえ出来れば良いし、IRC や Discord のコマンドからは呼び出されないのでコンストラクタで書き込めれば良かったかも)ので、Object#send を使わない呼び出し方にして頂いたままで良いと思います。 ジェネレータのメソッドの可視性については、今まで「アダプター(もしくは他のプラグインのジェネレータ)から直接呼び出すか」だけを考えて設定してきました。 load_data に関しては、ランダムジェネレータ以外でも使う可能性が高そうなメソッドなので、public になっていても良いと思います。他のメソッドについては、現時点では単なるテストのためだけに本体を修正するだけのようですので、引き続き private のほうがいいです(これらを例えばカードデッキプラグインを実装するにあたり外から使うならその時に private を外します)。 ついでに、先日の #158 (comment) と同様に、メソッドは Hash を返し、@table は呼び出し元で格納するように変更して頂けないでしょうか。 |
これはその通りです。理想は、外からは
分かりました。
一貫性がなくて申し訳ないのですが、これは迷いました。というのは、今回は呼び出し元がジェネレータ以外であり、かつ |
Object#sendで設定する必要がなかった
テストのように、外部から呼び出す場合があるため。
de3e3b1
to
3846b00
Compare
返信・作業中ありがとうございます。 ほかは特にありませんので、マージお願いします。 |
丁寧に見てくださりありがとうございました。それでは、マージいたします。 |
e3f82e6
into
arrange-plugin-adapter-module_delete-code-for-test-on-main-files
ランダムジェネレータのテストにおいて、
Object#send
を使って無理矢理プライベートメソッドを呼び出していた箇所を、普通のメソッド呼び出しに変えました。おそらくこれは私がインターフェースの設計に失敗していた箇所です(テストで使う=外部から使う ⇒ publicでなければならない)。ついでに、server_connection_reportのmail_generatorのテストの同様の箇所も修正しました。