X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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/
0750デフォルトの名無しさん
垢版 |
2018/09/22(土) 22:47:11.36ID:RLMh0rIO
テストとかまじ手間とるだけの時間稼ぎでしかない
0751デフォルトの名無しさん
垢版 |
2018/09/23(日) 00:24:52.61ID:cRG95Xcq
歴史あるmfcのウンコドキュメントビューアーキテクチャと
なにが違うの?
0752デフォルトの名無しさん
垢版 |
2018/09/23(日) 00:34:17.81ID:y+eZw7HP
そもそもこれでもかってぐらいこびりついてるのになぜ切り離そうとするのか?

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

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

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

支持する奴の気がしれん
0759デフォルトの名無しさん
垢版 |
2018/09/23(日) 02:46:47.55ID:Dc9ARAgR
MVCは近代的な開発環境を使っていれば自然と守られるから学習する必要ないよ
CにMを書いちゃうとか変なことをしない限り大丈夫だよ
対するMVVMは難しいね、かなり練習しないとただ3層に分けただけの偽MVVMになってしまう
0761デフォルトの名無しさん
垢版 |
2018/09/23(日) 07:17:03.92ID:J2MRrpUo
C#とあわせてDB勉強するならどれがいいですか?
やっぱり同じMS製のSQL Serverですか?
0762デフォルトの名無しさん
垢版 |
2018/09/23(日) 08:01:38.54ID:dcxIZpfd
>>761
どうせ Visual Studio 使うんだろ?
ならSQL Server LocalDB使うのがインストールも簡単だしVisual Studioから基本的な操作ができるから楽だよ
0769デフォルトの名無しさん
垢版 |
2018/09/23(日) 14:07:53.59ID:jYUPCkq4
mvvmは状態がわからないと言うか再現できないことが多くて
従来型のmvvmはwebのあたりでは捨てられ始めてる
0771デフォルトの名無しさん
垢版 |
2018/09/23(日) 14:10:05.59ID:MTMF1/K8
DIコンテナ使い出すとwpf+mvvmから抜け出せなくなるな
もしかするとDIコンテナ知らずにmvvm批判しているんだろうか?
0775デフォルトの名無しさん
垢版 |
2018/09/23(日) 14:21:15.43ID:9e4CRvDY
>>771
DIは関係なくね?
DIは特定のアプリケーションフレームワークに依存したものじゃない
コンソールでもFormsでも使えるよ
0777デフォルトの名無しさん
垢版 |
2018/09/23(日) 14:23:04.60ID:jYUPCkq4
アジャイルを知ったらもう他にはもどれない
TDDじゃない開発はIT土方だ

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

中小規模ならmvvmはまだ使えるが大規模になると使えない
状態を追いきれない
0779デフォルトの名無しさん
垢版 |
2018/09/23(日) 14:31:36.73ID:jYUPCkq4
FBによるとmvvmでは大規模になると値が変わった場合どこでどうしたからその値が変わったのか説明できない
元をたどれないことが多くてバグをつぶしたと思ったら同じバグがまた出ることに悩まされていた
簡単にどこででも状態をいじれることが間違っていたと判断した
0781デフォルトの名無しさん
垢版 |
2018/09/23(日) 15:30:30.23ID:8zSZzIZI
MVVMってV-VM-Mなの?
0784デフォルトの名無しさん
垢版 |
2018/09/23(日) 16:53:04.68ID:9e4CRvDY
ViewをViewModelの影に徹させて管理すべき状態数を明確化、最小化しようってアイデアがMVVMの基本
なのでその明確化、最小化された状態数すら追いきれないというならMVVMをやめた途端に余計に追いきれなくなるだけだ
0787デフォルトの名無しさん
垢版 |
2018/09/23(日) 18:12:28.13ID:rcV006B3
>>761
MSに生涯の忠誠を誓うんならSQL Serverでいいけど、そうでないならPostgresかMySQLがいいよ
SQL Serverって癖が強くて性能も低くてVSやWinとの相性を除けば正直ク○
0792デフォルトの名無しさん
垢版 |
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に浸かってる
0796デフォルトの名無しさん
垢版 |
2018/09/23(日) 20:54:23.90ID:z3WNOmb5
ないね
何でもそうだけどあるがまま理解するのが結局早い
たとえ話は理解の助けにならん

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

この部分はDBMSでいえばプリペアドステートメントに
パラメータをバインドする操作と似ているとは思った
0804デフォルトの名無しさん
垢版 |
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に提供してるだけのようにしかオレには見えんかったわ

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

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

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

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

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

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

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

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

全てにおいてトンチンカン
0826デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:21:07.52ID:iTzVBLdT
>>820
普通この辺りってネットで調べたら一番に出てくるのに、なんで糞コード量産されちゃうんだろう・・・
0827デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:26:35.15ID:SrcYdwzB
>>826
調べないから。
基本他人のコードをコピーして今回の要件を満たすように
書き換える仕事。意味がわからないところとか
通らないロジックがあっても気にしない
0828デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:46:02.74ID:ySiXDenR
>>825
リファクタリングなんての持ちだして初心者を混乱させるガイジが多くて困るよ
0829デフォルトの名無しさん
垢版 |
2018/09/24(月) 10:49:53.69ID:TmR9qzOH
そういや、VSCodeのswitch文の変な整形って何時になったら直るんかねえ?
0830デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:10:08.31ID:L/eVK/99
else句を多く使うのは三流PG
一流のPGは極力else句を避けるものだ
else if なんてのは論外だ
returnせよ!
0831デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:21:43.89ID:OxVBaH7R
>>823
競合他者「難しくメンテ出来ません(´;ω;`)納期間に合いません(´;ω;`)」
お客人「使えねえな。おまえんとこはもう二度と使わん(´;ω;`)」
0832デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:23:43.58ID:OxVBaH7R
>>824
開発、テスト、デバッグ、仕様変更対応をしやすくするためにやるんだとさ
確かに楽に安く高品質になるんだけど、ビジネス的にはコスト増やして請求も増やすほうが儲かるのにもったいないよね
0833デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:33:19.66ID:VSctwqS/
「ガイジ」なんて汚い言葉を平気で使える奴って自分で自分がどんな人間か
語るに落ちてることも気づかないんだろうな
0835デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:42:43.02ID:A8fPcUdc
キミたちc#で何作ってるの?
俺はFormアプリしか作ってない
Webアプリはrubyかphpで構築
Formアプリなんかクッソ時代遅れ感あるけど
0836デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:49:48.03ID:zTc6LZBq
ガイジを連呼する差別主義者は自分が社会の最底辺だと気がついてないんだろうな

リアルな社会でもガイジ連呼して白い目でみられればいい
0837デフォルトの名無しさん
垢版 |
2018/09/24(月) 11:53:59.68ID:sWz4zxrJ
>>811
完成までの間にいつもやってる。
とりあえず適当に動くモノを作ってみる → 自分の担当部分を見直して整理する
最初に動くモノが出来るまでが貰った期間の 1/4 〜 1/3 くらいの時点、あとは時間が許す限り(組み直して遊んでる)。

やってるうちに最初から(自分なりに)組み直しする必要のないコードが書けるようになってく。
でもそのときは自分の技量が上がってるから別のやり方を試したくなるので堂々巡り。

受け入れる側とすればコードのわかりやすさとか以前に試験しろよと思う。
なんでこっちがバグ出ししてやらなきゃならねーんだよ、と。
0838デフォルトの名無しさん
垢版 |
2018/09/24(月) 13:46:58.45ID:nocx8ro5
>>832
高品質って?
何を基準に?
同じ金使って次の改修が見えてから動いたほうが遥かに品質高くない?
0839デフォルトの名無しさん
垢版 |
2018/09/24(月) 13:57:10.32ID:OxVBaH7R
>>838
メトリクス計測すればコードの品質は一目瞭然だけどそういうことじゃなくて?
何を言いたいの?
0843デフォルトの名無しさん
垢版 |
2018/09/24(月) 14:26:57.52ID:7nAgeebM
複数の戻り値ほしいとき、タプルを使うべきか、refつけてメソッド内で対応しちゃうか皆さんどうしてます?
0846デフォルトの名無しさん
垢版 |
2018/09/24(月) 15:30:13.77ID:DNs+Nta1
>>831
世知辛い世の中だな
俺なんてまとまった処理毎にコメントまで入れてんのに
やむを得ずダラダラ書くことになる時はリージョンで畳んだりとかもしてるのに
0847デフォルトの名無しさん
垢版 |
2018/09/24(月) 15:34:39.00ID:DNs+Nta1
>>843
タプルはイミュータブルなのがな・・・
クラス内ならプライベートクラスや無名クラスでやっちゃうかな
0848デフォルトの名無しさん
垢版 |
2018/09/24(月) 16:27:41.20ID:EJ4GFkIW
イミュータブルのほうが良くない?
なんでc#は引数をfinalできないのか不思議なんだけど理由あるの?
0850デフォルトの名無しさん
垢版 |
2018/09/24(月) 19:10:00.11ID:p57JLdmZ
クリックした点から点まで連続線を引いてダブルクリックで連続線を終える。
これって難しいですか?参考サイトとかありませんか?
■ このスレッドは過去ログ倉庫に格納されています

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