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

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

1 位/168 ID中時間01234567891011121314151617181920212223Total
書き込み数10000000200011000000016315



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

書き込みレス一覧

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
900 :デフォルトの名無しさん[sage]:2015/03/31(火) 00:03:45.46 ID:Q3Hv60nc
>>889
何か凄いな。1度作ったコード見せて欲しいわ。

俺はコメント入れるけど、何をやっているかのコメントは極力書かなくてもいいように作る・・・努力はしている。

出来ればそれはヘッダコメントだけにとどめておきたい。大体コード見れば何をやってるか分かるし。

どっちかと言えば何をやってるかより、何のためにやってるかの方が情報として欲しいから、
作ってて忘れない内にそっちのコメントを残すようにしてる。特にDBからSQLで値を取って来たり取ってきた値を
加工しているところ辺り。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
910 :デフォルトの名無しさん[sage]:2015/03/31(火) 08:42:10.48 ID:Q3Hv60nc
何かまだ色々直してるね。
直し終わった後にあげたら?
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
911 :デフォルトの名無しさん[sage]:2015/03/31(火) 08:43:38.46 ID:Q3Hv60nc
>>909
ディクショナリは便利だけど、参照設定しないといけない。
場合によっては面倒くさいよ。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
919 :デフォルトの名無しさん[sage]:2015/03/31(火) 12:55:13.55 ID:Q3Hv60nc
>>915

えー、まだやるの?

>UserForm2が単なるViewで、そこに表示するデータを別Classで実装する場合も、UserForm2-UserForm1と
>同じ関係なんだが、それでもそんなこと言うの?

当たり前でしょ。フォームである限りいつどんな仕様変更が入るか分からないし、上司に後々Viewでしか使わないと確約でも取らない限り、そんな作りは使えない。

>UserFormもクラスなんですが。

それも当たり前の話。要するにフォームもクラスとしての視点で理解していない。

>そもそもUserForm内にビジネスロジックを実装するのが筋が悪い。

誰がUserForm内に直接ビジネスロジックを書くって言ったよ。曲解も甚だしいなぁ。

>UserForm2になんらかのロジックがある場合、UnitTestはどうやるんだ?

言ってる意味が分からない。何でUserForm2に何らかのロジックが有ったら単体テストに戸惑うの?

>何度も言うが、getter/setter/propertyを通しても、それは直接Controlの値を読み書きするのと変わらない。

そんなこと言ってるから>>781みたいにUserForm1を閉じないとUserForm2が開けないような制約の付いたへんてこりんなコード組んじゃうんじゃない。懲りないねぇ。

>「違うフォームからフォームのコントロールを弄ること」ができるのがVBA(VB)のメリットなのに。

別に.Netでもフォームから別のフォームを弄ることは出来るよ。役割が違うことをみんな理解してるからやらないだけ。
だからVB6とかシステムを扱うくらいの大きさなら、よほどゆるいところで無い限り、
詳細設計の時点でつっかえされると思うよ。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
920 :デフォルトの名無しさん[sage]:2015/03/31(火) 13:00:21.60 ID:Q3Hv60nc
>>781じゃなくて>>871か。済まんね。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
950 :デフォルトの名無しさん[sage]:2015/03/31(火) 21:47:54.66 ID:Q3Hv60nc
>>921

>>921
>これは、Propertyのメソッドの中で、なんらかのビジネスロジックを定義するということじゃないのか?

>単にprivateな変数に値を代入・参照するだけなら、public変数となんら変わりはない。
Propertyのメソッドの中って何?大丈夫?
まあビジネスロジックにPropertyで受け取った値を直接、加工、値を基にして
他の値を取得したりしてそれらをまたビジネスロジックのプロパティに渡すことはある。
ビジネスロジック自体は当然別クラスでUserFormの中で生成されたり、使用されることもあるよ。
>画面にロジックが合ったらUnitTestしづらくなるのは、どんな言語でも一緒。

NUnitやJUnitみたいなもんでしょ。何を使ってるのか知らないけど、
単体テストって言うのはそう言うのも引っくるめて言うんだよ。
実際、.Net系はコードエディタ側に「単体テスト」タブが有って、「単体テストの設定」から行うことが出来る。
画面テストが難しいからこそ、値取得や加工するところのロジックを絡めないで、
後は値が設定されているところを確認すればいいところまで持ってけばいいじゃん。
そんなUserForm1側でちまちまロジック絡めて設定してどうすんのさ。

>まあ、お前が言わんとしてることはわからんでもないが、どんな場合にもその設計思想を適応しろというのは
>あまりに硬直した考えすぎる。
はいはい。だからクラス構成や役割もおざなりにすると。構造化言語なのにねぇ。
そう言えば前Goto文を使うのは極力避けた方がいいと言ったとき
頑なに否定してた人がいたな。何か同じニオイがする。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
951 :デフォルトの名無しさん[sage]:2015/03/31(火) 22:09:04.49 ID:Q3Hv60nc
>>926
そうだなぁ、例えばUserForm1から値を直接UserForm2に設定したとしましょう。
そこに仕様追加がやって来て、UserForm3が追加されました。
これは、UserForm1とUserForm2の値を受け取って、その値を使ってDBからデータを取得して、表示します。
ついでに同じ条件でDBから値を読み直す更新ボタンも付いていたとしましょう。
さて、UserForm3のコントロールに値を設定するのは、UserForm1、2、3に点在するのと、UserForm3に処理を
固めてしまうのと、どちらの作りの方が仕様追加対応が楽でしょう。

とでも言えば取り敢えず何で直接別画面のコントローラー に値を設定しちゃいけないか分かってくれるかなぁ。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
953 :デフォルトの名無しさん[sage]:2015/03/31(火) 22:15:32.33 ID:Q3Hv60nc
コードは書きたいけど、仕事の合間に喫煙所でiPhoneからレス付けてるんでちょっと厳しいなぁ。
合間をぬって家でやるしかないか。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
954 :デフォルトの名無しさん[sage]:2015/03/31(火) 22:18:24.59 ID:Q3Hv60nc
>>952
VB6やVBAにはContinueの概念が無いからね。気持ちは分かる。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
958 :デフォルトの名無しさん[sage]:2015/03/31(火) 22:40:39.16 ID:Q3Hv60nc
>>924
.Netで途中から復活して「負の遺産がまた増えた」と騒がれてたアレでしょ?

.Netの話で悪いけど、厳しいところでは極力フォームの暗黙のインスタンスや標準モジュールは使わないで、
シングルトンパターンのクラスを明示的に作るようにコーディングルールで定めているところもあるよ。

まぁ、そこまで厳密にはVBAではやることないし、多分出来ないけど。
それはObject指向の範囲だから、頭の片隅にでもとどめて置けばいいけど、
別のフォームからコントロールにってのは構造化の範疇だから少なくとも俺はやらないし、
そんなコード引き継ぎで渡されたら絶対ブーたれる。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
960 :デフォルトの名無しさん[sage]:2015/03/31(火) 22:47:53.77 ID:Q3Hv60nc
>>956
>>957
今は全くその通りだと思う。
ただし、スパゲティソースの温床であることも確かだから、
コーディングルールで使うシュチュエーションを制限することが必須になるかな。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
962 :デフォルトの名無しさん[sage]:2015/03/31(火) 22:59:24.26 ID:Q3Hv60nc
>>961
ていうか数行に渡るほどの長さの感数名ってどんなときに必要なの?
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
964 :デフォルトの名無しさん[sage]:2015/03/31(火) 23:06:41.28 ID:Q3Hv60nc
>>963
ああ、文字列数のことね。ごめん、ちょっと考えれば分かることだったな。
Javaとかだと制限見たことないけど、VBAはどうだろう。
取り敢えず、分かり易さ優先だと思うから、そう言った意味で完結に何やってるか分かり易い名前ならいいんじゃないかなぁ。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
968 :デフォルトの名無しさん[sage]:2015/03/31(火) 23:21:41.94 ID:Q3Hv60nc
>>965
同意。よくVB.Netやってる合間にVBAやるとそれで「あ」ってなる。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
969 :デフォルトの名無しさん[sage]:2015/03/31(火) 23:26:14.39 ID:Q3Hv60nc
>>963
再度すまない。関数名じゃなくて関数そのものだったのね。
凄く適当だけど、自分の中では余程特殊な場合を覗いて2画面に表示されるくらい。
その辺規定がある仕事場もあるけど、結構マチマチ。


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