ふらっと C#,C♯,C#(初心者用) Part139

■ このスレッドは過去ログ倉庫に格納されています
2018/08/05(日) 19:55:44.50ID:tZmoj8I+
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part138
https://mevius.5ch.net/test/read.cgi/tech/1528194762/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
2018/09/22(土) 16:52:49.31ID:KZSla2NN
>>732
MVVMならあるでしょ
2018/09/22(土) 18:09:02.28ID:ZTe9HnQE
tabControlのページをクリック以外の方法で切り替えることはできますか?
変数を立ててswitch文でプロパティ替えればできると思ってたけど
tabpageプロパティは読み取り専用で設定できないのね
2018/09/22(土) 18:12:36.64ID:sUJsyE8y
WinFormの話ならSelectedIndexで変更する
2018/09/22(土) 18:42:13.59ID:ZTe9HnQE
>>736
できました!
プロパティウインドに表示されないプロパティもあるんですね
インテリセンスの候補には出てくるけど見落としてました
ありがとうございました
2018/09/22(土) 18:43:46.71ID:Anxq9bjC
>>732
MVCとかしゃらくせえんだよ。
全部フォームモジュールに書けばいいの。
2018/09/22(土) 19:01:14.84ID:kFAOP0FY
MVCでググって出てくる

https://nekogata.hatenablog.com/entry/2013/11/11/075234
https://qiita.com/tshinsay/items/5b1724baf32b8b5113c2

この辺読んでもMVCの利点も必要性もさっぱり分からん、というのが正直な感想
2018/09/22(土) 19:08:01.99ID:yVyqSbVQ
>>739
君の作ったAPに undo とredo の機能を追加してはくれまいか?

多分それが、Cの設計のきっかけになるかと
741デフォルトの名無しさん
垢版 |
2018/09/22(土) 19:29:21.32ID:T1K71jdo
ならんわw
2018/09/22(土) 19:35:14.05ID:7nPJqZuh
なるわw
2018/09/22(土) 19:42:15.62ID:kFAOP0FY
undo、redoって普通にモデルの仕事でしょうw

モデルのクラスのコードをいじれない、とかの事情で別のクラスを使って機能を拡張するとしても、
それをコントローラと呼ぶのは違うんじゃないの?
2018/09/22(土) 19:49:11.04ID:dBgPOLrx
>>739
WebMVCじゃない本来のMVCにおけるCって、昔のSmallTalkのGUIフレームワークではWndProcみたいなことをする役割を担う層が必要で、それをコントローラと呼んでただけ
特定のフレームワークの技術的な制約のために必要だったもので、イベントハンドラでイベントを直接メソッドにディスパッチできるC#においては全く必要ないよ
2018/09/22(土) 20:08:09.03ID:/LVptLz+
class MyForm : IMyView {
private ISomeService ss;
public MyForm(ISomeService ss) {
this.ss = ss;
}

private async void OnXxx(...) {
var p = GetSsParam();
var r = await ss.ExecAsync(p);
HandleSsResult(r);
}

もしかしてssのことをコントローラーと言いたいのではないか?
2018/09/22(土) 20:27:21.25ID:A7i/kFyi
>>739
mvcわからんくてもビューとロジックは分離しないとまずいってのはわかるでしょ
そのやり方の一つがmvc
2018/09/22(土) 21:53:59.90ID:BD/9qPVn
ジャパニーズドカタはテスト書かないから分からないよw
748デフォルトの名無しさん
垢版 |
2018/09/22(土) 22:03:55.13ID:T1K71jdo
初心者がゆうなw
2018/09/22(土) 22:42:44.85ID:Dlzi4J2e
つーか、画面は作り捨て上等

一昔前に流行った画面構成なんて臭くって使えない
750デフォルトの名無しさん
垢版 |
2018/09/22(土) 22:47:11.36ID:RLMh0rIO
テストとかまじ手間とるだけの時間稼ぎでしかない
751デフォルトの名無しさん
垢版 |
2018/09/23(日) 00:24:52.61ID:cRG95Xcq
歴史あるmfcのウンコドキュメントビューアーキテクチャと
なにが違うの?
2018/09/23(日) 00:34:17.81ID:y+eZw7HP
そもそもこれでもかってぐらいこびりついてるのになぜ切り離そうとするのか?

画面アプリとサーバー側で分けて画面アプリは作り直せよ
2018/09/23(日) 00:39:38.45ID:sUwtRH+p
初心者なんだから難しいこと考えるなよバカどもw
754デフォルトの名無しさん
垢版 |
2018/09/23(日) 00:47:36.99ID:cRG95Xcq
一時期strutsとかいうインチキくさいフレームワークがほんのりはやったが
いまはもう見る影もない
2018/09/23(日) 01:21:59.82ID:TQN/0jmK
どこの記事だか忘れたけどMVCに関して昔読んだので一つだけ説得力を感じたのは、
古いタイプのインストーラーみたいにウィザード形式のUIの画面遷移のためにはCが必要って内容

そこは確かに一理あると思った
ウィザード形式なんてそうそうあるUIとも思えんが
756デフォルトの名無しさん
垢版 |
2018/09/23(日) 01:33:34.95ID:0vXeudiz
いらんわw
2018/09/23(日) 02:07:34.36ID:jzOYIT9S
MVVMは慣れてきたらものすごく開発が楽だけどな
2018/09/23(日) 02:35:37.21ID:taBrfSf/
>>757
それも「行きはよいよい帰りは怖い」だけどね

書いてる時はいいんだよ。
問題は後で見た時に、あるいは他人のコード見た時に
何やってるのか理解するのに無茶苦茶時間が掛かること

支持する奴の気がしれん
759デフォルトの名無しさん
垢版 |
2018/09/23(日) 02:46:47.55ID:Dc9ARAgR
MVCは近代的な開発環境を使っていれば自然と守られるから学習する必要ないよ
CにMを書いちゃうとか変なことをしない限り大丈夫だよ
対するMVVMは難しいね、かなり練習しないとただ3層に分けただけの偽MVVMになってしまう
2018/09/23(日) 04:46:55.14ID:cjexH34A
>>755
「司令」とかはデフォだよ
2018/09/23(日) 07:17:03.92ID:J2MRrpUo
C#とあわせてDB勉強するならどれがいいですか?
やっぱり同じMS製のSQL Serverですか?
2018/09/23(日) 08:01:38.54ID:dcxIZpfd
>>761
どうせ Visual Studio 使うんだろ?
ならSQL Server LocalDB使うのがインストールも簡単だしVisual Studioから基本的な操作ができるから楽だよ
2018/09/23(日) 08:45:18.24ID:9e4CRvDY
>>758
実際にはめちゃくちゃわかりやすいけどな
2018/09/23(日) 09:48:29.79ID:y+eZw7HP
>>763
お前が資料に嘘書くから無理
2018/09/23(日) 12:43:01.55ID:/KN8+x6x
>>758
今時mvvmアンチとか新しいな
対案は?
2018/09/23(日) 12:47:19.91ID:pXi93aAm
フォームベタ書きが一番
2018/09/23(日) 13:03:56.91ID:w4aHsEmW
MVVM否定する奴とかネタだよな
2018/09/23(日) 13:17:56.73ID:4UDG5/fM
フォームクラスに全てを書く。これ最強。
2018/09/23(日) 14:07:53.59ID:jYUPCkq4
mvvmは状態がわからないと言うか再現できないことが多くて
従来型のmvvmはwebのあたりでは捨てられ始めてる
2018/09/23(日) 14:09:21.60ID:y+eZw7HP
>>767
逆に明確なメリットが無いよね?
2018/09/23(日) 14:10:05.59ID:MTMF1/K8
DIコンテナ使い出すとwpf+mvvmから抜け出せなくなるな
もしかするとDIコンテナ知らずにmvvm批判しているんだろうか?
2018/09/23(日) 14:18:11.03ID:9e4CRvDY
>>769
再現ってVMのプロパティセットするだけだが?
2018/09/23(日) 14:20:21.01ID:jYUPCkq4
React & Fluxを使いだすとmvvmはもう戻れないと言ってるやつと同じレベルだな
2018/09/23(日) 14:21:04.98ID:jYUPCkq4
>>772
そこがお前の限界
2018/09/23(日) 14:21:15.43ID:9e4CRvDY
>>771
DIは関係なくね?
DIは特定のアプリケーションフレームワークに依存したものじゃない
コンソールでもFormsでも使えるよ
2018/09/23(日) 14:21:33.58ID:9e4CRvDY
>>774
ブーメラン
2018/09/23(日) 14:23:04.60ID:jYUPCkq4
アジャイルを知ったらもう他にはもどれない
TDDじゃない開発はIT土方だ

などとくだらないことをいうバカ信者は死ねばいい
2018/09/23(日) 14:26:57.57ID:jYUPCkq4
FBは一時期mvvmに傾倒してたけど大規模になってくるとなぜだか思ったように動かないことが多くなって
mvvm自体に弱点があることに気付いた
そしてmvvmを捨てることにした

中小規模ならmvvmはまだ使えるが大規模になると使えない
状態を追いきれない
2018/09/23(日) 14:31:36.73ID:jYUPCkq4
FBによるとmvvmでは大規模になると値が変わった場合どこでどうしたからその値が変わったのか説明できない
元をたどれないことが多くてバグをつぶしたと思ったら同じバグがまた出ることに悩まされていた
簡単にどこででも状態をいじれることが間違っていたと判断した
2018/09/23(日) 14:38:33.91ID:q1Vd+N6m
真っ赤なスレ違い
781デフォルトの名無しさん
垢版 |
2018/09/23(日) 15:30:30.23ID:8zSZzIZI
MVVMってV-VM-Mなの?
2018/09/23(日) 16:33:57.42ID:qwzkV0Ze
MVCを知りたいという初心者に
MVVMの有能さを洗脳するスレなのか
2018/09/23(日) 16:45:09.37ID:sUwtRH+p
デザパタ語りたがり初心者が湧いてるのか
ママにでも教えてやれ
2018/09/23(日) 16:53:04.68ID:9e4CRvDY
ViewをViewModelの影に徹させて管理すべき状態数を明確化、最小化しようってアイデアがMVVMの基本
なのでその明確化、最小化された状態数すら追いきれないというならMVVMをやめた途端に余計に追いきれなくなるだけだ
2018/09/23(日) 17:03:54.35ID:jYUPCkq4
それがお前の限界だよ
2018/09/23(日) 17:45:23.67ID:iWYV1BwG
ID:9e4CRvDY
ID:jYUPCkq4
恥ずかしいやつら
2018/09/23(日) 18:12:28.13ID:rcV006B3
>>761
MSに生涯の忠誠を誓うんならSQL Serverでいいけど、そうでないならPostgresかMySQLがいいよ
SQL Serverって癖が強くて性能も低くてVSやWinとの相性を除けば正直ク○
2018/09/23(日) 18:15:05.38ID:JZ2tjL8B
>>786
ガイジを列挙するな
2018/09/23(日) 18:58:36.13ID:z3WNOmb5
>>783
デザパタじゃないからw
2018/09/23(日) 19:02:57.05ID:qwzkV0Ze
元質問は739じゃ無いのか?
2018/09/23(日) 19:24:28.10ID:JZ2tjL8B
人間初心者スレとはたまげたな
792デフォルトの名無しさん
垢版 |
2018/09/23(日) 19:31:52.04ID:cRG95Xcq
いま、SQLiteのテーブルを編集するおもちゃを
CLRのwindowsフォームでC#でなく、あえてC++で作って遊んでみてる
書いてることはC#と当然ほぼ同じになる

SQLiteをODBC経由でアクセスするだけで
DataGridViewで簡単にDBの編集ができることが分かった
ただし、MSが提供してるコンポーネントを適切に使用する必要がある

DataAdapterでDataSetとって
DataSetからDataTableとって、そのDataTableをDataGridViewのDataSourceに設定する
※ どうやらSQLiteでは1つのテーブルのデータセットしかとれない模様
※ DataSetという意味ではこのDataSetは超無意味

で、DBの種類とか関係なく
C#で用意されてるコンポーネント経由でデータがとれるようにしないと
作るのが極端にめんどい

なにがいいたいかといえば
C#のおもちゃ部品使ってるくせに
MSがどうこういってることが的外れ

C#とMSのコンポーネント使ってる時点で、
どっぷりMSに浸かってる
2018/09/23(日) 19:46:25.43ID:qwzkV0Ze
>>791
平伏せよ
2018/09/23(日) 20:18:59.85ID:kzypxn8Z
>>784
正解
>>785
馬鹿乙
2018/09/23(日) 20:29:06.67ID:eq3kKmf9
MVVMを現実のものに例えるとどうなりますか?
2018/09/23(日) 20:54:23.90ID:z3WNOmb5
ないね
何でもそうだけどあるがまま理解するのが結局早い
たとえ話は理解の助けにならん

あえて言えばVMがMをVの都合に合わせる装置として機能する、って考えればトランスとか
でもトランスは一方通行だし、そもそもトランスが何か分かる奴も少ないよなw
2018/09/23(日) 20:55:30.10ID:z3WNOmb5
でも理解しなくていいと思うw
全然普及してないし、私見だけどMVVMなんて複雑な問題をより複雑な別の問題に置き換えるだけw
2018/09/23(日) 21:22:07.50ID:H5quPExp
話し変わるけどちょっと聞きたいのだが
コミット前に全ソースコードをバッチ処理でフォーマットしたいのだが良いツール知らん?
Visual Studioでフォーマットできるけど、修正したいファイルを1こ1こ開いてフォーマットを実行しなきゃならんから、ちょっとしんどい
Visual Studioに依存せずにコマンドラインから使えることが必須条件
799デフォルトの名無しさん
垢版 |
2018/09/23(日) 21:40:31.39ID:cRG95Xcq
MVVMとかぜんぜん知らんが
DBMSでいえば、
ModelがテーブルでViewModelがビューテーブル程度のしょうもないもんにしか
パッと見た感じで、見えんかったわ
で、Viewがビューテーブルをひたすら参照
2018/09/23(日) 21:47:30.18ID:qG17FGT6
>>799
全然あってなくて困るレベル
2018/09/23(日) 21:52:07.09ID:qG17FGT6
>>794
それがお前の限界だ

FBがMVCやMVVM捨てた理由とその後どうしたかを調べてから言え
802デフォルトの名無しさん
垢版 |
2018/09/23(日) 21:56:27.70ID:cRG95Xcq
そうかそれは残念だ
ViewModelのbindなんかすでに決まった手続きのパラメータマッピングしてるだけのように
しかみえないしな

この部分はDBMSでいえばプリペアドステートメントに
パラメータをバインドする操作と似ているとは思った
2018/09/23(日) 21:59:51.53ID:gaT7ABZW
>>801
今ここでおしえて
804デフォルトの名無しさん
垢版 |
2018/09/23(日) 22:08:25.29ID:cRG95Xcq
MVC

 View ←(Update)← Controller ←(Notify)← Model
 View →(User action)→ Controller →(Update)→ Model

    カサカサ
三 三 /\彡⌒ ミ/\
三 三 /\(´・ω・`)/\

 View ← ViewModel ←(Notify)← Model
 View →(Bind)→ ViewModel →(Update)→ Model

ViewModel から View に一切作用しようとしない
ViewはViewModelにインターフェースの提供のみ

大雑把には
ModelのデータをViewが参照できるデータになるように
ViewModelがマッピングや加工して取ったり設定したりするインターフェースを
Viewに提供してるだけのようにしかオレには見えんかったわ

マジで
2018/09/23(日) 22:15:42.60ID:bzyPZ4ls
>>798
整形できるツールはVisualstudioかVSCodeくらいしかないんだろう?
UWSCのような自動化ツール使うこと考えるのが一番早いんじゃないの
これ以上はVisualStudioかVSCodeのスレで聞いた方がいいかと
2018/09/23(日) 22:17:55.81ID:H5quPExp
>>805
レスありがとう
でも自己解決したからもういいや
807デフォルトの名無しさん
垢版 |
2018/09/23(日) 22:36:00.38ID:cRG95Xcq
CLRのオブジェクトにPropertyGridというのがあるが
いま丁度それでDBMSの値を更新するおもちゃ作ろうとしてる

なんとなくコレに似てるのかなあとは思う

設定取得のプロパティーインターフェースをもったインスタンスを渡すだけで
そのインスタンスのインターフェース使って
プロパティー設定の画面インターフェースがPropertyGridに勝手にできあがってしまう

すげえと思ったが、なんとなくうさんくさい

どういう仕組みになってるのかはぜんぜん分からないが
そのデータの設定取得の仕方は実装する側でなんとでもできるのは分かる
2018/09/23(日) 23:00:05.22ID:5OkVsLkb
>>806
あのねえ
どうやって解決したか書くのが礼儀ってもんだろ
809デフォルトの名無しさん
垢版 |
2018/09/23(日) 23:21:53.73ID:cRG95Xcq
きっとなちょろっと試しに検索したら↓コレが一発であったとしか考えられない
https://github.com/dotnet/codeformatter

ホントな質問するヤツも回答するヤツも無能揃いといっていい
回答するヤツもググレカスとすらいわないからな

回答するヤツも最初から回答できるレベルじゃない
むしろ回答しないほうがマシなレベルといっていい
2018/09/24(月) 00:01:35.94ID:OxVBaH7R
>>809
ん〜それも検討したけどVS/VSCodeの手動フォーマッティングと設定共有できないっぽいから見送った

>>808
とくにひねりもなくOmniSharpとビルドスクリプトを使うことにしたよ
2018/09/24(月) 09:28:32.62ID:yFnU/yKn
リファクタリングってやってる?
いつも気付くと似たような処理や非効率な処理が増えてて辛い……
凄腕のマなら最初から効率的なコード書けるんだろうけどさ……
2018/09/24(月) 09:35:05.11ID:/23hZmm4
動いているコードに手をつけるリファクタリングは最悪。
2018/09/24(月) 09:38:03.20ID:yFnU/yKn
でもでもっ!
ちょっと弄るだけで処理が効率よくなり、コードがリーダブルになり、exe(dll)のサイズも小さくなりますよ?
テスト前ならいいよね?
2018/09/24(月) 09:39:36.03ID:sPlVwsRd
>>811
世界的に有名な凄腕ですら最初から完璧は無理だからリファクタリングしろと口を揃えて言っている
程度が低いプログラマほどリファクタリングをしない
815デフォルトの名無しさん
垢版 |
2018/09/24(月) 09:43:14.50ID:UOx+eYoH
>>813
だめや、くだらん時間つこてないでテストせえ
816デフォルトの名無しさん
垢版 |
2018/09/24(月) 09:46:42.21ID:ySiXDenR
>>814
実は有名な凄腕はリファクタリングなんかしていない。
あとから出てくる有能なやつをつぶす目的でリファクタリングなるものを生み出した。
817デフォルトの名無しさん
垢版 |
2018/09/24(月) 09:48:31.14ID:osKypOlL
>>811
私は時々やりますけどね
新しいネタ仕入れたときとか試してみたり
普段あまり先を考えずに逐次的な処理を思いつきで描くので
冗長になりがちだし
数年自分で使ってみると不必要な機能や処理が見えてきて
そいつをそぎ落としたりする
2018/09/24(月) 09:55:37.87ID:OxVBaH7R
業務系はメンテを他社がやることが多い
なので競争相手の負担になるようにリファクタリングしていない汚いコードを納品したほうが資本主義的に正しい
819デフォルトの名無しさん
垢版 |
2018/09/24(月) 09:59:35.91ID:KDQ780rJ
マ板でやれ
2018/09/24(月) 10:01:45.14ID:KHvr4x1U
クローンコードは……無能の証……
細かく……機能毎に……クラス化……メソッド化せよ……
有能なマなら……30行程度までの……小さなメソッドが……いくつもできる……
当然……役割で機能クラス化し……マジックナンバーも使わない……
無能は……1クラスにメソッドを詰め込み……メソッドも100行を超えることがある……
クローンコードだらけで……おまけにマジックナンバーがあり……保守性が……非常に悪い……
821デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:01:45.99ID:osKypOlL
ここは初心者スレ
822デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:03:47.23ID:ySiXDenR
初心者相手だからこそ善導せねばならない。
リファクタリングとやらにうつつを抜かす暇があるなら目前のコードを正しく読む力を会得するべきである。
2018/09/24(月) 10:04:15.61ID:KHvr4x1U
>>818
競合他社「ぷげらっwwwあの会社のマはこんなコードしか書けねぇ無能っすよ?www」
お客人「マジかよwww次からお前んとこにするわwww」
2018/09/24(月) 10:09:35.45ID:RUArc1Op
そもそも何を目的としてリファクタリングなんてするわけ?
次の開発は来ないかも知れないじゃない?
また、次の開発を目的とするなら仕様がわかってから手を出せばいい

全てにおいてトンチンカン
2018/09/24(月) 10:20:00.26ID:rB4zdy0A
伸びてるときはガイジしかいないな
2018/09/24(月) 10:21:07.52ID:iTzVBLdT
>>820
普通この辺りってネットで調べたら一番に出てくるのに、なんで糞コード量産されちゃうんだろう・・・
827デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:26:35.15ID:SrcYdwzB
>>826
調べないから。
基本他人のコードをコピーして今回の要件を満たすように
書き換える仕事。意味がわからないところとか
通らないロジックがあっても気にしない
828デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:46:02.74ID:ySiXDenR
>>825
リファクタリングなんての持ちだして初心者を混乱させるガイジが多くて困るよ
829デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:49:53.69ID:TmR9qzOH
そういや、VSCodeのswitch文の変な整形って何時になったら直るんかねえ?
2018/09/24(月) 11:10:08.31ID:L/eVK/99
else句を多く使うのは三流PG
一流のPGは極力else句を避けるものだ
else if なんてのは論外だ
returnせよ!
2018/09/24(月) 11:21:43.89ID:OxVBaH7R
>>823
競合他者「難しくメンテ出来ません(´;ω;`)納期間に合いません(´;ω;`)」
お客人「使えねえな。おまえんとこはもう二度と使わん(´;ω;`)」
2018/09/24(月) 11:23:43.58ID:OxVBaH7R
>>824
開発、テスト、デバッグ、仕様変更対応をしやすくするためにやるんだとさ
確かに楽に安く高品質になるんだけど、ビジネス的にはコスト増やして請求も増やすほうが儲かるのにもったいないよね
2018/09/24(月) 11:33:19.66ID:VSctwqS/
「ガイジ」なんて汚い言葉を平気で使える奴って自分で自分がどんな人間か
語るに落ちてることも気づかないんだろうな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況