X



ふらっと C#,C♯,C#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 0f9a-KsIq)
垢版 |
2017/11/29(水) 19:23:58.05ID:GNLsbK4F0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/

■コードを貼る場合は↓を使いましょう。
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0003デフォルトの名無しさん (ササクッテロレ Spbd-CjLb)
垢版 |
2017/12/05(火) 12:25:34.83ID:cln+gySGp
今年の夏くらいからプログラミング勉強し始めたけど結局なーんも身についてなくて笑えない
ちょっと応用すれば出来るはずのことも全く同じサンプルがないと何も出来ないし頭の悪い奴ってのはほんとに必要ないなと実感したわ

こんなの身についてるってみんなすげーよ
ほんと尊敬する
0004デフォルトの名無しさん (ブーイモ MM0a-bGuk)
垢版 |
2017/12/05(火) 12:44:40.61ID:WFyLCtnzM
趣味なら続けてればそのうちできるようになるよ
もし仕事にするつもりだったなら今すぐ考え直したほうがいい
向いてない人が業界入っても生涯最底辺確定だよ
0011デフォルトの名無しさん (ササクッテロレ Sp8b-1eZt)
垢版 |
2017/12/07(木) 08:25:05.89ID:AtZ2X5K5p
VS2015を用いてC#でアプリを作っています
現在テストを行う中でスタブを使おうと考えたのですがどういうものかの記述はしてあっても実装の仕方が見つけられないのでどう実装するべきものなのかアドバイスをお願い致します
なにか決まった構文などがありますか?
スレ違いなら申し訳ありません
0013デフォルトの名無しさん (ブーイモ MMbb-/Bld)
垢版 |
2017/12/08(金) 08:21:40.76ID:PpC6VnTrM
>>11
普通に実装するんだよ
たとえばリポジトリクラスをモックするなら、DBの変わりにListやファイルを使うように実装する
Moqみたいなアドホックなモックに頼るのは都合のいい脳内彼女状態になりやすいからお勧めしないな
0016デフォルトの名無しさん (ワッチョイ ff9a-StTJ)
垢版 |
2017/12/08(金) 20:43:50.51ID:0wYNAdO30
>>11
言語以前の問題だから板違いではないがスレ違いだな
「デバッグに何か決まった手順はありますか」って聞くようなもの
そして「使おうと考えた」のではなく「使えと指示された」と邪推
0017デフォルトの名無しさん (ワッチョイ 5723-/Bld)
垢版 |
2017/12/09(土) 09:15:02.44ID:BBiO47QN0
>>14
その賢い利用というのが、テストが正しいかどうかはともかく、
なんでもいいからとにかくテストをパスさせて仕事から逃げることを意味するなら積極的にMoqを使うべきだな
プロダクトの機能に対して責任を持つのか、コーディング作業員として単体テストのレビューが通るところまでの責任なのか
プログラマの立場次第であり、絶対的にどちらが正しいとはいえない
0020デフォルトの名無しさん (ワッチョイ 5723-/Bld)
垢版 |
2017/12/09(土) 11:59:32.42ID:BBiO47QN0
>>19
xunit見てみたけど、内部的な依存関係の差し替えには全く使われてないね
テストツールをテストするという特殊な事情ゆえ、テストには(ユーザーにとっての)テスト対象コードが必要になる
その代わりとして極一部でMoqやNSubstituteが使われてるようだ
賢い使い方の一つだとは思うけど、リポジトリクラスやサービスクラスを差し替えたりするのとは全くの別物と考えるべきかと
0022デフォルトの名無しさん (ブーイモ MMbf-/Bld)
垢版 |
2017/12/09(土) 12:17:46.40ID:awJ9eWLVM
んな大袈裟な
俺は自分の経験(個人・チーム含む)からアドホックなモックは上手くいかないと思ってるけど、
実際に効果的に使われてるケースがあるならぜひ知りたいよ
xUnitのテストなんて超特殊な例じゃなくてもっと適切な例をplz
0024デフォルトの名無しさん (ワッチョイ 97a5-fvxL)
垢版 |
2017/12/11(月) 20:41:46.07ID:f/7OfSkR0
ワイクソ馬鹿
そもそも何のためにスタブとかモックとかがあってどういう時に有用なのか分からない
足りない所を補うみたいなイメージなんだけどプログラムが全部完成してからのテストなら必要ない?
0026デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)
垢版 |
2017/12/11(月) 21:02:58.97ID:xzgxDEt/0
>>24
たとえばあるメソッドをテストするとして、テスト目的の箇所以外の依存関係をモック/スタブで差し替えれば、目的のロジックに集中できるしパフォーマンス的にも有利
0028デフォルトの名無しさん (ブーイモ MMcf-/Bld)
垢版 |
2017/12/11(月) 21:38:59.51ID:Y2G40TozM
>>24
テストしてて、ここ触りたくねえなあデータ用意すんの面倒臭えなあと思うことあるだろ?
正しいかどうかは別にして、とりあえず臭いものに蓋をしたまま手っ取り早くテストを終わったことにして帰宅できる
0037デフォルトの名無しさん (ワッチョイ 97a5-1g/A)
垢版 |
2017/12/12(火) 22:16:10.60ID:TlJgX2b/0
プログラミング始めたてなんだけど、CSVファイルの先頭何行を無視してそれ以外のデータをデータベースに入れたいって状況になったんだけど、経験者の人はめっちゃ簡単だよって言ってて、
でも俺には全く想像もつかなくて、プログラミング出来る人の頭の中はほんとどうなってるんだ…
やっぱみんなもこれくらいのコード書くのは楽勝なの?
0041デフォルトの名無しさん (ワッチョイ 9fd2-LLtl)
垢版 |
2017/12/12(火) 23:21:09.16ID:5Qo60rlq0
いっぺんに全部やろうとするんじゃなくて、小さい作業に分解して考えるんだよ
今回なら「先頭数行を無視してテキストファイル読み込む」にCSVは関係ないでしょ?まず欲しい分だけ読み込んで、CSVとしてパースするのはその後に考えればいい
ググって出てくるくらいまで分解すれば、あとは組み合わせておしまい
0042デフォルトの名無しさん (ワッチョイ ff9a-StTJ)
垢版 |
2017/12/12(火) 23:28:56.01ID:CW11BSat0
>>41
>今回なら「先頭数行を無視してテキストファイル読み込む」
要素内に改行がある場合(めったにないが)を想定しなきゃならないので先にパーサーを通す必要がある
元の要件が「CSVファイルの先頭何行を無視して」だから
0045デフォルトの名無しさん (ワッチョイ 3703-ZqID)
垢版 |
2017/12/13(水) 07:25:32.55ID:Iqcr0fg80
どうせ読み飛ばすんだからどっちでもええやろそんなもんw
0051デフォルトの名無しさん (ワッチョイ 9306-buzn)
垢版 |
2017/12/22(金) 09:55:25.36ID:oR3DRk2W0
会計システムはクラサバが最低限の要件なので、計算はDBでやるからクラス分けなど何の役にも立たないし却って邪魔だ
彼はクラサバと無縁なスタンドアローンの世界に住んでいるのかもしれんね
0052デフォルトの名無しさん (ブーイモ MM27-bebx)
垢版 |
2017/12/22(金) 10:08:25.66ID:2CqGXpCvM
スタンドアロンだとして、どういうデータ設計したら費用項目ごとにクラスができるんだろうね
日付, 費用種別コード, 金額
まさかこんなタプルで管理してるんだろうか
0054デフォルトの名無しさん (ブーイモ MM27-vkjg)
垢版 |
2017/12/22(金) 10:23:52.41ID:lyRs/gAjM
そ、ギョーミーな戦場ではオブジェクト指向などと言う玩具の武器は役に立たない
0056デフォルトの名無しさん (ブーイモ MM27-vkjg)
垢版 |
2017/12/22(金) 10:32:48.81ID:lyRs/gAjM
何をいっておる、LinqもLambdaも戦場の小火器として使えるが腐ったオブジェクト指向など使えぬわ
0058デフォルトの名無しさん (ブーイモ MM27-vkjg)
垢版 |
2017/12/22(金) 10:59:19.90ID:lyRs/gAjM
腐ったオブジェクト指向脳で単純なものを複雑にするヤツが大嫌いなだけ
0061デフォルトの名無しさん (ブーイモ MM27-vkjg)
垢版 |
2017/12/22(金) 11:11:28.05ID:lyRs/gAjM
オブジェクト指向は過去の遺物
0068デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
垢版 |
2017/12/22(金) 19:32:54.21ID:w6Zu6k6M0
ボタンを押すと処理を緊急停止するプログラムを作りたいのですがどのような方法がありますでしょうか?
0070デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
垢版 |
2017/12/22(金) 19:46:47.55ID:w6Zu6k6M0
今はbackgroundWorkerで処理を実行しているのですが
CancelAsync()で停止させても
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
というコードに到達するまで停止しないので停止までに時間があるのを改善したいです
このコードをたくさん差し込むしかないのでしょうか?
0072デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
垢版 |
2017/12/22(金) 19:53:12.14ID:w6Zu6k6M0
どういうことでしょう
あらゆる処理をForm1に書いていまして
killの仕方がわからないです
0073デフォルトの名無しさん (ワッチョイ cf9a-RBuR)
垢版 |
2017/12/22(金) 19:59:46.81ID:Ta4DCaCP0
backgroundWorker以外の処理は生かしておきたいって話なら分からないな
>>70
というかキャンセル用のフラグ作って止めなきゃならないところに停止処理差し込むのがそんな大変だとも思えないけど
楽したいってのはわかるけど、それは他の人に聞いて
0075デフォルトの名無しさん (ワッチョイ ff19-vkjg)
垢版 |
2017/12/22(金) 20:10:01.65ID:HDUqSz1r0
>>68
Application.Exit();
0078デフォルトの名無しさん (ワッチョイ 03c9-buzn)
垢版 |
2017/12/22(金) 20:39:08.36ID:kA+szNzE0
>>77
Unhandledで拾ったは良いものの、例外詳細見たらスタックトレースに他の発生行が無くてその例外行だけだったのよ
どこかでthrowし直してたとしてもその行が表示されるのにな
0080デフォルトの名無しさん (アウアウエー Sadf-HQem)
垢版 |
2017/12/22(金) 20:47:43.11ID:G9MI+OvKa
>>70
なんか先週ぐらいも同じ質問してた人がいたけどw

だからさあ、メソッドを外から強制的に止めようって発想が間違ってる。
メソッド自身が何かをポーリングして自分で止まるように作る
0081デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
垢版 |
2017/12/22(金) 21:17:12.68ID:w6Zu6k6M0
>>80
それ自分です!
0087デフォルトの名無しさん (ワッチョイ 6f76-5z/u)
垢版 |
2017/12/22(金) 22:41:34.49ID:Iyc/J/sJ0
BackgroundWorkerはレガシー
0088デフォルトの名無しさん (ワッチョイ 138d-6js8)
垢版 |
2017/12/22(金) 23:26:00.99ID:vOV0CWVO0
>>81
ここで2回も聞くぐらいなら
やりたいことを英語にしてGoogleで検索した方がいいよ
ここにいる人が知らないか教えないだけで
やり方はちゃんとある
ポーリングとか今どきダサすぎるからやめとけ
0095デフォルトの名無しさん (ワッチョイ cf80-fDvV)
垢版 |
2017/12/23(土) 08:12:59.96ID:FPRjmoIB0
>>70
Async が付いている関数は、非同期処理だから、コンテキストが異なる。
だから、処理が実行される順番が確定しない

Sync なら同期処理だから、順番が1つに決まる。
つまり、ソースコードの上から下へ、順に実行される

コンテキストが異なるもの同士が通信するには、プロセス間通信(IPC)を使う。
基本的には、相手のキューに、投入することしかできない

1. 依頼する。A プロセス → OS → B プロセス
2. B が届いたメッセージを処理する
3. 返事する。B プロセス → OS → A プロセス

これを同期処理にすると、1〜3 の処理中、
アプリが止まる(ストール)から、GUI では嫌われる。
50ms 以上掛かる処理は、非同期処理にすべき

逆に、CUI では同期処理にして、コンソールが止まる
0097デフォルトの名無しさん (ワッチョイ 2323-bebx)
垢版 |
2017/12/23(土) 08:23:33.88ID:ti8BrBts0
句読点箇条君はすぐわかるな
そして必ず間違ってる
スレッドが違うだけならIPCなんか使う必要ない
普通は単にメモリを共有する
FormsのBeginInvokeなどで使われているSynchronizationContextのキューも普通にメモリを共有してるだけだ
009895 (ワッチョイ cf80-fDvV)
垢版 |
2017/12/23(土) 08:24:22.31ID:FPRjmoIB0
つまり、1〜3 は、OS が行っている事だから、何もできる事が無い。
OS レスのマイコンとかなら、自分でプログラミングするけど

何かをしようとしても、OS がCPU のタイムスライス、
プロセスの優先度・実行順番を決めているから、何もできない

それがOS。
OSレスなら、それらを自分でプログラミングしないといけないから、無理
0099デフォルトの名無しさん (ワッチョイ 2323-bebx)
垢版 |
2017/12/23(土) 08:45:11.75ID:ti8BrBts0
このアスペは>>97も理解してないんだと思うけど、初心者スレだから改めて否定しておく
スレッドが違うだけなら、>>95の123は正しくはこう
1. スレッドAがジョブの情報Jをメモリ上のキューQに登録する
2. スレッドBはQからJを取り出し、Jの内容に従って処理を実行する
3. Bは処理結果RをキューQ'に登録する
4. AはQ'からRを取り出し、後続処理を実行する
AとBの間で普通にQやQ'を直接共有してるだけで、OSなんか全く関係ない
そもそもマルチスレッドに限った話でもなく、例えば、ゲーム内で2つのキャラクターの間でやり取りしたい、
でも直接メソッドを呼ぶと長くなるとか、間にウェイトを入れたいとかで一旦処理をゲームループに戻したい、なんて時にも使える
0100デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)
垢版 |
2017/12/23(土) 10:27:32.58ID:AW7swrGi0
オレオレキューなんぞつかわずにTaskを使え
バックグラウンドといえどインプロセスで長大な処理を発生させるな
そういうのはジョブ管理サービスを使えHangfireとかな
■ このスレッドは過去ログ倉庫に格納されています

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