トップページ > プログラム > 2015年03月31日 > 855buxIJ

書き込み順位&時間帯一覧

3 位/168 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000200310021000009



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
【TDD】テスト駆動開発【TestFirst】

書き込みレス一覧

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
915 :デフォルトの名無しさん[sage]:2015/03/31(火) 10:25:46.23 ID:855buxIJ
>>890
> UserForm2で表示する文字や配列の加工をUserForm1でやるってか。
UserForm2が単なるViewで、そこに表示するデータを別Classで実装する場合も、UserForm2-UserForm1と
同じ関係なんだが、それでもそんなこと言うの?

> >>887
> 結合度の話はもっとクラスを理解したときに出てくる。
UserFormもクラスなんですが。

> プロパティ名でそのクラスの役割に合わせた別の振る舞いを行うと言ってピンと来なければまだ早い。
そもそもUserForm内にビジネスロジックを実装するのが筋が悪い。
UserForm2になんらかのロジックがある場合、UnitTestはどうやるんだ?

> 苦労するなら今の内にちょこっとした作りでそれを回避出来るならしておけばいいと言う話。
何度も言うが、getter/setter/propertyを通しても、それは直接Controlの値を読み書きするのと変わらない。

> まだ違うフォームからフォームのコントロールを弄ることに全く違和感すら感じてないみたいだし。
「違うフォームからフォームのコントロールを弄ること」ができるのがVBA(VB)のメリットなのに。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
916 :デフォルトの名無しさん[sage]:2015/03/31(火) 10:35:40.93 ID:855buxIJ
>>911
CreateObjectすれば良いよ。
ただ、インテリセンスが効かないが。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
921 :デフォルトの名無しさん[sage]:2015/03/31(火) 13:28:03.63 ID:855buxIJ
>>919
> 誰がUserForm内に直接ビジネスロジックを書くって言ったよ。曲解も甚だしいなぁ。
> > プロパティ名でそのクラスの役割に合わせた別の振る舞いを行う
これは、Propertyのメソッドの中で、なんらかのビジネスロジックを定義するということじゃないのか?
単にprivateな変数に値を代入・参照するだけなら、public変数となんら変わりはない。

> 言ってる意味が分からない。何でUserForm2に何らかのロジックが有ったら単体テストに戸惑うの?
「単体テスト」じゃなくて、UnitTest。テストコードを使った自動テスト。
画面にロジックが合ったらUnitTestしづらくなるのは、どんな言語でも一緒。

まあ、お前が言わんとしてることはわからんでもないが、どんな場合にもその設計思想を適応しろというのは
あまりに硬直した考えすぎる。

そもそもVBAはExcelの機能を操作するのが目的で、ThisWorkbook以下、全てのExcelオブジェクトは
UserForm1が必要なデータをUserForm2を開いて入力したい、というのが元々の要求で、素早く実装できる
方法をとっても全然かまわないと思うがね。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
922 :デフォルトの名無しさん[sage]:2015/03/31(火) 13:29:37.91 ID:855buxIJ
>>921
>そもそもVBAはExcelの機能を操作するのが目的で、ThisWorkbook以下、全てのExcelオブジェクトは
消しそびれた文章が残ってた。
無視してくれ。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
924 :デフォルトの名無しさん[sage]:2015/03/31(火) 13:37:18.20 ID:855buxIJ
VBAは(多分VB6もそうだったと思うんだが、記憶が定かでは無い)、規定のインスタンスという仕組みがあって、
例えばUserForm2にTextBox1があり、UserForm1でその初期値を設定してからUserForm2を開くとき、
UserForm1:
Sub foo()
  UserForm2.TextBox1.Text = "hoge"
  UserForm2.Show
End Sub
これだけでいい。
(UserForm2の入力結果をUserForm1に戻す必要がある場合は、もう少しコードが必要だが。)

こんなにシンプルに書けるのに、余計な仕組みをかます必要がある?
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
929 :デフォルトの名無しさん[sage]:2015/03/31(火) 14:48:30.53 ID:855buxIJ
>>926
>>872でいいよ。
別のやりかたとして、UserFormをNewする方法もある。
このやり方だと、UserFrom2を閉じても(HideじゃなくUnload)、form変数を通してUserForm2が持っている情報にアクセスできる。

Sub foo()
 dim form as New UserForm2
 form.GlobalVarialble = 100;
 form.TextBox1.Text = "hoge"
 form.Show
 ' From2でGlobalVariableの値を変えたり、TextBox1の内容を変えたり
 Debug.Print form.GlobalVarialble
 Debug.Print form.TextBox1.Text
End Sub

ごちゃごちゃやってたのは、Global変数使うなPropertyにしろ的なことや、UserForm外部からControl触るな的な話。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
932 :デフォルトの名無しさん[sage]:2015/03/31(火) 17:28:45.16 ID:855buxIJ
初心者に優しい俺ですら腹立ってきたぞ。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
935 :デフォルトの名無しさん[sage]:2015/03/31(火) 17:38:28.66 ID:855buxIJ
>>933
> 初心者に理解してもらえる文章を書くには、
> 相当な実力を必要とするからねー
まさに、その通りなんだが、
> 初心者向きの文章を書くお積りが無さそうなので
とか言われるとね−。(俺が言われたわけじゃないが)
【TDD】テスト駆動開発【TestFirst】
520 :デフォルトの名無しさん[sage]:2015/03/31(火) 18:51:00.25 ID:855buxIJ
Kindleでこんな本が発売されたのを発見。
読んでないので内容は全くわからないが、目次を見る限り、よさげな気もする。

『これからはじめるTDD テスト駆動開発入門 (Think IT Books)』 \1,400
http://www.amazon.co.jp/dp/B00VFQ7WCM

> エクストリーム・プログラミングのプラクティスのひとつであるテスト駆動開発(TDD)について、
> 聞いたことはあるけれど内容は知らない方、概要は知っているけれど実際に使ったことが
> ない方を対象に、全7章にわたってご説明していきます。アジャイルをかじった程度の開発
> 経験の浅いプログラマと、TDD開発を実践しているプロジェクトリーダーによる会話形式で
> 楽しくTDDを学びましょう。本書は、インプレスが運営するWebメディア「Think IT」で、「マル
> チプラットフォーム対応のゲーム開発エンジンUnityを体験する」として連載された技術解説
> 記事を電子書籍およびオンデマンド書籍として再編集したものです。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。