!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
http://mevius.5ch.net/test/read.cgi/tech/1608085775/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part150
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 2b02-+i0H)
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0327デフォルトの名無しさん (ワッチョイ 9fe4-2EJ2)
2021/04/20(火) 23:17:25.34ID:+w5LC8La0 初歩的な質問ですいません
オブジェクト初期化子とコンストラクタは何が違うんでしょうか?
やってることは同じのように感じるのですが…
オブジェクト初期化子とコンストラクタは何が違うんでしょうか?
やってることは同じのように感じるのですが…
328デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/21(水) 01:35:22.73ID:qZ+z+JK20329デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/21(水) 01:38:27.35ID:GnM/pYwY0 どいつもこいつもデリケートデリケートってよお!
330デフォルトの名無しさん (ワッチョイ 97b5-Ct9k)
2021/04/21(水) 02:00:12.49ID:9Dxtj7zY0 ♪シーズソーデリケート(デリケート、デリケート)
331デフォルトの名無しさん (ワッチョイ b768-tdH6)
2021/04/21(水) 05:50:25.83ID:iaWKhvh90332デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/21(水) 09:15:40.20ID:hAG7zCyL0 >>327
コンストラクタにはそのオブェクトを生成するために必要なものを渡してる
初期化子は特に生成には関係ないない項目にも初期値を設定してるイメージ
使う側はあまり気にしなくていいけど用意する側は意識しといた方がいいよ
コンストラクタにはそのオブェクトを生成するために必要なものを渡してる
初期化子は特に生成には関係ないない項目にも初期値を設定してるイメージ
使う側はあまり気にしなくていいけど用意する側は意識しといた方がいいよ
333デフォルトの名無しさん (スッップ Sdbf-QJa2)
2021/04/21(水) 09:18:16.78ID:zaNQ2p2Bd >>327
初期化子はフィールド単体に対しての初期化で、コンストラクタはクラス全体に対しての初期化って考えたらイメージしやすいかも
まあ、初期化子を指定しない場合でも、def aultで初期化されるんだけどね
初期化子はフィールド単体に対しての初期化で、コンストラクタはクラス全体に対しての初期化って考えたらイメージしやすいかも
まあ、初期化子を指定しない場合でも、def aultで初期化されるんだけどね
334デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/21(水) 11:04:40.00ID:9tzd621Ta >>327
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」
オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」
オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
335デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 16:34:49.04ID:yCZSrEkI0336デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 16:56:18.92ID:yCZSrEkI0 C#に限らずnull safetyの言語で、特にビューモデルのクラスでnullableなフィールドを宣言する機会が多いいんだが、
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
337デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 17:04:17.58ID:yCZSrEkI0 メソッド内で1,2回とか参照しないのであればわざわざnon nullableなローカル変数に代入しないが
特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
338デフォルトの名無しさん (ワッチョイ 1701-UBeK)
2021/04/21(水) 22:17:44.76ID:4gUtTQ4z0 >>333
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
339デフォルトの名無しさん (ブーイモ MMcf-eihA)
2021/04/22(木) 08:19:06.23ID:b0xCXWo1M x = a ?? b; ←null合体演算子
x.?method() ←これなんて言うんだっけ?
x.?method() ←これなんて言うんだっけ?
340デフォルトの名無しさん (ワッチョイ ff2c-xwMB)
2021/04/22(木) 08:59:45.35ID:bBpUq1Fa0 ピリオドとクエスチョンの位置逆だけどnull条件演算子
341デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 10:42:48.70ID:XvsGXOnj0 linuxとwindowsで動くguiソフト作りたいんですが、共通の開発環境と言語ってあるでしょうか?
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
342デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/22(木) 11:01:31.56ID:8IHXhPWQM >>341
C++の話をするのに何故C#のスレに来たの?
C++の話をするのに何故C#のスレに来たの?
343デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/22(木) 11:15:40.26ID:wjS6T4Xy0 >>339
逆にnullだったらそのままにしたいってことが多いんだけどそういう演算子ないよね
int? x = null;
int? 2x = (x == null ) ? null : (2 * x);
みたいな
逆にnullだったらそのままにしたいってことが多いんだけどそういう演算子ないよね
int? x = null;
int? 2x = (x == null ) ? null : (2 * x);
みたいな
344デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 11:16:13.25ID:XvsGXOnj0 opengl関係無いアプリも作りたいので(´・ω・`)
c#は恐らくlinuxでは動かないものですよね
c#は恐らくlinuxでは動かないものですよね
345デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/22(木) 12:12:49.77ID:fYKo/KH70346デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/22(木) 12:36:03.10ID:TgsR4gUfM >>344
人脈があれば出来るぞ
人脈があれば出来るぞ
347デフォルトの名無しさん (アウアウウー Sa1b-u2/C)
2021/04/22(木) 13:12:31.50ID:V2Z7bz83a >>344
Unityならwindowsでもlinuxでも動くはず
Unityならwindowsでもlinuxでも動くはず
348デフォルトの名無しさん (ワッチョイ ff33-ubdj)
2021/04/22(木) 13:26:29.41ID:r34CJZmP0 .NET MAUIがそういうの目指してるんだろうけれど…
349デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 14:05:53.62ID:XvsGXOnj0 >>347
unityをguiアプリ開発に使いませんよね 普通
unityをguiアプリ開発に使いませんよね 普通
350デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/22(木) 14:23:56.91ID:wSGfQWAL0 >>349
mono 使えばいいんじゃないの?
mono 使えばいいんじゃないの?
351デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/22(木) 15:04:02.14ID:wjS6T4Xy0352デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 15:44:38.28ID:XvsGXOnj0353デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/22(木) 15:47:59.35ID:TgsR4gUfM .net core も動くぞ
354デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
2021/04/22(木) 17:02:51.26ID:RDEPc8rd0 釣りだろ
355デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/22(木) 20:02:51.51ID:YBnx4+wd0 なんでも釣りって言わないで
356デフォルトの名無しさん (ワッチョイ 574f-ubdj)
2021/04/22(木) 21:59:40.16ID:8RSzlZOe0 なんでguiにunity勧める奴いるのw
357デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/22(木) 22:01:36.51ID:itFZ12540 何にでもRuby勧める奴もいるだろ
358デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/22(木) 22:05:49.71ID:JJ/RFZ5mM まあC#スレでC++連呼してるのは釣りか底抜けのバカのどちらかだからいずれにせよスルーが基本かと
359デフォルトの名無しさん (スププ Sd70-F6Jh)
2021/04/23(金) 21:53:03.64ID:e/IHU4YJd c#でPCがアイドル状態か否か判定したくて
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
360デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/23(金) 22:15:06.79ID:2LOGdF5/0 特定のキー押下でアイドル判定されない状態を追加して置いた方が今後楽じゃないかな?
361デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 22:40:41.15ID:vlx7cXWJ0 メディアプレイヤーの類で動画再生は構わないの?
ブラウザのバックグランドタブで再生中の場合は?
一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
ブラウザのバックグランドタブで再生中の場合は?
一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
362デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 22:41:57.81ID:vlx7cXWJ0 SetThreadExecutionStateだった
363デフォルトの名無しさん (ワッチョイ 1c79-BShP)
2021/04/23(金) 23:45:20.80ID:tWGuVFO60 その他の案
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
364デフォルトの名無しさん (ワッチョイ 7cda-otCu)
2021/04/24(土) 00:09:09.60ID:gwk+qBm00 つ WM _ enteridle
365デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2021/04/24(土) 00:13:28.13ID:RPGHdVOi0 タスクスケジューラでアイドル状態を条件にプログラムを起動できる
コードから直接利用する方法があるかどうかは知らない
コードから直接利用する方法があるかどうかは知らない
366デフォルトの名無しさん (アウアウエー Sa6a-Nexr)
2021/04/24(土) 01:30:28.39ID:+FP4d2caa >>359
率直に言って無理がある気が。
結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。
スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
率直に言って無理がある気が。
結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。
スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
367デフォルトの名無しさん (スププ Sd70-F6Jh)
2021/04/24(土) 01:42:09.65ID:lUFfLIkMd368デフォルトの名無しさん (ワッチョイ ca35-B45E)
2021/04/24(土) 11:26:55.87ID:gMqF1SGc0 GetLastInputInfo
369デフォルトの名無しさん (ワッチョイ 1c79-BShP)
2021/04/24(土) 13:52:13.80ID:gg+BSg3V0370デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 14:17:41.68ID:zhh/+6W6M .NETで文字列の見た目の幅を求めるライブラリってある?
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
371デフォルトの名無しさん (ワッチョイ a27c-ftt6)
2021/04/24(土) 14:21:02.35ID:n+JXhE4b0372デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/24(土) 14:34:56.09ID:CavyEmf6a373デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 15:01:36.07ID:zhh/+6W6M374デフォルトの名無しさん (ワッチョイ 66ad-JI0G)
2021/04/24(土) 15:03:28.91ID:6TA9BQj40 絵文字やサロゲートペアも考え出すとめちゃめちゃめんどくさいよね
375デフォルトの名無しさん (ワッチョイ f0ad-Wjwq)
2021/04/24(土) 15:27:27.20ID:h2P4AVL30 >>370
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?
タイ語とかアラビア語まで考える?
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?
タイ語とかアラビア語まで考える?
376デフォルトの名無しさん (ワッチョイ 0a42-On6t)
2021/04/24(土) 15:41:18.56ID:Of2cOFGz0 MeasureStringの数字を見ながら、頭がウニになったGDI+の思い出
勝手に文字の大きさ計算してくれるwpfの有り難さよ
勝手に文字の大きさ計算してくれるwpfの有り難さよ
377デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2021/04/24(土) 16:14:48.80ID:RPGHdVOi0378デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 16:54:43.52ID:zhh/+6W6M379デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/24(土) 17:00:48.70ID:TFlZREhta Markdownのテーブルっていうのが何かよく分からないけど、
細かいこと言えば等幅フォントであってもどの文字がどの幅で
描画されるかはフォントに依存するはずだと思うので、(一般的に半角の文字だと
されているものが半分の幅で描画される保証なんて実はないんじゃないか?)
グラフィック関係なら>>371みたいに実測するのが一番確実だよね
細かいこと言えば等幅フォントであってもどの文字がどの幅で
描画されるかはフォントに依存するはずだと思うので、(一般的に半角の文字だと
されているものが半分の幅で描画される保証なんて実はないんじゃないか?)
グラフィック関係なら>>371みたいに実測するのが一番確実だよね
380デフォルトの名無しさん (ワッチョイ e27d-2xWT)
2021/04/24(土) 18:10:11.92ID:EfI17DN20 同じ文字で同じ等幅フォントで表示しても、アプリによって全角/半角相違することもあるよ
MS製品間でもVisualStudio/Officeで幅が一致しなくて以前困った記憶がある
MS製品間でもVisualStudio/Officeで幅が一致しなくて以前困った記憶がある
381デフォルトの名無しさん (ワッチョイ 2a02-B0GO)
2021/04/24(土) 18:17:52.33ID:shUiIChg0 httpclientでpostした時にレスポンスヘッダーのlocationが取れないんだけど取る方法なかんかな
382デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/24(土) 18:37:25.15ID:jBCuAF2S0 HttpClientをnewするときに渡すHttpClientHandler(.NET Core/5ならSocketsHttpHandler)の
AllowAutoRedirectをfalseにすればいけるような
AllowAutoRedirectをfalseにすればいけるような
383デフォルトの名無しさん (ワッチョイ 2a02-B0GO)
2021/04/25(日) 09:16:00.93ID:pCSAoCZZ0384デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/25(日) 15:07:37.80ID:hcyifmDsx パネルに貼り付けているlabelの数を数えることってできませんか?
テキストファイルの1行目ならlabel1へ表示するってな感じにしたいのですが、
行数が少なければ↓でいいんですが、
label1.Text = File.ReadLines(FileName).Skip(0).Take(1).First();
数が多くなるとコードが長くなって修正等に時間がかかると思うんですよ。
そこでラベルの数が数えられるなら繰り返し文を使えばコードがスッキリするんじゃないかと思ったんです。
良い案のある方いらっしゃいましたらレスをお願いします。
テキストファイルの1行目ならlabel1へ表示するってな感じにしたいのですが、
行数が少なければ↓でいいんですが、
label1.Text = File.ReadLines(FileName).Skip(0).Take(1).First();
数が多くなるとコードが長くなって修正等に時間がかかると思うんですよ。
そこでラベルの数が数えられるなら繰り返し文を使えばコードがスッキリするんじゃないかと思ったんです。
良い案のある方いらっしゃいましたらレスをお願いします。
385デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/25(日) 15:38:30.38ID:nePod60N0 >>384
controlsっているじゃん?
controlsっているじゃん?
386デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 15:45:05.88ID:jBx2XbWF0 >>384
var count = this.panel1.Controls.Cast<Control>().Count( x => x is Label );
var count = this.panel1.Controls.Cast<Control>().Count( x => x is Label );
387デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/25(日) 16:09:10.43ID:FaKFDW610388デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 16:11:55.60ID:jBx2XbWF0 >>387
思わずCastで書いちゃったけど、OfTypeの方がいいね
思わずCastで書いちゃったけど、OfTypeの方がいいね
389デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/25(日) 16:15:19.50ID:pX1h9NBm0 男だったらキャストして突っ張り続けろよ
390デフォルトの名無しさん (ワッチョイ 9378-On6t)
2021/04/25(日) 16:16:57.02ID:vWpG1hhV0391デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/25(日) 17:17:41.16ID:FaKFDW610 >>390
(デザイナーでの)登録順ってのは「保障」されているのか?って話なんだが
ディクショナリとか一見登録順に見えても、それは条件が良いだけか実装依存な場合がほとんどだぞ
まあデザイナの定義もVSでいじるとどう変わるかわからんけどな
(デザイナーでの)登録順ってのは「保障」されているのか?って話なんだが
ディクショナリとか一見登録順に見えても、それは条件が良いだけか実装依存な場合がほとんどだぞ
まあデザイナの定義もVSでいじるとどう変わるかわからんけどな
392デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 17:43:19.45ID:jBx2XbWF0393デフォルトの名無しさん (ワントンキン MM42-XmRv)
2021/04/25(日) 17:57:58.07ID:NMiXqa1mM394デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/25(日) 18:22:24.73ID:Jq50cbcAa >>384
なんかやりたいことと質問の内容が噛み合ってないような気がw
n番目のLabelにn行目の内容を表示したいんだったら
欲しいのはLabesの数じゃなくてIEnumerable<Label>とかじゃないの?
っていうかそういう目的ならLabelじゃなくてListViewとか使った方がいいんじゃないの?w
なんかやりたいことと質問の内容が噛み合ってないような気がw
n番目のLabelにn行目の内容を表示したいんだったら
欲しいのはLabesの数じゃなくてIEnumerable<Label>とかじゃないの?
っていうかそういう目的ならLabelじゃなくてListViewとか使った方がいいんじゃないの?w
395デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/25(日) 18:45:17.32ID:6eSN7Ebq0 MVVMならもっと楽だったな
396デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/25(日) 20:58:32.34ID:hcyifmDsx 皆様回答ありがとうございます。
Controlsプロパティに関しましては↓に
https://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
>PanelコントロールやGroupBoxコントロールなどを利用している場合には、フォームのControlsプロパティからすべてのコントロールにアクセスできるわけではない。
と書いていたのでスルーしていました。
>>394
まだ入門書を終わったばっかりでなにが正しいのかわかrない状態なので、変な感じなってるっぽいです。
ご指摘ありがとうございます。
とりあえずやりたいことはできたので、皆様本当にありがとうございました。
Controlsプロパティに関しましては↓に
https://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
>PanelコントロールやGroupBoxコントロールなどを利用している場合には、フォームのControlsプロパティからすべてのコントロールにアクセスできるわけではない。
と書いていたのでスルーしていました。
>>394
まだ入門書を終わったばっかりでなにが正しいのかわかrない状態なので、変な感じなってるっぽいです。
ご指摘ありがとうございます。
とりあえずやりたいことはできたので、皆様本当にありがとうございました。
397デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/26(月) 12:04:27.44ID:aoKZLvu10 >>396
一応釘を刺しておくけど、コントロール名を変えるだけで動かなくなるような実装にならないよう気をつけてね
一応釘を刺しておくけど、コントロール名を変えるだけで動かなくなるような実装にならないよう気をつけてね
398デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 15:48:20.09ID:57LVbzrx0399デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/26(月) 17:00:40.17ID:fVZ2op5+0 Nameプロパティを見ない処理にすればよくね?
400デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 17:16:30.71ID:57LVbzrx0 >>399
現在、ToolStripのクリックされたボタンをNameで判別してます。
if(e.ClickedItem.Name == "") { }
この場合、Name以外のプロパティを使うようにするだけでいいでしょうか。
現在、ToolStripのクリックされたボタンをNameで判別してます。
if(e.ClickedItem.Name == "") { }
この場合、Name以外のプロパティを使うようにするだけでいいでしょうか。
401デフォルトの名無しさん (スッップ Sd70-miHF)
2021/04/26(月) 17:43:14.20ID:1JVi9H1ud >>400
Nameじゃなきゃいいわけじゃないよ
じゃあTextで″削除″だった時にって分岐をすると、後にダイアログを出すから″削除...″に修正しなきゃってなって動かなくなる
派生してカスタムコントロールを作るとかTagを利用するとかが一般的かな
Nameじゃなきゃいいわけじゃないよ
じゃあTextで″削除″だった時にって分岐をすると、後にダイアログを出すから″削除...″に修正しなきゃってなって動かなくなる
派生してカスタムコントロールを作るとかTagを利用するとかが一般的かな
402デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 17:43:28.37ID:+MtLiehda >>400
どのプロパティーを使おうが、そのコードを書いた時と違う値が設定されてしまったら
識別子として使えないのは同じじゃないの?w
素直に「クリックされたのは○○か?」を検査するコードを書けばいい。
if (e.ClickedItem == hogeButton) { ... }
そもそもボタン自身のイベントを使えば何がクリックされたか識別するコードを書く必要がない
どのプロパティーを使おうが、そのコードを書いた時と違う値が設定されてしまったら
識別子として使えないのは同じじゃないの?w
素直に「クリックされたのは○○か?」を検査するコードを書けばいい。
if (e.ClickedItem == hogeButton) { ... }
そもそもボタン自身のイベントを使えば何がクリックされたか識別するコードを書く必要がない
403400 (ワッチョイ fb54-C+b/)
2021/04/26(月) 18:57:38.53ID:fsnGR4b00 ありがとうございます。
>>402
以前、その方式でやっていたのですが、理由あってToolStripと、そのコンテナになるFormを別にした結果、以下のコードになってしまいました。
結果、FormからMenuItemを直接参照出来なくなりました。
https://ideone.com/dlhYMG
対策的に、別途、MenuItemの一覧のenumと、クリックされたItemを伝播するイベントを作りました。
https://ideone.com/da5kPY
ただし、この場合はMenuItemを追加する時に、enumに要素を追加する必要がありますが、
enumは定数なので、アプリ使用中にItem追加した際、enumにそのボタンを登録出来ないのです。
それで結局Nameを参照するようになりました・・・
>>402
以前、その方式でやっていたのですが、理由あってToolStripと、そのコンテナになるFormを別にした結果、以下のコードになってしまいました。
結果、FormからMenuItemを直接参照出来なくなりました。
https://ideone.com/dlhYMG
対策的に、別途、MenuItemの一覧のenumと、クリックされたItemを伝播するイベントを作りました。
https://ideone.com/da5kPY
ただし、この場合はMenuItemを追加する時に、enumに要素を追加する必要がありますが、
enumは定数なので、アプリ使用中にItem追加した際、enumにそのボタンを登録出来ないのです。
それで結局Nameを参照するようになりました・・・
404デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 19:20:00.87ID:+MtLiehda >>403
メンバー(fileMenuItem)のアクセスレベルを非privateにして晒すのが嫌なら
素直にイベントを作っちゃうのがいいんじゃないの?
public class MyToolStrip : ToolStrip
{
private ToolStripMenuItem fileMenuItem = new ToolStripMenuItem();
public event EventHandler FileMenuItemClick
{
add
{
fileMenuItem.Click += value;
}
remove
{
fileMenuItem.Click -= value;
}
}
}
メンバー(fileMenuItem)のアクセスレベルを非privateにして晒すのが嫌なら
素直にイベントを作っちゃうのがいいんじゃないの?
public class MyToolStrip : ToolStrip
{
private ToolStripMenuItem fileMenuItem = new ToolStripMenuItem();
public event EventHandler FileMenuItemClick
{
add
{
fileMenuItem.Click += value;
}
remove
{
fileMenuItem.Click -= value;
}
}
}
405デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 19:27:06.52ID:fsnGR4b00 >>404
それで行きます!ありがとうございます!
それで行きます!ありがとうございます!
406デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/26(月) 19:35:35.06ID:/WVOYzSd0 動的にオブジェクト追加してるならそのオブジェクトの参照は持ってるはずだから
Nameプロパティとか見る必要ないはずだが
Nameプロパティとか見る必要ないはずだが
407デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/26(月) 19:50:40.13ID:fVZ2op5+0 言語の機能でインスタンスを特定しようとするのはギルティ
だいたい作っていくと痛い目にあう
だいたい作っていくと痛い目にあう
408デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 21:00:37.58ID:zRuX+7dna >>405
本来はToolStrip自身じゃなくて、ToolStripやMenuStripを持った
Formを継承した方がいいような気もするけどね。
まあそれじゃ満たせない要件なのかもしれないけど。
でもToolStripやMenuStripってFormの継承と相性悪いんだよな確か。
修正されずに放置されてるバグがてんこ盛りだった気がする
本来はToolStrip自身じゃなくて、ToolStripやMenuStripを持った
Formを継承した方がいいような気もするけどね。
まあそれじゃ満たせない要件なのかもしれないけど。
でもToolStripやMenuStripってFormの継承と相性悪いんだよな確か。
修正されずに放置されてるバグがてんこ盛りだった気がする
409デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/26(月) 22:26:58.02ID:VGqr4loSx410デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 23:28:26.99ID:fsnGR4b00411デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/27(火) 00:39:04.06ID:H7ElJCU2a >>410
「〇〇を変更した時には××も変更すべし」みたいな自明じゃないルールが存在すると、
そのルールをコードを保守する人が忘れているか知らない場合には
正常に動作しなくなるリスクが発生していることになる。
プログラミングの目的は要件を満たすことなので、他に手段がなければ
あえてそういうリスクのある方法を採用することはあってもいいけど、
今の話は明らかにそうじゃない
「〇〇を変更した時には××も変更すべし」みたいな自明じゃないルールが存在すると、
そのルールをコードを保守する人が忘れているか知らない場合には
正常に動作しなくなるリスクが発生していることになる。
プログラミングの目的は要件を満たすことなので、他に手段がなければ
あえてそういうリスクのある方法を採用することはあってもいいけど、
今の話は明らかにそうじゃない
412デフォルトの名無しさん (ワッチョイ 9b5f-f+Su)
2021/04/27(火) 00:47:33.70ID:8Unh/3dq0 Windows,LInux,Macで動作するものを作る場合は.Net coreとmonoどっちがおすすめですか?
413デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/27(火) 00:58:04.31ID:ezafVa/dM 今からなら.NET 5 (.NET Coreの後継)
今年中には更に後継の.NET 6が登場予定
.NET Coreは既に終了済、monoはモバイル向け(.NET 6に統合される予定)
今年中には更に後継の.NET 6が登場予定
.NET Coreは既に終了済、monoはモバイル向け(.NET 6に統合される予定)
414デフォルトの名無しさん (ワッチョイ d0f2-2tiM)
2021/04/27(火) 01:08:57.42ID:8OBs4sir0 なんか次々思い付いてはゴミのように捨てていくよな
415デフォルトの名無しさん (ワッチョイ 9b5f-f+Su)
2021/04/27(火) 01:13:33.58ID:8Unh/3dq0 そうなんですね
.NET 5調べてみます!
.NET 5調べてみます!
416デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/27(火) 01:19:08.19ID:DUr8YxD70 .NET Core 3.1の次バージョンを.NET 5とリネームしただけだから.NET Coreが終わったわけじゃない
417デフォルトの名無しさん (ワッチョイ 66ad-JI0G)
2021/04/27(火) 08:59:07.35ID:nkW/cvkg0 >>413
既に終了済み??
既に終了済み??
418デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 09:09:39.16ID:+C/fTs2P0 インターフェースや抽象クラスのメリットとは?
つまりvirtualで処理をかかない純粋仮想関数を作る意味はあるのかということです。
そもそもvirtual指定するのであればデフォルト処理というものを書いておけば必要に応じてオーバーライドすればよいと思うのですが。
つまりvirtualで処理をかかない純粋仮想関数を作る意味はあるのかということです。
そもそもvirtual指定するのであればデフォルト処理というものを書いておけば必要に応じてオーバーライドすればよいと思うのですが。
419デフォルトの名無しさん (ワッチョイ 1a63-3cD6)
2021/04/27(火) 09:56:11.35ID:zT7wmnFt0420デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 10:13:30.82ID:+C/fTs2P0421デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 13:59:45.19ID:MoRpu0yA0 ちゃんとifやcase文で書いた方が実は後で楽だけどね
使うかどうかはかっちょええかどうかである場合が多い
使うかどうかはかっちょええかどうかである場合が多い
422デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 14:31:58.08ID:H51IIUOO0 将来的にスパゲティ化することを防ぐために多少手間でもインタフェースや抽象クラスを使って制約を設けるもんじゃないの?
423デフォルトの名無しさん (ワントンキン MMb8-XmRv)
2021/04/27(火) 15:29:38.21ID:5DBHgWrVM そういうのは大抵、いざ要件が増えたときには、今の引数だけでは〇〇の情報が足りないとか、拡張を想定していなかった部分を拡張しなければならなくなったとかで破綻するんだよ
要件にないなら後で実際に拡張が必要になってからリファクタリングした方がよい
要件にないなら後で実際に拡張が必要になってからリファクタリングした方がよい
424デフォルトの名無しさん (ワッチョイ bf87-dNqc)
2021/04/27(火) 16:06:23.66ID:NpDZDySr0 俺は>>422派だな。
要件が増えたときにパラメータが増えたとしても、ファクトリーに渡す拡張用の値増やすだけで元の処理に手を入れなくていいから
要件が増えたときにパラメータが増えたとしても、ファクトリーに渡す拡張用の値増やすだけで元の処理に手を入れなくていいから
425デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 17:44:39.71ID:+C/fTs2P0 もしかして抽象クラスとインターフェースって使う必要ない?
メリットはスパゲティコードにしない制約を追加するだけで有れば設計ミスの方じゃないか?
メリットはスパゲティコードにしない制約を追加するだけで有れば設計ミスの方じゃないか?
426デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 17:54:44.27ID:MoRpu0yA0 >>425
まあでも知ってると他の誰かが使ったときに欠点がわかるよ
下地がそうやってできてるのにそれに逆らって作ってもしゃーないし
合わせるのは大事
ただメリットはよくわからん
List<object>やobject型の悪用とあんま変わらん気がする
落ちてもどこで落ちたかわからんのもいっしょ
まあでも知ってると他の誰かが使ったときに欠点がわかるよ
下地がそうやってできてるのにそれに逆らって作ってもしゃーないし
合わせるのは大事
ただメリットはよくわからん
List<object>やobject型の悪用とあんま変わらん気がする
落ちてもどこで落ちたかわからんのもいっしょ
427デフォルトの名無しさん (ブーイモ MM5e-ZDuA)
2021/04/27(火) 17:58:00.62ID:3vzUzKx8M >>425
同時平行開発するときは有用だな
同時平行開発するときは有用だな
428デフォルトの名無しさん (ワッチョイ a27c-On6t)
2021/04/27(火) 18:04:24.32ID:pi+NfSuo0 interfaceはこのクラスにはこのメソッドがありますよと言う事を約束するだけで
実装が共通化しようもないようなものに使うものだし
(例としてforeachで回せるようにする為のIEnumerable)
抽象クラスは良くある例はFruitクラスの子クラスがAppleやら関連性のあるものに対して使うものだろうし
そもそも用途が違うような
実装が共通化しようもないようなものに使うものだし
(例としてforeachで回せるようにする為のIEnumerable)
抽象クラスは良くある例はFruitクラスの子クラスがAppleやら関連性のあるものに対して使うものだろうし
そもそも用途が違うような
429デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/27(火) 18:05:20.92ID:eLMexJPua430デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/27(火) 18:06:48.09ID:eLMexJPua >>428
アルゴリズム書くときには便利かもね
アルゴリズム書くときには便利かもね
431デフォルトの名無しさん (スッップ Sd70-I7vP)
2021/04/27(火) 18:14:04.55ID:RVxlIcyJd クラスを他の人に使わせてまうとあとで変えれなくなってのっぴきならなくなることがあるからやがな。
interfaceにしておくことでサイズゼロにしておくことが出来る。
相手が不特定多数だと「変更したから変えてくれ」とはいえないわけですわ。
interfaceにしておくことでサイズゼロにしておくことが出来る。
相手が不特定多数だと「変更したから変えてくれ」とはいえないわけですわ。
432デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 18:16:27.98ID:H51IIUOO0 多態性を利用するために必須なんだから使わなきゃ不便じゃない?
純粋に楽になるついでに、構造に制約を設けて将来的に品質維持する保険にもなるっていう複数のメリットあるので、使わない理由が無いというか
一回つくって終わりの書き捨てならいらないけど
426の後半2行は意味がよくわからない
純粋に楽になるついでに、構造に制約を設けて将来的に品質維持する保険にもなるっていう複数のメリットあるので、使わない理由が無いというか
一回つくって終わりの書き捨てならいらないけど
426の後半2行は意味がよくわからない
433デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/27(火) 18:32:34.55ID:/yDoZvzG0 下手の考え休むに似たりって本当だよな
434デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 18:33:38.95ID:+C/fTs2P0 >>432
多様性を使う為に必須というのは初耳だった
別に普通のクラスでも継承してインスタンス化すれば多様性は使えると思ってたんだけど
同じ親クラスやvarの配列にしてfor回したり
そこでインターフェースや抽象クラスにしてしまうよりかは
少なくとも何も処理しないダミー関数でも書いて仮想メソッドで実装しておいた方が良いとおもてる
多様性を使う為に必須というのは初耳だった
別に普通のクラスでも継承してインスタンス化すれば多様性は使えると思ってたんだけど
同じ親クラスやvarの配列にしてfor回したり
そこでインターフェースや抽象クラスにしてしまうよりかは
少なくとも何も処理しないダミー関数でも書いて仮想メソッドで実装しておいた方が良いとおもてる
435デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 18:35:08.09ID:MoRpu0yA0 >>431
いやいやinterfaceから触るでしょうよw
いやいやinterfaceから触るでしょうよw
436デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 18:37:58.55ID:MoRpu0yA0 ちゃんとcase文書いた方がいくつ分岐してるかわかっていいじゃん
これをメリットと思えないのってなんでなの?
ソース読むときいくつに処理が別れてるか知らずに済むことって皆無だと思うけど
これをメリットと思えないのってなんでなの?
ソース読むときいくつに処理が別れてるか知らずに済むことって皆無だと思うけど
437デフォルトの名無しさん (エアペラ SD03-eDU7)
2021/04/27(火) 18:48:41.39ID:K2ItIfw9D 今って多態性じゃなく多様性って言うのが主流なの?
438デフォルトの名無しさん (ワッチョイ c252-W/SR)
2021/04/27(火) 18:49:53.91ID:tjxIRyEc0 >>436
いくつに分岐しているかを気にしなくてすむのがinterfaceによる抽象化のメリットの1つだろうに
いくつに分岐しているかを気にしなくてすむのがinterfaceによる抽象化のメリットの1つだろうに
439デフォルトの名無しさん (ワッチョイ fc63-On6t)
2021/04/27(火) 18:51:27.27ID:LNs0Wm240 いいえ多態性です
440デフォルトの名無しさん (ワッチョイ 74e5-4uvq)
2021/04/27(火) 18:53:45.11ID:QWBqF+Zq0441デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/27(火) 18:59:04.44ID:izPR1pTAa OOPの歴史も30年以上あるのでさすがに本質的に不要なものが
淘汰されずに生き残っているってことはないよ。
インターフェイス不要論とか抽象クラス不要論とか
staticおじさん級に幼稚で非生産的な書生論w
もっとマシなことに時間使った方がいいよ
淘汰されずに生き残っているってことはないよ。
インターフェイス不要論とか抽象クラス不要論とか
staticおじさん級に幼稚で非生産的な書生論w
もっとマシなことに時間使った方がいいよ
442デフォルトの名無しさん (ワッチョイ a27c-On6t)
2021/04/27(火) 19:07:16.33ID:pi+NfSuo0 >>440
実装しなくても良いのではなく、interfaceそのものには実装は書けない。必要なメソッドを定義するだけ
良くある例としてIDisposableがあるけど
using(var obj = new TestClass()) {
}
みたいな使い方したければ上記のTestClassにDispose()メソッドを用意してねって事で
class TestClass : IDisposable
{
public void Dispose() {何らかの終了処理}
}
みたいに実装を用意しないとそもそもエラーになる
実装しなくても良いのではなく、interfaceそのものには実装は書けない。必要なメソッドを定義するだけ
良くある例としてIDisposableがあるけど
using(var obj = new TestClass()) {
}
みたいな使い方したければ上記のTestClassにDispose()メソッドを用意してねって事で
class TestClass : IDisposable
{
public void Dispose() {何らかの終了処理}
}
みたいに実装を用意しないとそもそもエラーになる
443デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 19:27:42.16ID:H51IIUOO0444デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 19:49:20.62ID:MoRpu0yA0 >>441
ハイ、じゃあメリットは?
ハイ、じゃあメリットは?
445デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/27(火) 19:53:09.03ID:zk58yDApM >>440
単一継承しか許されないクラスと違い多重継承が許されるインタフェースでは、実体を実装するとC++同様に基底メンバの衝突の問題が発生する
この問題を回避するために実装を派生先に委ねてしまうことにしてインタフェース内では実装は禁止されている
単一継承しか許されないクラスと違い多重継承が許されるインタフェースでは、実体を実装するとC++同様に基底メンバの衝突の問題が発生する
この問題を回避するために実装を派生先に委ねてしまうことにしてインタフェース内では実装は禁止されている
446デフォルトの名無しさん (ワッチョイ 56bd-n2H/)
2021/04/27(火) 20:06:45.34ID:3YkNPMA00 教えて下さい。VBから書き換えて勉強してます。
フォーム1と2があり、それぞれTextBoxが無数にあります。フォーム1→2まで入力をして最後入力した情報を保存したいのですが、どういった形式、方法で保存するのが望ましいですか?
VBは区切り文字を入れ、datファイル1つに2行で書き込んでます。再度呼び出す際にsplitでそれぞれのTextBoxに入れてます。
が、何かのタイミングでTextBoxが増減したとか面倒そうなんですが一般的にはどんな感じでしてるんですかね?
フォーム1と2があり、それぞれTextBoxが無数にあります。フォーム1→2まで入力をして最後入力した情報を保存したいのですが、どういった形式、方法で保存するのが望ましいですか?
VBは区切り文字を入れ、datファイル1つに2行で書き込んでます。再度呼び出す際にsplitでそれぞれのTextBoxに入れてます。
が、何かのタイミングでTextBoxが増減したとか面倒そうなんですが一般的にはどんな感じでしてるんですかね?
447デフォルトの名無しさん (ワッチョイ 7cda-ZDuA)
2021/04/27(火) 20:21:32.78ID:cvesXM3a0 辞書を作りたまえ
DDXって死語け?
DDXって死語け?
448デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/27(火) 21:09:28.77ID:3TA75SVH0 json
449デフォルトの名無しさん (ワッチョイ ae06-3cD6)
2021/04/27(火) 21:15:25.28ID:YZq/AI+30 自分で使ったことはないけどinterfaceはデフォルト実装持てるようになってなかったっけ?
450デフォルトの名無しさん (ワッチョイ 9ebd-1ACq)
2021/04/27(火) 21:17:18.55ID:AfIT+tVg0 >>449
なってるけどあんま使いたくないな
なってるけどあんま使いたくないな
451デフォルトの名無しさん (ワッチョイ 66ad-KKaU)
2021/04/28(水) 01:26:19.18ID:C+xRRq0o0 まあどうしてもバイナリ互換性を崩したくない時に使うもんだよね
452デフォルトの名無しさん (ワッチョイ c0b5-8KU9)
2021/04/28(水) 02:42:21.15ID:2iApvDDg0 バイナリ互換性って何?
453デフォルトの名無しさん (ワッチョイ 66ad-KKaU)
2021/04/28(水) 03:00:12.55ID:C+xRRq0o0 あるdll(A)にインターフェイスが定義されており、別のdll(B)にその実装があった場合、Aを修正してもBに影響がなければバイナリ互換性があると言う。
たとえばAのインターフェイスに実装を持たないメンバーを追加するとBはコンパイルエラーになってしまうので互換性が崩れる。
Aにメンバーを足す際にデフォルトの実装を書いてあげれば、Bはコンパイルエラーにならない。
破壊的変更にならないようにフレームワークやライブラリを改修したいってのがインターフェイスのデフォルト実装の動機。
たとえばAのインターフェイスに実装を持たないメンバーを追加するとBはコンパイルエラーになってしまうので互換性が崩れる。
Aにメンバーを足す際にデフォルトの実装を書いてあげれば、Bはコンパイルエラーにならない。
破壊的変更にならないようにフレームワークやライブラリを改修したいってのがインターフェイスのデフォルト実装の動機。
454デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/28(水) 03:09:37.20ID:QdyWhJOJ0 まあCOMみたいにナントカ2とかナントカ3とか増えるのもまたアレ感があるんで
455デフォルトの名無しさん (ワッチョイ 3702-6Fjd)
2021/04/28(水) 06:00:02.52ID:Nr1kHF1d0 "IsDisabled": false,
"Name": "Tap",
"Arguments": [
"Keys.O",
"112",
"12600",
"True"
これって、キーボードのOを112ms間押して、12600ms離すって意味だよね?
約24時間、キーボードのPを押す時間も離す時間もランダム(10〜10000msの範囲で)にしたい場合どう入力したらいいの?
あと24時間以内にとある画像を認識した場合、認識したその都度W、S、A、Fを押すという時どう入力したらいいの?
"Name": "Tap",
"Arguments": [
"Keys.O",
"112",
"12600",
"True"
これって、キーボードのOを112ms間押して、12600ms離すって意味だよね?
約24時間、キーボードのPを押す時間も離す時間もランダム(10〜10000msの範囲で)にしたい場合どう入力したらいいの?
あと24時間以内にとある画像を認識した場合、認識したその都度W、S、A、Fを押すという時どう入力したらいいの?
456デフォルトの名無しさん (ワッチョイ d0f2-2tiM)
2021/04/28(水) 11:10:31.63ID:905Z8E/r0 それ何の言語なの?
457デフォルトの名無しさん (ワッチョイ 29ad-iXMK)
2021/04/28(水) 11:34:29.86ID:o3+T5GoG0 json
458デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/28(水) 12:01:20.73ID:k6d6iGQO0 アップキャストを行うと何が嬉しいのでしょう?
インスタンス化は普通
クラスA a = new クラスA();
なのに
クラスB b = new クラスA();
ってする意味です。入れれるのと使えるメソッドはイメージ通りですが、使うタイミングが不明です。
インスタンス化は普通
クラスA a = new クラスA();
なのに
クラスB b = new クラスA();
ってする意味です。入れれるのと使えるメソッドはイメージ通りですが、使うタイミングが不明です。
459デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/28(水) 12:12:07.08ID:CT/VgEdf0460デフォルトの名無しさん (ワッチョイ 5368-WHtW)
2021/04/28(水) 15:39:41.26ID:z2mXZLfz0 >>458
foreachでまとめて処理するのに使ったかな。
foreachでまとめて処理するのに使ったかな。
461デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/28(水) 16:32:07.21ID:snAX0stPa >>458
あえて言えばサブクラスで隠蔽(new)を使ってるメソッドやプロパティがあると、
サブクラスのインスタンスをスーパークラスの変数に入れた場合に
動作が変わってくるんだけど、恐らくそういう目的でそれをやるケースは
ほとんどないんじゃないかな。
ほとんどの場合、それは積極的な意味を持たないと思う。
あえて言えばサブクラスで隠蔽(new)を使ってるメソッドやプロパティがあると、
サブクラスのインスタンスをスーパークラスの変数に入れた場合に
動作が変わってくるんだけど、恐らくそういう目的でそれをやるケースは
ほとんどないんじゃないかな。
ほとんどの場合、それは積極的な意味を持たないと思う。
462デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/28(水) 16:58:01.56ID:MNdo4yxk0463デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/28(水) 17:52:40.77ID:snAX0stPa >>462
大阪人「は」人間なので、そんなことは不要。
class Human { }
class Osakan : Human { }
....
var o = new Osakan();
var hs = new List<Human>();
hs.Add(o);
大阪人「は」人間なので、そんなことは不要。
class Human { }
class Osakan : Human { }
....
var o = new Osakan();
var hs = new List<Human>();
hs.Add(o);
464デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/28(水) 17:59:49.82ID:1SQ+syPV0 アップキャストってそれ自体を目的にするものなのかな?
意識せずに使ってるだけで、見方を変えればアップキャストが目的とも言えるのかもだが
意識せずに使ってるだけで、見方を変えればアップキャストが目的とも言えるのかもだが
465デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/28(水) 19:54:14.62ID:MNdo4yxk0 >>463
それ暗黙的にアップキャストをしてるから不要ではないよね?
質問が、アップキャストの嬉しさについてだから例としては適切だと思うけど
アップキャストとしての嬉しさではなく、
クラスB b = new クラスA();という変数を作る意味があるのかって話なら、大抵は暗黙的なキャストてどうにかなるからやる意味はない
それ暗黙的にアップキャストをしてるから不要ではないよね?
質問が、アップキャストの嬉しさについてだから例としては適切だと思うけど
アップキャストとしての嬉しさではなく、
クラスB b = new クラスA();という変数を作る意味があるのかって話なら、大抵は暗黙的なキャストてどうにかなるからやる意味はない
466デフォルトの名無しさん (ワッチョイ 7d2d-eUQK)
2021/04/28(水) 20:13:50.67ID:VZRYywec0 var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x));
これでsに標準入力が入る気がするのですが実際何も入りません
どうすればいいんでしょうか?
_ = Console.ReadLine().Select(x => s.AddLast(x));
これでsに標準入力が入る気がするのですが実際何も入りません
どうすればいいんでしょうか?
467デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/28(水) 20:44:33.40ID:snAX0stPa ポカミスだと思うけど、Selectはシーケンスを返すだけだよね。
Selectが実行された時点ではstringの中のcharを列挙したりしない。
Selectが実行された時点ではstringの中のcharを列挙したりしない。
468デフォルトの名無しさん (ワッチョイ 7d2d-eUQK)
2021/04/28(水) 20:50:43.89ID:VZRYywec0 >>467
var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x)).Count();
こうですね...
遅延評価にハマりました
ありがとうございました
var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x)).Count();
こうですね...
遅延評価にハマりました
ありがとうございました
469デフォルトの名無しさん (ワッチョイ 7d2d-eUQK)
2021/04/28(水) 21:04:25.17ID:VZRYywec0 var s = new LinkedList<char>(Console.ReadLine());
というかこれで良かったみたい
というかこれで良かったみたい
470デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/28(水) 21:35:36.25ID:CT/VgEdf0 Select(x => s.AddLast(x))
はやっちゃ駄目だろう
はやっちゃ駄目だろう
471デフォルトの名無しさん (ワッチョイ 38e6-4uvq)
2021/04/28(水) 21:38:57.70ID:ohiKXwgS0 ToLinkedListを実装するのが絶対的正義
472デフォルトの名無しさん (ワッチョイ c0b5-8KU9)
2021/04/28(水) 21:54:47.35ID:2iApvDDg0473デフォルトの名無しさん (ワントンキン MM3b-D+2G)
2021/04/28(水) 22:01:00.21ID:N4TU29msM 階層構造を持たせられる
項目の追加が楽
シリアライザが充実している
方言の多いCSVと違い、仕様が統一されている
項目の追加が楽
シリアライザが充実している
方言の多いCSVと違い、仕様が統一されている
474デフォルトの名無しさん (ラクッペペ MM34-x7P5)
2021/04/28(水) 22:13:27.34ID:RJLrCSIQM CSVの方がよさそうならCSVって回答するけど
このスレくらいの質問者だと背景や用途を喋らないので最大公約数的回答になる
このスレくらいの質問者だと背景や用途を喋らないので最大公約数的回答になる
475デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/28(水) 22:18:25.06ID:SKK3EpB30 俺はjsonの方が好きだからjsonを使う
476デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/28(水) 22:33:03.67ID:roTNJzpQa CSVとかトラブル製造機じゃん
477デフォルトの名無しさん (ワッチョイ c0b5-8KU9)
2021/04/28(水) 22:43:14.57ID:2iApvDDg0 >>473-476
ありがとうございます
なるほど、XMLでも階層構造は持たせられるけど仰々しいですよね
ああ、あれをシリアライザって呼ぶんですね
昔、一回JavaだかでJSON読んでみて満足した記憶があります
GW明けの使い捨てのスクリプトではJSONで書いて読んでみます
ありがとうございます
なるほど、XMLでも階層構造は持たせられるけど仰々しいですよね
ああ、あれをシリアライザって呼ぶんですね
昔、一回JavaだかでJSON読んでみて満足した記憶があります
GW明けの使い捨てのスクリプトではJSONで書いて読んでみます
478デフォルトの名無しさん (ワッチョイ 87e3-On6t)
2021/04/29(木) 00:09:54.46ID:uAu0lWj/0 CSVは方言多すぎてそこらのパーサー使うの怖いわ
479デフォルトの名無しさん (テテンテンテン MM34-SWap)
2021/04/29(木) 04:38:08.16ID:mJShgxJuM unityでc#ぼちぼち覚えてきたけどc#って何ができるんや
480デフォルトの名無しさん (スププ Sd94-WHtW)
2021/04/29(木) 05:53:27.68ID:Pwf8A7W+d >>479
何でも出来るさ。ライブラリが揃えば。
何でも出来るさ。ライブラリが揃えば。
481デフォルトの名無しさん (ワッチョイ 972c-uCoU)
2021/04/29(木) 05:59:02.89ID:RErNGDPY0 [ {"a" : "1"}, {"b" : "x"} ]
a列のみとか、b列のみしかないJSON が、CSV では、
a,b
1,
,x
a列のみとか、b列のみしかないJSON が、CSV では、
a,b
1,
,x
482デフォルトの名無しさん (ブーイモ MM5e-i9BS)
2021/04/29(木) 09:03:47.11ID:lalb0v+EM >>481
わからん
わからん
483デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 09:48:46.58ID:IBkpf/CX0484デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 09:55:18.98ID:gug0J2oaa 楽じゃない
485デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 10:10:10.40ID:IBkpf/CX0486デフォルトの名無しさん (スププ Sd70-5v27)
2021/04/29(木) 10:27:55.67ID:EFYWvXghd 楽じゃないな。
きちんとした形してるなら階層持ってるデータのほうがマシ。
正規化するよね?常識的に考えて。
きちんとした形してるなら階層持ってるデータのほうがマシ。
正規化するよね?常識的に考えて。
487デフォルトの名無しさん (ワッチョイ 6cac-Tv8Z)
2021/04/29(木) 10:28:53.11ID:qu9Hv39D0 jsonはそのままクラスに持たせられるから便利
あとパースできない読めないってことが少ない
xmlもcsvと比較するとjsonに近い
csvはそのまま行と列のデータだからDBにいれるだけなら悪くないしそれならサイズ的に軽い
改行ダブルクォーテーションとかあと上で言う方言とかあるから、なかなかトラブルを消しきれないこともある
Excelでもよみたいとか要件があるならcsvかな
あとパースできない読めないってことが少ない
xmlもcsvと比較するとjsonに近い
csvはそのまま行と列のデータだからDBにいれるだけなら悪くないしそれならサイズ的に軽い
改行ダブルクォーテーションとかあと上で言う方言とかあるから、なかなかトラブルを消しきれないこともある
Excelでもよみたいとか要件があるならcsvかな
488デフォルトの名無しさん (スププ Sd70-5v27)
2021/04/29(木) 10:37:53.58ID:EFYWvXghd >>487
エクセルで読ませたら先頭のゼロ消すやつとか日付のフォーマット変えるやつとか、ハイフンがついた数字を日付にするやつが現れがちなのですごく嫌かな。
エクセルで読ませたら先頭のゼロ消すやつとか日付のフォーマット変えるやつとか、ハイフンがついた数字を日付にするやつが現れがちなのですごく嫌かな。
489デフォルトの名無しさん (ワッチョイ 9b02-wQF1)
2021/04/29(木) 10:49:23.57ID:PVZP3gNe0 目的の違うデータ形式を個々人で違う基準で評価してあーだこーだ言っても仕方ないのと違うか。
ただ。
json 形式の意味があるのか分からない深い階層を持つデータに対応するクラス作ってたときは本気でイヤになったけど。w
きちんと正規化して意味のない階層だとかを排除してくれるなら扱いやすい方式だとは思う。 < json
ただ。
json 形式の意味があるのか分からない深い階層を持つデータに対応するクラス作ってたときは本気でイヤになったけど。w
きちんと正規化して意味のない階層だとかを排除してくれるなら扱いやすい方式だとは思う。 < json
490デフォルトの名無しさん (ワッチョイ c04f-3cD6)
2021/04/29(木) 11:15:55.38ID:Ta5ufSky0 csvのrow/columnをjsonで表現できるが逆はできないからcsv⊂jsonだけど
大量のデータを扱うにはjsonは冗長だよな。
大量のデータを扱うにはjsonは冗長だよな。
491デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/29(木) 11:30:58.28ID:b5j8CNbM0 jsonで大量データだと、容量削減のために要素名を変数1文字とかやりだすしな
492デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 11:40:51.69ID:gug0J2oaa CSVよりJSON Linesですわな
493デフォルトの名無しさん (テテンテンテン MM34-D+2G)
2021/04/29(木) 12:43:50.51ID:Gvkp+FCpM494デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 12:52:51.92ID:IBkpf/CX0 >>493
デカイ階層データで気になるのは処理速度だから圧縮されると余計時間かかる
デカイ階層データで気になるのは処理速度だから圧縮されると余計時間かかる
495デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 13:06:57.09ID:C0wDcO7Sa シリアル化方法(CSVをシリアル化とは普通は呼ばない気がするけど便宜上)を選択する上での
評価基準としては、
(1) 可搬性
(2) 対応するデータ構造の自由度
(3) 変換速度
(4) バージョン耐性
(5) テキストとしての可読性(これが重要なケースはほとんどないと思うが...)
こんなとこかね。
CSVで評価できるのは(1)ぐらいなので積極的に使う理由はないね当たり前だけど
評価基準としては、
(1) 可搬性
(2) 対応するデータ構造の自由度
(3) 変換速度
(4) バージョン耐性
(5) テキストとしての可読性(これが重要なケースはほとんどないと思うが...)
こんなとこかね。
CSVで評価できるのは(1)ぐらいなので積極的に使う理由はないね当たり前だけど
496デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 13:39:52.49ID:gug0J2oaa エクセルおじさん用のデータ交換フォーマットと割り切ったほうがいい
497デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 13:47:05.06ID:MqlSo6MR0 >>494
展開時間かかる代わりにアクセス時間が相当減るから、変わらんか早くなるよ。
展開時間かかる代わりにアクセス時間が相当減るから、変わらんか早くなるよ。
498デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/29(木) 14:36:43.78ID:t8Qsv63f0 用途次第だけどjsonのままDBにつっこめばいいじゃん()
499デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 14:44:24.17ID:hnM2dBp9M >>497
そんなのCPUとI/O次第としか言えん
そんなのCPUとI/O次第としか言えん
500デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 15:11:48.04ID:IBkpf/CX0 >>498
え?どうやって?
え?どうやって?
501デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 15:19:29.90ID:IBkpf/CX0 結局、データベースに入れる運命なのに今の時代に階層データにするやつなんか頭悪いんだよ
502デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/29(木) 15:28:12.72ID:zh8QYWZnM いまどきはどんなDBMSでもjson形式のデータインポートくらい出来るだろ
LINQでクエリ走らせるだけだろ
LINQでクエリ走らせるだけだろ
503デフォルトの名無しさん (ワッチョイ c04f-3cD6)
2021/04/29(木) 15:32:29.05ID:Ta5ufSky0 >>496
じゃあjsonはテキストエディタおじさん用か。
じゃあjsonはテキストエディタおじさん用か。
504デフォルトの名無しさん (スププ Sd70-5v27)
2021/04/29(木) 16:10:49.54ID:1OxYHKr7d505デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 16:16:56.06ID:4wXFV0waM >>504
いや、リードが速きゃ圧縮してなくても速いわけだが…
いや、リードが速きゃ圧縮してなくても速いわけだが…
506デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/29(木) 16:48:57.18ID:t8Qsv63f0 >>500
もう言われてたけどjson型サポートされてるRDBMSもある。触ったことないのでパフォーマンスは知らぬ
mysql,PostgreSQLはカラムの型としてサポート済で、oracleとsqlserverは文字列型で格納して制約や関数でjsonとして扱う感じなのかな?
PostgreSQLだとjsonのキーに対してもインデックス作れるんだね。便利そう
もう言われてたけどjson型サポートされてるRDBMSもある。触ったことないのでパフォーマンスは知らぬ
mysql,PostgreSQLはカラムの型としてサポート済で、oracleとsqlserverは文字列型で格納して制約や関数でjsonとして扱う感じなのかな?
PostgreSQLだとjsonのキーに対してもインデックス作れるんだね。便利そう
507デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 17:02:11.90ID:IBkpf/CX0 激レアケースを例にあげて自分の失策を正当化するのは良くないぞ
今の時代にデータベースに入れにくいデータ構造にしたのは明らかにバカ
それがわからないならお前らも結局時代に対応できないんじゃんwぷw
今の時代にデータベースに入れにくいデータ構造にしたのは明らかにバカ
それがわからないならお前らも結局時代に対応できないんじゃんwぷw
508デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/29(木) 18:39:45.09ID:Yt1JhF/90 1ビット脳の生活って楽しそうだよね
509デフォルトの名無しさん (ワッチョイ bf87-/Q2x)
2021/04/29(木) 18:44:26.59ID:pn1fVmji0 >>507
rdbに突っ込むの前提ならcsvでも正規化されたテーブルが対象なんだから入れやすさなんかだけでは語れない。csvのデータは概ね正規化されたデータの結合と見れるので。
正規化·データの関連性を考えればjson·xmlの方が有利まである。
結局用途次第だと思うよ
rdbに突っ込むの前提ならcsvでも正規化されたテーブルが対象なんだから入れやすさなんかだけでは語れない。csvのデータは概ね正規化されたデータの結合と見れるので。
正規化·データの関連性を考えればjson·xmlの方が有利まである。
結局用途次第だと思うよ
510デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:28:20.05ID:MqlSo6MR0 >>505
10MBのデータ読んでメモリに乗せるのと、100KBに収まったデータを展開してメモリに乗せるの、だいたい後者のほうが早いぞ。
10MBのデータ読んでメモリに乗せるのと、100KBに収まったデータを展開してメモリに乗せるの、だいたい後者のほうが早いぞ。
511デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:30:06.10ID:IBkpf/CX0 >>509
は?じゃあjsonそのまま入れてみろよ
は?じゃあjsonそのまま入れてみろよ
512デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/29(木) 19:32:01.32ID:gug0J2oaa CSVはインポートで有利とか言ってる人が居るけど
ほとんどの場合インポート用CSVに整形する手間があるからトータルで損してるんだよね
ほとんどの場合インポート用CSVに整形する手間があるからトータルで損してるんだよね
513デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:36:37.76ID:IBkpf/CX0 >>509
そうやって実際にはできないことできるってなんで言っちゃうかな?
そうやって実際にはできないことできるってなんで言っちゃうかな?
514デフォルトの名無しさん (ワッチョイ 737b-h9tu)
2021/04/29(木) 19:37:51.57ID:bhMl+eBD0 いつまでスレ違い無意味なマウント合戦続ける気?
515デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:45:35.14ID:MqlSo6MR0516デフォルトの名無しさん (ワントンキン MMb8-D+2G)
2021/04/29(木) 19:47:56.90ID:h5Kbt4/jM517デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 19:48:06.90ID:4VO5KYJUa518デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:49:52.48ID:IBkpf/CX0519デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:50:03.03ID:MqlSo6MR0520デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:50:38.18ID:MqlSo6MR0 >>518
2016以降できるし、普通に使う。
2016以降できるし、普通に使う。
521デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:52:56.86ID:IBkpf/CX0 >>520
絶対嘘だろw
絶対嘘だろw
522デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 19:53:21.85ID:4VO5KYJUa523デフォルトの名無しさん (ワッチョイ bf87-/Q2x)
2021/04/29(木) 19:53:32.90ID:pn1fVmji0 まぁすれ違いなんで最後で
>>513
そのままなんか入れないよ。
csvも正規化されたテーブルに分解·展開して入れる
jsonも正規化されたテーブルに分解·展開して入れる
データ構造の形で関連性が分かるのでこの点ではjsonのほうが有利
これはわかるでしょ?
まぁxml·jsonは言われている通りにdbmsがサポートしている場合があるから、その場合はそのまま入れればいいけども
>>513
そのままなんか入れないよ。
csvも正規化されたテーブルに分解·展開して入れる
jsonも正規化されたテーブルに分解·展開して入れる
データ構造の形で関連性が分かるのでこの点ではjsonのほうが有利
これはわかるでしょ?
まぁxml·jsonは言われている通りにdbmsがサポートしている場合があるから、その場合はそのまま入れればいいけども
524デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 19:53:48.66ID:MqlSo6MR0525デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 19:55:35.85ID:IBkpf/CX0526デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 20:00:29.06ID:MqlSo6MR0527デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 20:01:40.70ID:IBkpf/CX0 じゃあ、jsonぶん投げて入れてみろよ
どこのテーブルのどのフィールドにどうやって入るかもわからんけどw
階層になってるデータをなw
なんでできないこと言っちゃうかなw
どこのテーブルのどのフィールドにどうやって入るかもわからんけどw
階層になってるデータをなw
なんでできないこと言っちゃうかなw
528デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/29(木) 20:05:16.52ID:t8Qsv63f0 時空が歪んで20年くらい前の環境からレスしてるんだろ
火曜日のインターフェース不要さんと同じ人っぽいし
火曜日のインターフェース不要さんと同じ人っぽいし
529デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 20:05:41.39ID:MqlSo6MR0530デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 20:09:44.80ID:IBkpf/CX0 データベース使うとインターフェースも出番ないよね
そういうテーブルないし
そういうテーブルないし
531デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/29(木) 20:11:38.28ID:Yt1JhF/90 急加速してて笑
532デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 20:12:58.48ID:MqlSo6MR0 データとしての互換性は全く無いが、同様にinserted,updated,deleted列を持っているデータ、なんかはインターフェイス作っても良いんじゃないの?
533デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 20:38:56.88ID:CPrTMOXFM534デフォルトの名無しさん (ワッチョイ ce01-lEFC)
2021/04/29(木) 20:50:11.97ID:qknGBKNj0 また圧縮沼に😅
535デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 20:51:47.22ID:nwdNubv1M >>527
> どこのテーブルのどのフィールドにどうやって入るかもわからんけどw
> 階層になってるデータをなw
マジで知らないなら黙ってなよ…
1つのフィールドにjson形式でそのまま(内部的にはデシリアライズしてるだろうけど)入るんだよ
jsonをサポートしてるrdbmsはjsonの階層も含めて検索などができる
ただ、rdbmsによるだろうけど制約かけられないとかインデックス効かないとか色々制限あるので使い所はよく考えた方がいい
> どこのテーブルのどのフィールドにどうやって入るかもわからんけどw
> 階層になってるデータをなw
マジで知らないなら黙ってなよ…
1つのフィールドにjson形式でそのまま(内部的にはデシリアライズしてるだろうけど)入るんだよ
jsonをサポートしてるrdbmsはjsonの階層も含めて検索などができる
ただ、rdbmsによるだろうけど制約かけられないとかインデックス効かないとか色々制限あるので使い所はよく考えた方がいい
536デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/29(木) 20:54:18.51ID:IBkpf/CX0 あっそう
537デフォルトの名無しさん (ワッチョイ 9b02-wQF1)
2021/04/29(木) 21:09:28.12ID:PVZP3gNe0 あっそう w
538デフォルトの名無しさん (ワッチョイ ef24-On6t)
2021/04/29(木) 21:10:59.33ID:JLw8VMIz0 流れあんま見てないけど何MBにもなるjson扱うって結構あり得る事なの?
GTA5も数十MBのjsonからのデータ読み込みがパフォーマンスのボトルネックになっててクラッカーが改善Mod作ったいうニュース見たけど、普通はそんな膨れ上がるならsqliteとか利用するもんじゃないのか?
GTA5も数十MBのjsonからのデータ読み込みがパフォーマンスのボトルネックになっててクラッカーが改善Mod作ったいうニュース見たけど、普通はそんな膨れ上がるならsqliteとか利用するもんじゃないのか?
539デフォルトの名無しさん (ワッチョイ f0ad-5v27)
2021/04/29(木) 21:22:08.52ID:MqlSo6MR0540デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:20:12.08ID:QUExeogh0 プログラミングでファイル入出力を早くするにはやっぱり
良いGPUが必要なんでしょうか?
C#とGPUの関係を教えてください。
良いGPUが必要なんでしょうか?
C#とGPUの関係を教えてください。
541デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:21:16.85ID:QUExeogh0 ちなみにGPUは欲しいですが3Dのゲームはしません(ゲーミングPCを購入予定ですが…)
プログラミングの良い環境を整えたいのでお勧めのがあれば教えてほしい
言語はもちろんC#です。
プログラミングの良い環境を整えたいのでお勧めのがあれば教えてほしい
言語はもちろんC#です。
542デフォルトの名無しさん (テテンテンテン MM34-D+2G)
2021/04/29(木) 23:27:45.10ID:Gvkp+FCpM そんなレベルならMac買っとくのが無難
なんでC#なのか知らないけどC#を選んだのもその調子じゃどうせまともな理由じゃないだろう
なんでC#なのか知らないけどC#を選んだのもその調子じゃどうせまともな理由じゃないだろう
543デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/29(木) 23:30:51.76ID:PtPwSG5y0 ファイル入出力はGPU関係ない
ストレージに左右される
HDDよりもSSDの方が速い
何のプログラム作るか知らないけど
WinFormsでアプリを作るならGPUは関係ない
WPFで作るならアプリの描画にGPUが使われる
ストレージに左右される
HDDよりもSSDの方が速い
何のプログラム作るか知らないけど
WinFormsでアプリを作るならGPUは関係ない
WPFで作るならアプリの描画にGPUが使われる
544デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/29(木) 23:40:25.95ID:DcwAc3waa GPGPUってなんか暗号通貨のマイニング以外で聞かなくなっちゃた印象があるけど
C#から簡単に使えるライブラリとかあったりするん?
C#から簡単に使えるライブラリとかあったりするん?
545デフォルトの名無しさん (テテンテンテン MM34-veNy)
2021/04/29(木) 23:42:47.01ID:Eeg/SlYmM >>538
あるだろうね
サーバーもクライアントもDB持ってるけどその間のやり取りはjsonでとか普通にあるから
ストレージとしての用途ならsqliteでもいいけど伝送手順として使われることも多いので
あるだろうね
サーバーもクライアントもDB持ってるけどその間のやり取りはjsonでとか普通にあるから
ストレージとしての用途ならsqliteでもいいけど伝送手順として使われることも多いので
546デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:59:30.38ID:QUExeogh0547デフォルトの名無しさん (ワッチョイ 0e68-6Fjd)
2021/04/29(木) 23:59:59.65ID:QUExeogh0 ちな読み込むファイルの容量は100MB程度です。
548デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/04/30(金) 00:14:03.55ID:ZjT67Y+80 折角回答してくれてる内容の1行目を声に出して10回読め
549デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/04/30(金) 00:15:07.47ID:wixFV2dt0550デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/04/30(金) 00:19:41.24ID:f4OC/lzG0 ありがとうございます。
どんな高性能なPCでも時間は0秒にはならないってことですね?
俄かに信じがたいですが、早くなる方法ないでしょうか。
どんな高性能なPCでも時間は0秒にはならないってことですね?
俄かに信じがたいですが、早くなる方法ないでしょうか。
551デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/04/30(金) 00:26:18.54ID:wixFV2dt0 ジューダス版のJohnny B Goodええで
552デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/04/30(金) 00:26:29.50ID:wixFV2dt0 ごめんw
553デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/04/30(金) 00:28:43.93ID:IafryiiR0 信じられないなら信じられる別の場所で聞けばいいんじゃないの。
554デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/04/30(金) 00:35:48.48ID:ZjT67Y+80 > どんな高性能なPCでも時間は0秒にはならないってことですね?
C#全く関係ないスレチ
あと元の質問自体が「サッカーで速く走るにはいいスパイクが必要なんでしょうか。シュートとスパイクの関係を教えてください」みたいな謎文脈なので、
こちらはそっちの脳内でどんな解釈されてるのか、まるで見当が付かない
C#全く関係ないスレチ
あと元の質問自体が「サッカーで速く走るにはいいスパイクが必要なんでしょうか。シュートとスパイクの関係を教えてください」みたいな謎文脈なので、
こちらはそっちの脳内でどんな解釈されてるのか、まるで見当が付かない
555デフォルトの名無しさん (ワッチョイ df52-FRJu)
2021/04/30(金) 00:45:47.98ID:FVXE5M810556デフォルトの名無しさん (ワッチョイ df79-2I0v)
2021/04/30(金) 00:55:52.99ID:1FoMz0PJ0 今jsonの話で忙しいのに話の腰を折る荒らしにしか見えない
557デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/04/30(金) 01:50:11.84ID:OqlMgVmX0 なんだそれジョークか?
558デフォルトの名無しさん (スププ Sdff-FvP6)
2021/04/30(金) 06:01:15.69ID:6G/EU7oZd 大学の課題でスペックの条件が必要なの?
無駄のないロジックを書くとか、そういうのが目標だったりしないのかな。
なんだったかな。C#だったらライブラリのメソッド一発で終わってしまう話だよ。
スペックが必要ならハードディスクじゃなくてSDとかの電子メモリにするだけ。
無駄のないロジックを書くとか、そういうのが目標だったりしないのかな。
なんだったかな。C#だったらライブラリのメソッド一発で終わってしまう話だよ。
スペックが必要ならハードディスクじゃなくてSDとかの電子メモリにするだけ。
559デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 06:33:18.17ID:9CWg3MHlM なんで相手するかなぁ…
560デフォルトの名無しさん (ワッチョイ e701-mFDB)
2021/04/30(金) 07:21:05.92ID:c/yKDnhO0 うっわ
ファイル名変更ってgit上で削除→追加になるのかよ
なんでこんな仕様なんだ面倒くさい
ファイル名変更ってgit上で削除→追加になるのかよ
なんでこんな仕様なんだ面倒くさい
561デフォルトの名無しさん (エアペラ SDcb-R7/G)
2021/04/30(金) 08:20:45.76ID:/49R4AUmD 大学生が処理時間を0秒にできると考えてることが恐怖
562デフォルトの名無しさん (ワッチョイ dfad-XhmA)
2021/04/30(金) 08:31:59.95ID:hl1Q3MIe0 >>560
git mv
git mv
563デフォルトの名無しさん (ワッチョイ e701-mFDB)
2021/04/30(金) 08:49:07.02ID:c/yKDnhO0 すまんVisualStudioスレじゃなかったな
564デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 09:24:19.33ID:QS3EuJUrM まあgitはC#プログラマーでも使ってる人多いし、意味不明な大学の課題よりマシ
565デフォルトの名無しさん (ワッチョイ 8733-jDx3)
2021/04/30(金) 12:19:19.36ID:2B0L3g8/0 c# でもファイル名変更はFile.Moveメソッドだし、考え方は同じだと思うがな。
566デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/04/30(金) 12:37:03.29ID:clFaH4DRM >>561
中2ぐらいなら許される?
中2ぐらいなら許される?
567デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/04/30(金) 13:53:37.33ID:IafryiiR0 真面目な話、設問の但し書きの部分を真に受けただけなんでは、とか思うのだけど。
「ただしファイルI/O などの処理時間は無視できる物とする」とかの。
大学の課題に取り組むのに私物のゲーミングPC を用意するって時点で意味が不明だもの。
私物の環境で設問をクリアできてもそれを持ち込むことなんて出来ないだろうし。
どこかを取り違えてたんだろ。
「ただしファイルI/O などの処理時間は無視できる物とする」とかの。
大学の課題に取り組むのに私物のゲーミングPC を用意するって時点で意味が不明だもの。
私物の環境で設問をクリアできてもそれを持ち込むことなんて出来ないだろうし。
どこかを取り違えてたんだろ。
568デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/04/30(金) 14:02:57.22ID:clFaH4DRM 並列処理においてボトルネックになりやすいのがI/O
そこを改善しようと試みるのは良い
ただしこの場合C#とは関係ない話なのでスレタイすら読めない脳足らずという事になる
そこを改善しようと試みるのは良い
ただしこの場合C#とは関係ない話なのでスレタイすら読めない脳足らずという事になる
569デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 15:01:33.00ID:Fe1MTD+iM いつまでその話題やるの?
570デフォルトの名無しさん (ワッチョイ a72c-uN1F)
2021/04/30(金) 17:03:31.63ID:OOQWIiqB0 最近はサーバーで、データベースのCPU が不足する事も多い
571デフォルトの名無しさん (ワッチョイ 0743-eGTG)
2021/04/30(金) 21:55:35.01ID:HehJ8LLK0 C#とJAVAを併用してるけど、C#の解説者のほうが深く理解していて簡潔に解説してるね。
JAVAはコピペで説明していて、動かないことも多々ある。採用人口が多いのに不思議
androidの仕様変更が原因のときもあるけど、C#は洗練されて理解しやすい。
つまりC#を扱う人はレベルが高いと感じる
JAVAはコピペで説明していて、動かないことも多々ある。採用人口が多いのに不思議
androidの仕様変更が原因のときもあるけど、C#は洗練されて理解しやすい。
つまりC#を扱う人はレベルが高いと感じる
572デフォルトの名無しさん (ワッチョイ 2701-1Vh1)
2021/04/30(金) 22:21:45.51ID:kkXqBkDB0 Javaは裾野が広い分ゴミとの遭遇率も高いのかと
573デフォルトの名無しさん (ワッチョイ 2701-SFYt)
2021/04/30(金) 23:53:02.12ID:fJ1TA+qd0 /// 問題点 ///
処理をどのクラスに持たせるのかの指標がわかりません。。。
同時にクラスの分ける粒度感もわかりません。。。
/// 質問 ///
どのクラスにどの処理を持たせれば良いのでしょう?
そもそも何をクラスにしたらいいのでしょう?
/// 具体例 ///
前者でいえば例えばドキュメントクラスとプリンタークラスがあって印刷するメソッドはプリンターに持たせるのかドキュメントに持たせるのか決めきれないということです。
後者でいえば例えばキャラクタークラスがあってそのクラスはHPクラスやMPクラスを作りインスタンスを持つべきかそれともただ単に値型のフィールドとして持つのかどちらが良いのか判断しきれないです。
処理をどのクラスに持たせるのかの指標がわかりません。。。
同時にクラスの分ける粒度感もわかりません。。。
/// 質問 ///
どのクラスにどの処理を持たせれば良いのでしょう?
そもそも何をクラスにしたらいいのでしょう?
/// 具体例 ///
前者でいえば例えばドキュメントクラスとプリンタークラスがあって印刷するメソッドはプリンターに持たせるのかドキュメントに持たせるのか決めきれないということです。
後者でいえば例えばキャラクタークラスがあってそのクラスはHPクラスやMPクラスを作りインスタンスを持つべきかそれともただ単に値型のフィールドとして持つのかどちらが良いのか判断しきれないです。
574デフォルトの名無しさん (ワッチョイ 8768-FvP6)
2021/05/01(土) 00:34:45.81ID:vLfObWug0 >>573
前者の例は現実と一緒じゃダメなん?
印刷の機能は書類じゃなくてプリンターの仕事。
後者はどうなんだろう。
自分なら、値型の方が代入比較が簡単で早そうだから、ギリギリまで何でも値型で。
でも、参照型の方がクラス継承とか参照渡しとか出来るから、その時の都合で使う。
機能と性能、仕様と規約、自分の主義で決めたらいいかと。
前者の例は現実と一緒じゃダメなん?
印刷の機能は書類じゃなくてプリンターの仕事。
後者はどうなんだろう。
自分なら、値型の方が代入比較が簡単で早そうだから、ギリギリまで何でも値型で。
でも、参照型の方がクラス継承とか参照渡しとか出来るから、その時の都合で使う。
機能と性能、仕様と規約、自分の主義で決めたらいいかと。
575デフォルトの名無しさん (ワッチョイ 7fa7-wijr)
2021/05/01(土) 00:35:58.96ID:u8jqB+2A0576デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/05/01(土) 00:37:52.50ID:GAZiMPha0 C#関係ないやね
折角なので答えると正解はない問いだと思う。みんながベストを探してる
つくるソフトや環境で適切なモノを周りと相談して作り上げるしかない
とりあえずの指標という意味であればDDDについて調べると具体例の質問については答えが得られるかもしれない
特に後半はvalueObjectとEntityと言われるもの
ただしこれも小規模のソフトで取り入れても冗長になるだけという問題もある
折角なので答えると正解はない問いだと思う。みんながベストを探してる
つくるソフトや環境で適切なモノを周りと相談して作り上げるしかない
とりあえずの指標という意味であればDDDについて調べると具体例の質問については答えが得られるかもしれない
特に後半はvalueObjectとEntityと言われるもの
ただしこれも小規模のソフトで取り入れても冗長になるだけという問題もある
577デフォルトの名無しさん (ワッチョイ df01-i6Oo)
2021/05/01(土) 00:45:41.04ID:ToMJKZXq0 >>573
1. どういう選択肢があるのかを把握できる力
2. それぞれの選択肢のメリットとデメリットを理解する力
3. 用途に対してより適切な選択肢はどれなのかを判断する力
あらゆる設計判断には上の3つの力が必要だが土台となるのは1と2の力
それらの力をつけるためには考えられる複数の選択肢をそれぞれ簡易実装してみて比較検討するのが一番
失敗を数多く繰り返すのが上達の近道
どのクラスにどの処理をもたせるのがいいのかは用途次第でケースバイケース
one size fits allな答えはないのでやる前からそれを求めていても進歩しない
1. どういう選択肢があるのかを把握できる力
2. それぞれの選択肢のメリットとデメリットを理解する力
3. 用途に対してより適切な選択肢はどれなのかを判断する力
あらゆる設計判断には上の3つの力が必要だが土台となるのは1と2の力
それらの力をつけるためには考えられる複数の選択肢をそれぞれ簡易実装してみて比較検討するのが一番
失敗を数多く繰り返すのが上達の近道
どのクラスにどの処理をもたせるのがいいのかは用途次第でケースバイケース
one size fits allな答えはないのでやる前からそれを求めていても進歩しない
578デフォルトの名無しさん (アウアウエー Sa9f-XmiE)
2021/05/01(土) 00:47:18.48ID:F0kMZy38a どっちでもいいからまず作れ
なんかへんだなと思ったらリファクタ
なんかへんだなと思ったらリファクタ
579デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 00:54:13.87ID:CrHqAudLa >>573
そういうのはやる前からいろいろ考えるより
「失敗したらやり直せばいい」と考えてとにかくいろいろコードを
書いてみることが大事。
老人より子供の方がスマホなんかの操作を覚えるのが早いけど、
あれと同じだね。
アントニオ猪木のポエムのノリでw
そういうのはやる前からいろいろ考えるより
「失敗したらやり直せばいい」と考えてとにかくいろいろコードを
書いてみることが大事。
老人より子供の方がスマホなんかの操作を覚えるのが早いけど、
あれと同じだね。
アントニオ猪木のポエムのノリでw
580デフォルトの名無しさん (ワッチョイ 2701-SFYt)
2021/05/01(土) 01:21:16.01ID:5wEuRr/u0 574から579の方々
ありがとうございます。
とりあえずやってみるというアドバイスが多かったので実装から着手していきたいと思います。
この質問の背景としてはクラス図やUMLでの設計をしてC#コードに落とし込もうとしてクラス図がごちゃごちゃし出してコーディングまで行けなかったという経緯です。
(OOPの話でc#そのものの質問でなかったのは申し訳ない。とはいえc#初心者の人でオブジェクト指向が初めての人は少なくないはずなのでやはりこういう質問になりがちな気もする)
様々な意見感謝です☺
参考させて頂きます。
ありがとうございます。
とりあえずやってみるというアドバイスが多かったので実装から着手していきたいと思います。
この質問の背景としてはクラス図やUMLでの設計をしてC#コードに落とし込もうとしてクラス図がごちゃごちゃし出してコーディングまで行けなかったという経緯です。
(OOPの話でc#そのものの質問でなかったのは申し訳ない。とはいえc#初心者の人でオブジェクト指向が初めての人は少なくないはずなのでやはりこういう質問になりがちな気もする)
様々な意見感謝です☺
参考させて頂きます。
581デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 10:59:09.68ID:BCm84eaD0 この前質問したバカですが(一応国公立)
何故レースゲームは膨大な建物や道路データをリアルタイムに
読み込めているんでしょうか?どういう仕組みなんですか?
例えば1Gのテキストファイルを読み込もうとすると実験しましたが、10秒かかってしまいます。
テキストファイルではなく、グラフィックデータを瞬時に読み込めるのはなぜですか?
C#より速い言語なんでしょうか?
何故レースゲームは膨大な建物や道路データをリアルタイムに
読み込めているんでしょうか?どういう仕組みなんですか?
例えば1Gのテキストファイルを読み込もうとすると実験しましたが、10秒かかってしまいます。
テキストファイルではなく、グラフィックデータを瞬時に読み込めるのはなぜですか?
C#より速い言語なんでしょうか?
582デフォルトの名無しさん (ワッチョイ 7f7b-EJSk)
2021/05/01(土) 11:07:42.89ID:bkjJ/QRj0 >>581
streamとして必要な分だけ読み込む、圧縮したデータを読み込んで展開する、あらかじめパーツを指定しその配置だけ読み込むなどなど
最初以外C#は関係ないから該当する板でやってくれ
ゲ製作技術
https://mevius.5ch.net/gamedev/
streamとして必要な分だけ読み込む、圧縮したデータを読み込んで展開する、あらかじめパーツを指定しその配置だけ読み込むなどなど
最初以外C#は関係ないから該当する板でやってくれ
ゲ製作技術
https://mevius.5ch.net/gamedev/
583デフォルトの名無しさん (スププ Sdff-FvP6)
2021/05/01(土) 11:10:22.30ID:Bazlrq4sd >>581
そのレースゲームがどんなんだか判らないけど、
ゲーム中じゃなくて起動するときに10Gでも100Gでも、
あらかじめ10分かけて読んでおけば良いんじゃないかな。
圧倒的に問題に対する条件が乏しくて、どう考えればいいのかこちらも判らないよ。
そのレースゲームがどんなんだか判らないけど、
ゲーム中じゃなくて起動するときに10Gでも100Gでも、
あらかじめ10分かけて読んでおけば良いんじゃないかな。
圧倒的に問題に対する条件が乏しくて、どう考えればいいのかこちらも判らないよ。
584デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 11:22:20.62ID:BCm84eaD0 >>583
市販のゲームは10分もかかりませんが、何故でしょうか?
市販のゲームは10分もかかりませんが、何故でしょうか?
585デフォルトの名無しさん (ワッチョイ 2701-1Vh1)
2021/05/01(土) 11:25:02.89ID:B2x+2kSO0 地図上の物体検索とかなら
numerical recipes の3rd edition に
説明があるからそれを読みたまえ。
なお日本語もC#版も無い
numerical recipes の3rd edition に
説明があるからそれを読みたまえ。
なお日本語もC#版も無い
586デフォルトの名無しさん (ワッチョイ a724-OedE)
2021/05/01(土) 11:35:09.71ID:nO6fZcYL0 >>584
583は分かりやすく極端な例を出しただけで常識的に考えて10Gのデータ読み込みなんてしないっしょ
大体重めのゲームでも起動時やマップ入場時のロードは500MBくらいじゃね?
つまりそのレースマップ入場時にそこで必要なグラフィックデータを数十秒かけて読み込ませればいい
583は分かりやすく極端な例を出しただけで常識的に考えて10Gのデータ読み込みなんてしないっしょ
大体重めのゲームでも起動時やマップ入場時のロードは500MBくらいじゃね?
つまりそのレースマップ入場時にそこで必要なグラフィックデータを数十秒かけて読み込ませればいい
587デフォルトの名無しさん (ワッチョイ a724-OedE)
2021/05/01(土) 11:52:19.99ID:nO6fZcYL0 >>584
君のレス追ってみたけどゲームじゃなくて目的はテキストファイル?
ファイルI/Oにボトルネックがあると思ってるようだけど、テキストファイルだとしたらボトルネックはエンコードにあるんじゃない?
File.ReadAllTextは割とオーバーヘッド大きいから、.NetCore3以上でSpanを利用したエンコードを構築すればいくらか早くなるかもしれない
君のレス追ってみたけどゲームじゃなくて目的はテキストファイル?
ファイルI/Oにボトルネックがあると思ってるようだけど、テキストファイルだとしたらボトルネックはエンコードにあるんじゃない?
File.ReadAllTextは割とオーバーヘッド大きいから、.NetCore3以上でSpanを利用したエンコードを構築すればいくらか早くなるかもしれない
588デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 12:02:16.59ID:79IzxePJa >>581
自分もゲームまったく知らないので偉そうなことは言えないけど、
いきなりそんな高度な話より、例えば40年前のゲームのスーパーマリオは
たった30kBの中にどうやって32面分オーバーのマップデータを詰め込んだかを
考える方が有益だと思う。
要するに本質はI/Oじゃなくてデータをどうやって圧縮/展開するかじゃないの?
「リアルタイムで(ストレージやネットワークから)読み込み」なんかしてるはずがないと思うけど。
自分もゲームまったく知らないので偉そうなことは言えないけど、
いきなりそんな高度な話より、例えば40年前のゲームのスーパーマリオは
たった30kBの中にどうやって32面分オーバーのマップデータを詰め込んだかを
考える方が有益だと思う。
要するに本質はI/Oじゃなくてデータをどうやって圧縮/展開するかじゃないの?
「リアルタイムで(ストレージやネットワークから)読み込み」なんかしてるはずがないと思うけど。
589デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/05/01(土) 12:54:20.94ID:R4IHrQy80 馬鹿は的確な質問ができないってのを凄い的確に示してくれている
590デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 12:58:57.73ID:GvoaCTGBM ファミコンカセットはROMアドレス指定でCPUからダイレクトアクセス出来る
初期以外はアドレス足らないからマッパーで切り替えてる。物理で
初期以外はアドレス足らないからマッパーで切り替えてる。物理で
591デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:13:02.51ID:GvoaCTGBM プレイステーションのすごいところは
ファミコンやPCエンジンと違って
ロード中にギャラガができる事
作りての工夫によってロード時間ゼロにすることが可能
ドラクエなんかはマップ切り替え直後はエンカウントしないよね
ファミコンやPCエンジンと違って
ロード中にギャラガができる事
作りての工夫によってロード時間ゼロにすることが可能
ドラクエなんかはマップ切り替え直後はエンカウントしないよね
592デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:34:26.28ID:GvoaCTGBM サガフロの5連携が3連携で一休みしたりサガフロ2の連携が我々のレベルになると通常と変わらず目で追えたり
RAMが少ないと苦労が耐えないですね
えーっと500MBでしたっけ?ウフフ
RAMが少ないと苦労が耐えないですね
えーっと500MBでしたっけ?ウフフ
593デフォルトの名無しさん (ワッチョイ 075f-Mxzp)
2021/05/01(土) 13:37:34.47ID:/yhKW3U+0 >>591
ファミコンはそもそもロード時間ないだろ
ファミコンはそもそもロード時間ないだろ
594デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:39:40.13ID:GvoaCTGBM >>593
円盤システムの話なので
円盤システムの話なので
595デフォルトの名無しさん (ワッチョイ 075f-Mxzp)
2021/05/01(土) 13:41:51.01ID:/yhKW3U+0 >>594
ファミコンやPCエンジンと違ってって自分で言っとるやん
ファミコンやPCエンジンと違ってって自分で言っとるやん
596デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:47:26.99ID:GvoaCTGBM ?
つまりdiskとdiscについて話し合いたいってこと?
スレ違いでは??
つまりdiskとdiscについて話し合いたいってこと?
スレ違いでは??
597デフォルトの名無しさん (エアペラ SD9b-R7/G)
2021/05/01(土) 14:03:33.45ID:v2ArV8E8D598デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 14:26:22.67ID:CCHnejZpa MIDIとかMMLの方がたとえ話としては適切だったかな
たった数10kBのMIDIファイル一つで16bit-48kHzの音を何分も出力できるのはなぜなのか。
1分音を鳴らすのに6MBの量子化データが必要なはずなのに
たった数10kBのMIDIファイル一つで16bit-48kHzの音を何分も出力できるのはなぜなのか。
1分音を鳴らすのに6MBの量子化データが必要なはずなのに
599デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 14:40:58.52ID:GvoaCTGBM つまり薄っぺらな嘘を伸縮自在な愛で…
600デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 16:17:08.68ID:BCm84eaD0601デフォルトの名無しさん (ワッチョイ bfda-jeEy)
2021/05/01(土) 16:28:44.50ID:LX/vNMTG0 うん、C#じゃなくてC言語がいいと思うよ。
頑張れ
頑張れ
602デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/05/01(土) 16:29:01.53ID:5BASMYuN0 高度どころか怠慢な素人丸出しなんだが。
高度なことを望むならまず地道に足場を固めていくべきじゃない?
すごいことをやってる(みたいだ)から、その方法を教えて!じゃなくて、自分でその理由を調べることをしないと成長はないよ。
高度なことを望むならまず地道に足場を固めていくべきじゃない?
すごいことをやってる(みたいだ)から、その方法を教えて!じゃなくて、自分でその理由を調べることをしないと成長はないよ。
603デフォルトの名無しさん (ワッチョイ df7c-OedE)
2021/05/01(土) 16:33:44.86ID:k3UheK6C0 少しずつ積み上げた方がいいという意味を早めに分かった方が良いかと思う・・・
604デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/01(土) 16:35:36.04ID:qXtdoAsC0 GPUはCPUの進化バージョンではない。
テキストファイルから特定文字のカウントするのに、全部メモリに乗せる必要は無くて、適当なサイズずつ読み込みながら文字カウントしたら?
別にC#でもそんなに重くないと思うけど。
テキストファイルから特定文字のカウントするのに、全部メモリに乗せる必要は無くて、適当なサイズずつ読み込みながら文字カウントしたら?
別にC#でもそんなに重くないと思うけど。
605デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/05/01(土) 16:35:45.23ID:IqH/tXjj0606デフォルトの名無しさん (ワッチョイ e701-mFDB)
2021/05/01(土) 16:52:35.85ID:qdLbyML+0 このセンスの無さすぎはひどいな
ゲーム作りたい中学生でも簡単に理解できる話なのに
ゲーム作りたい中学生でも簡単に理解できる話なのに
607デフォルトの名無しさん (エアペラ SD9b-R7/G)
2021/05/01(土) 17:23:02.96ID:v2ArV8E8D 597には応えてくれなかったな
質問を変えよう
母に呼ばれてリビングからダイニングに行ったら食事の用意がされていました
これはリビングから呼ばれた者がダイニングに行くまでの一瞬に、
母が食事を用意したと思うか?
質問を変えよう
母に呼ばれてリビングからダイニングに行ったら食事の用意がされていました
これはリビングから呼ばれた者がダイニングに行くまでの一瞬に、
母が食事を用意したと思うか?
608デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 17:36:18.28ID:h1NN14xsa >>600
ストレージの「革新」については15年ぐらい前にこんなのがちょっと話題になった。
だけど、自分が知らないだけかもしれないけどその後の進展を聞かないね。
https://gigazine.net/news/20060710_mram/
NVRAM的な物のコストが下がれば記憶デバイスのカーストの中にある
メモリーとストレージの間の分厚い壁が崩壊するわけで、かなり革命的な
ことなはずなんだけど。
ストレージの「革新」については15年ぐらい前にこんなのがちょっと話題になった。
だけど、自分が知らないだけかもしれないけどその後の進展を聞かないね。
https://gigazine.net/news/20060710_mram/
NVRAM的な物のコストが下がれば記憶デバイスのカーストの中にある
メモリーとストレージの間の分厚い壁が崩壊するわけで、かなり革命的な
ことなはずなんだけど。
609デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/01(土) 17:59:43.20ID:h1NN14xsa しかしいつもの交通整理の人はこんだけ質問者が罵倒されてるのに何で黙ってるのかね。
ここはそういう行為が禁止されているはずのスレではなかったのか(笑)
ここはそういう行為が禁止されているはずのスレではなかったのか(笑)
610デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 18:12:14.87ID:4GddeLjJM それ以前に連休で暇だとしてもなぜこんなみえみえの嵐に付き合うんだよ…
611デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/05/01(土) 18:28:58.67ID:R4IHrQy80 外も嵐だからね(意味不明)
612デフォルトの名無しさん (ワッチョイ 6768-TNk6)
2021/05/01(土) 18:53:13.69ID:BCm84eaD0 >>607
いやわかりますよ。料理を調理する時間が
HDDアクセスってことですよね?ただ料理と違う部分は、煮えるまで待つとかなくて
目的のものをとってくるだけでいいから、一瞬でその場所にいけたら、
基本的には0秒なんですよね。HDDのシークバーがその場所から動く必要がなければ最速ってことですよね。
すいません、そろそろ去ります。
基本的にC#単独では無理という結論にしました。。。
いやわかりますよ。料理を調理する時間が
HDDアクセスってことですよね?ただ料理と違う部分は、煮えるまで待つとかなくて
目的のものをとってくるだけでいいから、一瞬でその場所にいけたら、
基本的には0秒なんですよね。HDDのシークバーがその場所から動く必要がなければ最速ってことですよね。
すいません、そろそろ去ります。
基本的にC#単独では無理という結論にしました。。。
613デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/05/01(土) 20:10:11.18ID:GAZiMPha0 本人に聞きたいわけじゃないのだが、基本的に0秒ってどういう意味なんだろう
文中に出てくる一瞬って言葉は0秒じゃないし、なのに一瞬で行けたら基本的に0秒ってのはどういうことなんだろう
小数部は切捨てて整数部だけを考えることを基本的にって言うのかな?
文中に出てくる一瞬って言葉は0秒じゃないし、なのに一瞬で行けたら基本的に0秒ってのはどういうことなんだろう
小数部は切捨てて整数部だけを考えることを基本的にって言うのかな?
614デフォルトの名無しさん (ワッチョイ 075f-OedE)
2021/05/01(土) 20:12:10.14ID:IqH/tXjj0 蒸着スピードは0.05秒
615デフォルトの名無しさん (ワッチョイ 7fbb-2I0v)
2021/05/01(土) 20:14:14.93ID:nnvUFYDz0 薄さ0.02mmでも付けてるんだぜ
616デフォルトの名無しさん (ワッチョイ dfe6-HlUj)
2021/05/01(土) 20:16:16.11ID:hvNg7eLP0 HDDの代わりにGPUにデータファイルを置けば速いって意味だろ
617デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/05/01(土) 20:18:32.92ID:5BASMYuN0 その後に思ったことなんだけど、ファイルI/O 以外の処理速度が気になる。
100MB だっけ。そのテキストファイルの中身がメモリにあったとして、検索が終了するまでの時間はどのくらいだったんだろう。
100MB だっけ。そのテキストファイルの中身がメモリにあったとして、検索が終了するまでの時間はどのくらいだったんだろう。
618デフォルトの名無しさん (ワッチョイ dfe6-HlUj)
2021/05/01(土) 20:22:53.83ID:hvNg7eLP0 >>617
流石に大学生をバカにし過ぎでは?
流石に大学生をバカにし過ぎでは?
619デフォルトの名無しさん (オッペケ Sr5b-OedE)
2021/05/01(土) 20:28:50.64ID:jUoUZG3Jr >>612
君は面白いおもちゃだな
実際に1秒で100MBでしか読めなかったらそれを使ってどうやって派手だったりリアルな画面を作ってやろうかと思うのが
PGやゲーム制作者です
ハードに自分の要望を求めるのは単なる消費者です
昔はもっと制約が厳しかった
自分たちは子供のころからそればかり考えてた
あおりでもなんでもなくあなたには向いていません
君は面白いおもちゃだな
実際に1秒で100MBでしか読めなかったらそれを使ってどうやって派手だったりリアルな画面を作ってやろうかと思うのが
PGやゲーム制作者です
ハードに自分の要望を求めるのは単なる消費者です
昔はもっと制約が厳しかった
自分たちは子供のころからそればかり考えてた
あおりでもなんでもなくあなたには向いていません
620デフォルトの名無しさん (スププ Sdff-FvP6)
2021/05/01(土) 20:30:35.88ID:Bazlrq4sd いわゆる「ロード中」っていう処理待ちをさせずマップ切り替えが可能なゲームがあったけど、そういう話かな。
古い時代の話だから、今じゃ大したこと無いかもね。
古い時代の話だから、今じゃ大したこと無いかもね。
621デフォルトの名無しさん (オッペケ Sr5b-OedE)
2021/05/01(土) 20:32:10.77ID:jUoUZG3Jr ハイドライド3
622デフォルトの名無しさん (オッペケ Sr5b-OedE)
2021/05/01(土) 20:33:10.01ID:jUoUZG3Jr 1秒じゃなくて10秒だったな
623デフォルトの名無しさん (ワッチョイ 7fa7-wijr)
2021/05/01(土) 22:04:23.51ID:u8jqB+2A0 そもそもPCのマザボに
CPU、メモリ、HDD、グラボ乗ってんだから
それぞれに行き来するのに時間かかるってわかるやろ
CPU↔メモリ↔HDD
メモリ↔グラボ
とりあえず物理的にどうやってくっついてるのか調べるべきだと思う
CPU、メモリ、HDD、グラボ乗ってんだから
それぞれに行き来するのに時間かかるってわかるやろ
CPU↔メモリ↔HDD
メモリ↔グラボ
とりあえず物理的にどうやってくっついてるのか調べるべきだと思う
624デフォルトの名無しさん (スッップ Sdff-EcTW)
2021/05/02(日) 00:05:56.42ID:Jc9e5ibud まぁ自作したことすらない子も多い。
うちの会社もゲームやゲームハードも作ってるとこなのに開発メンバーなのにスカジーケーブルすら知らん子が入ってきてる。
抽象化や隠蔽化が進んで上のレイヤーばかり意識するようになってるから地盤が無い。
うちの会社もゲームやゲームハードも作ってるとこなのに開発メンバーなのにスカジーケーブルすら知らん子が入ってきてる。
抽象化や隠蔽化が進んで上のレイヤーばかり意識するようになってるから地盤が無い。
625デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/05/02(日) 00:19:41.09ID:9GC+BpRR0626デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 00:23:00.38ID:BrJlALbya627デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 00:25:26.19ID:BrJlALbya もうISAやCバスだって知らない人の方が多いよね。下手したらAGPも
それどころかPS/2やLPTみたいなちょっと前のレガシーポートだって
今の20代の大半は知らないだろう
それどころかPS/2やLPTみたいなちょっと前のレガシーポートだって
今の20代の大半は知らないだろう
628デフォルトの名無しさん (スッップ Sdff-EcTW)
2021/05/02(日) 00:29:06.70ID:Jc9e5ibud その辺の事務や営業じゃなくて、コンピュータハード作ろうという子がバリバリ現役のスカジー知らんとか相当不勉強なんだけとw
Unityでちゅろっとゲーム作るような層じゃあるまいし。
Unityでちゅろっとゲーム作るような層じゃあるまいし。
629デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 00:35:00.92ID:BrJlALbya >>628
SCSiが現役な程度にはISAバスだって一部の産業用途で現役だけど、
さすがにあなたもISA知らんのは不勉強とか言わんでしょ(笑)
要するにそれ自分中心主義なんだよ
そういうおじさんみっともないよマジで
SCSiが現役な程度にはISAバスだって一部の産業用途で現役だけど、
さすがにあなたもISA知らんのは不勉強とか言わんでしょ(笑)
要するにそれ自分中心主義なんだよ
そういうおじさんみっともないよマジで
630デフォルトの名無しさん (ワッチョイ 5f2d-eh0L)
2021/05/02(日) 00:42:55.47ID:smoYWJQA0 一部業界でしか生き残っていないものを知らなくて当然
SCSIが一般的でなくなってから相当経つからな
SCSIが一般的でなくなってから相当経つからな
631デフォルトの名無しさん (ワッチョイ 075f-Mxzp)
2021/05/02(日) 01:03:34.73ID:WAC22cE20 コンシューマゲーム機だとSCSI使ってたのは、ドリームキャストとかGBAの世代までだったなー
SCSIは相性があるから結構厳密に型番指定されてたっけ
そしてそれら以降のハードはみんなUSBだった気がする
SCSIは相性があるから結構厳密に型番指定されてたっけ
そしてそれら以降のハードはみんなUSBだった気がする
632デフォルトの名無しさん (ワッチョイ 0702-7a8P)
2021/05/02(日) 11:04:21.93ID:9GC+BpRR0 「SCSIを知ってる」ってどのレベルでのことを言ってるんだろう。
名前を知っていればいいレベルなら、必要になったときに調べれば済むんじゃ。
昔に流行ったの技術を知らないのは不勉強、って言われても困るような気がする。
名前を知っていればいいレベルなら、必要になったときに調べれば済むんじゃ。
昔に流行ったの技術を知らないのは不勉強、って言われても困るような気がする。
633デフォルトの名無しさん (ワッチョイ 6793-R7/G)
2021/05/02(日) 11:34:55.65ID:kVgm1y330 SCSIは抽象化されて残ってるじゃん
物理インターフェースだけの存在じゃない
iSCSIなら当たり前に見かけるだろ
そもそも0と0を超えた時間とを同一視し、
0にならないことをにわかには信じられないと宣う国公立大学生って嘘くさい
国公立中学生っぽいからまずは基本情報技術者の勉強でもして、
言語とハードウェアの関係から学ぶのがよさそうだね
物理インターフェースだけの存在じゃない
iSCSIなら当たり前に見かけるだろ
そもそも0と0を超えた時間とを同一視し、
0にならないことをにわかには信じられないと宣う国公立大学生って嘘くさい
国公立中学生っぽいからまずは基本情報技術者の勉強でもして、
言語とハードウェアの関係から学ぶのがよさそうだね
634デフォルトの名無しさん (ワッチョイ 2701-1Vh1)
2021/05/02(日) 12:23:17.90ID:i3WiXYxp0 sasはまだ現役でしょうに
635デフォルトの名無しさん (ワッチョイ 5f2d-eh0L)
2021/05/02(日) 12:30:57.35ID:smoYWJQA0 抽象化や隠蔽化の進んでいない下のレイヤーの話としてのSCSIケーブルだから
iSCSIやSASは想定していないと思うけどなぁ
iSCSIやSASは想定していないと思うけどなぁ
636デフォルトの名無しさん (エアペラ SD9b-R7/G)
2021/05/02(日) 13:02:24.18ID:PbhH3UoFD それは今の必須知識じゃないからね
SCSIバスやケーブルの知識があっても、今となっては古いシリアル規格の知識でしか無い
SCSIバスやケーブルの知識があっても、今となっては古いシリアル規格の知識でしか無い
637デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/02(日) 13:16:44.85ID:bVQBnZjhM > C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
> C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
大事なことなので…
> C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
大事なことなので…
638デフォルトの名無しさん (ワッチョイ 2701-SFYt)
2021/05/02(日) 13:26:41.16ID:6VPLrRfP0 インターフェースって継承以外でインスタンス化してフィールドに持たせるように使う場合があるけど、それって違う場所に定義している関数を呼び出して使うような感じ?
いまいちインターフェースの使い方がわからぬ
いまいちインターフェースの使い方がわからぬ
639デフォルトの名無しさん (スッップ Sdff-EcTW)
2021/05/02(日) 13:41:54.97ID:Jc9e5ibud 「コントロールがきかない、再コンパイル依頼が効かない」第三者にバイナリのdllを公開してかつ、3年5年と更新しつづけていけばいやでもわかる。
640デフォルトの名無しさん (ワッチョイ 8733-jDx3)
2021/05/02(日) 13:48:58.41ID:JVX0w7410 オブジェクト指向の言語やってて、デザインパターンの勉強しない奴とか居るんだな。
641デフォルトの名無しさん (ブーイモ MMcf-XmiE)
2021/05/02(日) 13:51:59.04ID:gOHPQIPOM それぐらいなら別にinterface要らんけどな
自社DLLの指し替えOKならメソッドの中身変えるのはできる
TypeScriptのinterfaceぐらいになったら便利だけどC#やJavaのinterfaceはそこまで重要じゃない
自社DLLの指し替えOKならメソッドの中身変えるのはできる
TypeScriptのinterfaceぐらいになったら便利だけどC#やJavaのinterfaceはそこまで重要じゃない
642デフォルトの名無しさん (ワッチョイ df01-i6Oo)
2021/05/02(日) 14:46:34.33ID:hSgvj4Ff0 >>638
実装を入れ替え可能にするために使う
インターフェースを使う側はインターフェースがどう実装されてるかを気にしない
関心事の分離や責務の分割というやつ
public class CustomerService
{
private readonly ICustomerRepository customerRepository;
public CustomerService(ICustomerRepository customerRepository)
{
this.customerRepository = customerRepository;
}
}
CustomerServiceはcustomerRepositoryがどういう永続化技術を使ってるか関知しない
RDBMSを使った実装からKVSを使った実装に変更したとしてもCustomerServiceクラスは変更する必要がない
単一責任の原則や依存性逆転の原則というオブジェクト指向設計の基本原則に従ってる
実装を入れ替え可能にするために使う
インターフェースを使う側はインターフェースがどう実装されてるかを気にしない
関心事の分離や責務の分割というやつ
public class CustomerService
{
private readonly ICustomerRepository customerRepository;
public CustomerService(ICustomerRepository customerRepository)
{
this.customerRepository = customerRepository;
}
}
CustomerServiceはcustomerRepositoryがどういう永続化技術を使ってるか関知しない
RDBMSを使った実装からKVSを使った実装に変更したとしてもCustomerServiceクラスは変更する必要がない
単一責任の原則や依存性逆転の原則というオブジェクト指向設計の基本原則に従ってる
643デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 14:53:27.70ID:vJ/g4PX7a >>638
全然違うものを透過的に扱いたい場合ってあるでしょ?
例えばビデオゲームで入力デバイスとしてゲームコントローラーだけでなく、
キーボードやタッチパネルも使えるようにしたいとか。
とりあえずはInterfaceはそういう要求を満たすためのものだと
理解しておけばいいよ。それ「だけ」ではないけどね
全然違うものを透過的に扱いたい場合ってあるでしょ?
例えばビデオゲームで入力デバイスとしてゲームコントローラーだけでなく、
キーボードやタッチパネルも使えるようにしたいとか。
とりあえずはInterfaceはそういう要求を満たすためのものだと
理解しておけばいいよ。それ「だけ」ではないけどね
644デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 15:09:58.26ID:vJ/g4PX7a 汎用性を高めるためって考えた方が分かりやすいかもね。
昔テレビデオってあったけど、世の中にHDMIみたいなインターフェイスが存在せずに
ああいうモノリシック構造の機械しか存在しなかったらどんだけ不便か考えれば
インターフェイスの意味なんてイチコロだと思うけどな
昔テレビデオってあったけど、世の中にHDMIみたいなインターフェイスが存在せずに
ああいうモノリシック構造の機械しか存在しなかったらどんだけ不便か考えれば
インターフェイスの意味なんてイチコロだと思うけどな
645デフォルトの名無しさん (ブーイモ MMcf-XmiE)
2021/05/02(日) 16:17:56.85ID:jdfWZ4dSM 最近はそういうのは関数を渡すんでよくなってる
646デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/02(日) 17:53:29.91ID:two2wwYId 関数を渡すとしても、引数なり戻り値なりの型を定義しないとならんしな。
実装を含まない定義を切り出しておかないと、容易に循環参照になってクリーンビルド出来なくなるぞ。
実装を含まない定義を切り出しておかないと、容易に循環参照になってクリーンビルド出来なくなるぞ。
647デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 18:03:29.16ID:sTlH4cY7a >>645
デリゲートで済む用途に(無理に)インターフェイスを流用しなくて済むようになっただけ。
デリゲートで済む用途に(無理に)インターフェイスを流用しなくて済むようになっただけ。
648デフォルトの名無しさん (ワッチョイ df61-Lr3t)
2021/05/02(日) 18:14:35.65ID:KSgMbN0G0 インターフェイスつかってるとVisualStudioで定義に飛んでもメソッドの実装見れないから腹立つんでやめてください。
649デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/02(日) 18:16:04.86ID:two2wwYId >>648
逆に、実装を見るなという意思表示では?
逆に、実装を見るなという意思表示では?
650デフォルトの名無しさん (ワッチョイ df61-Lr3t)
2021/05/02(日) 18:24:40.27ID:KSgMbN0G0 >>649
見られたくない恥ずかしい実装してるってことですねわかりました
見られたくない恥ずかしい実装してるってことですねわかりました
651デフォルトの名無しさん (ブーイモ MMcf-XmiE)
2021/05/02(日) 18:25:03.65ID:t+a18Ga0M class X: IX {
private IY y;
public X(IY yy) {y=yy;}
public T foo(U u) { ... }
↑こんなの冗長で面倒くさいだけじゃん
↓これでいいんだよ
static class X {
public static T foo(Func<...> y , U u) { ... }
C#最大の欠点はTSなどと違ってトップレベル関数を定義できないことだな
まあそのうち導入されるだろうけど
>>647
まあそうだね
そしてデリケートで済まない用途なんてのは、ないんだなこれが
private IY y;
public X(IY yy) {y=yy;}
public T foo(U u) { ... }
↑こんなの冗長で面倒くさいだけじゃん
↓これでいいんだよ
static class X {
public static T foo(Func<...> y , U u) { ... }
C#最大の欠点はTSなどと違ってトップレベル関数を定義できないことだな
まあそのうち導入されるだろうけど
>>647
まあそうだね
そしてデリケートで済まない用途なんてのは、ないんだなこれが
652デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 18:48:49.12ID:sTlH4cY7a OKでは
(1) IEnumerableと機能的に等価なものを実装してみせてほしい
(2) IComparable<T>はComparison<T>で置換できるが、
(a) ジェネリックでIComparableで制約をかけるのと同じことはどうやって実現するのか?
(b) 毎回いちいちComparisonを指定しなきゃならん煩雑さはどうしてくれる?
(1) IEnumerableと機能的に等価なものを実装してみせてほしい
(2) IComparable<T>はComparison<T>で置換できるが、
(a) ジェネリックでIComparableで制約をかけるのと同じことはどうやって実現するのか?
(b) 毎回いちいちComparisonを指定しなきゃならん煩雑さはどうしてくれる?
653デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/02(日) 19:00:20.53ID:2vdkVbTy0 >>651
Funcの型と、Uはどこで定義した何なの?
俺ならUはインターフェイスにすると思うけど。
fooを呼ぶ側も、foo側からも参照できる型である必要があるよね。
なんとなくプリミティブしか意識してない気がする。
Funcの型と、Uはどこで定義した何なの?
俺ならUはインターフェイスにすると思うけど。
fooを呼ぶ側も、foo側からも参照できる型である必要があるよね。
なんとなくプリミティブしか意識してない気がする。
654デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/02(日) 19:41:10.32ID:sTlH4cY7a 制約の問題はIComparableぐらいならコンストラクタで必要なデリゲートを指定しないと
インスタンス化できないようにするみたいなことで解決できるけど、
インターフェイスのメンバーが多かったりイベントを含んでたりするとそうもいかんね。
インスタンス化できないようにするみたいなことで解決できるけど、
インターフェイスのメンバーが多かったりイベントを含んでたりするとそうもいかんね。
655デフォルトの名無しさん (ブーイモ MMcf-XmiE)
2021/05/02(日) 20:12:47.50ID:t+a18Ga0M656デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/02(日) 21:45:53.38ID:2vdkVbTy0657デフォルトの名無しさん (ブーイモ MMcf-XmiE)
2021/05/02(日) 21:58:29.87ID:+xOhjhDaM >>656
言ってること意味不明だから多分君なんか勘違いしてる
言ってること意味不明だから多分君なんか勘違いしてる
658デフォルトの名無しさん (ワッチョイ e7bd-xxOn)
2021/05/02(日) 22:16:38.89ID:keNMubny0 >>648
Ctrl+F12でよくない?
Ctrl+F12でよくない?
659デフォルトの名無しさん (ワッチョイ 7fa7-wijr)
2021/05/02(日) 22:20:11.10ID:/HNwvjpa0 >>648
実装へ飛ぶ的な右クリックメニューがある
実装へ飛ぶ的な右クリックメニューがある
660デフォルトの名無しさん (ワッチョイ bf62-gjyJ)
2021/05/02(日) 22:52:19.04ID:vVweUfCP0 実装に移動なんてあったんだな
これかなり助かるわ
これかなり助かるわ
661デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/05/02(日) 23:12:46.37ID:OnfmzaV30 >>657
クラスに実装するのなら、ドメインに焦点を当てたクラスにその実装も凝集されるけど、
外部からデリゲートで渡す場合はそのデリゲートをどこに定義すんのって事じゃない?
1回しか使わないのなら匿名関数でいいけど、複数箇所から同じ用途で使うのなら書き捨てじゃなくどこかで定義しておきたいと思うし、
更にそれが一体何のための処理なのかを設計に落とし込むなら適切な場所で宣言実装しないとだし
抽象的な話してると自分の頭じゃ理解しきれないな
こういう設計の場合こうすればよくね/こういう問題があるやんっていう具体例が欲しい
クラスに実装するのなら、ドメインに焦点を当てたクラスにその実装も凝集されるけど、
外部からデリゲートで渡す場合はそのデリゲートをどこに定義すんのって事じゃない?
1回しか使わないのなら匿名関数でいいけど、複数箇所から同じ用途で使うのなら書き捨てじゃなくどこかで定義しておきたいと思うし、
更にそれが一体何のための処理なのかを設計に落とし込むなら適切な場所で宣言実装しないとだし
抽象的な話してると自分の頭じゃ理解しきれないな
こういう設計の場合こうすればよくね/こういう問題があるやんっていう具体例が欲しい
662デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/02(日) 23:55:49.46ID:2vdkVbTy0663デフォルトの名無しさん (ブーイモ MMcf-XmiE)
2021/05/03(月) 00:35:06.67ID:AKP9VyEvM >>661
構文レベルでクラスで書く意味はなく、関数でこう書けばいいでしょ、って意図のレスに対して
その疑問(設計レベルの問題)って方向性ズレてるってことは理解してる?
まあいいけど
ドメイン上のある責務に関連した処理をまとめたいって意図で聞いてるなら、モジュールで分ければいいよ
クラスは要らない
例えばOOPでIY, YがリポジトリでIX, XがリポジトリのCreateメソッドを使う何らかのサービスだったとするよ
関数で書くときはYモジュールにget, update, create, deleteなどの関数を定義する
Xにはfuncを定義して、もし関連性が高い別の機能もあればまあ一緒に定義してもいい
んで実行時にはX, Yをインポートして
func(create, u);
みたいにして呼び出すだけでしょ
funcとcreateをバインドして
_func = u => func(create, u);
みたいにしてDIでやってるようなこともできる
これならインターフェースもクラスも要らんよね?
関数だけがあればいい
構文上のムダが多いクラスを使う利点はほとんどないよ
>>662
相変わらずなにが言いたいかわからん
構文レベルでクラスで書く意味はなく、関数でこう書けばいいでしょ、って意図のレスに対して
その疑問(設計レベルの問題)って方向性ズレてるってことは理解してる?
まあいいけど
ドメイン上のある責務に関連した処理をまとめたいって意図で聞いてるなら、モジュールで分ければいいよ
クラスは要らない
例えばOOPでIY, YがリポジトリでIX, XがリポジトリのCreateメソッドを使う何らかのサービスだったとするよ
関数で書くときはYモジュールにget, update, create, deleteなどの関数を定義する
Xにはfuncを定義して、もし関連性が高い別の機能もあればまあ一緒に定義してもいい
んで実行時にはX, Yをインポートして
func(create, u);
みたいにして呼び出すだけでしょ
funcとcreateをバインドして
_func = u => func(create, u);
みたいにしてDIでやってるようなこともできる
これならインターフェースもクラスも要らんよね?
関数だけがあればいい
構文上のムダが多いクラスを使う利点はほとんどないよ
>>662
相変わらずなにが言いたいかわからん
664デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/03(月) 00:50:26.13ID:MrRb6D/k0 >>663
なんでわからんのかな。
なんでわからんのかな。
665デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/03(月) 01:00:53.01ID:ppBWlDH7M666デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/03(月) 01:42:30.76ID:FYXS8pYUa >>665
>できるできないの話ならアセンブラなら何でも実現できるよw
意外にこれが本質だろうね。
一昔前のOOP批判にも「構造体でも同じことが実現できる」ってのがあった。
そりゃできるに決まってるが、そういう批判には無理してそうやって
書いたコードが果たして人に理解しやすいのか、
人間の認知能力に親和的なのか、という視点が欠けていた。
>できるできないの話ならアセンブラなら何でも実現できるよw
意外にこれが本質だろうね。
一昔前のOOP批判にも「構造体でも同じことが実現できる」ってのがあった。
そりゃできるに決まってるが、そういう批判には無理してそうやって
書いたコードが果たして人に理解しやすいのか、
人間の認知能力に親和的なのか、という視点が欠けていた。
667デフォルトの名無しさん (ワッチョイ 5f2d-eh0L)
2021/05/03(月) 01:44:06.35ID:p8zZzwHv0 おじいちゃんこないだから暴れ過ぎ
OOPもInterfaceも不要って何でC#使ってるんだろう
OOPもInterfaceも不要って何でC#使ってるんだろう
668デフォルトの名無しさん (ワッチョイ 2701-1Vh1)
2021/05/03(月) 01:44:36.83ID:JIK/4A/q0 xview/sunview のAPIは全部構造体だったなぁ
669デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/05/03(月) 01:46:57.30ID:el9v2bCt0 >>663
構文レベルでは引っかかるところは無いので、設計レベルの質問した感じ
自分の理解があやしいのは自覚してるので質問しつつ補おうとしてる ※自分は半人前くらいなので
663読んで見えてなかった場所が見えたのだけど、
>>651のコード例でいうとIYとYの定義が無くなって、代わりにYモジュール増えてるんだよね?
差し引きで言うほど構文が楽になってる?この辺は個人の感覚だけど、そんな変わらないような気がした
ついでにいうと、Xから見たときに何やってるのか解らなくなってる気がした
インターフェース使った時であれば詳細は良くわからんけどリポジトリ用のIYインターフェース使ってそっちに任せてるんだなという隠蔽だけど、
デリゲートでやると何か良くわからん関数受け取って処理させてるわってならない?
構文レベルでは引っかかるところは無いので、設計レベルの質問した感じ
自分の理解があやしいのは自覚してるので質問しつつ補おうとしてる ※自分は半人前くらいなので
663読んで見えてなかった場所が見えたのだけど、
>>651のコード例でいうとIYとYの定義が無くなって、代わりにYモジュール増えてるんだよね?
差し引きで言うほど構文が楽になってる?この辺は個人の感覚だけど、そんな変わらないような気がした
ついでにいうと、Xから見たときに何やってるのか解らなくなってる気がした
インターフェース使った時であれば詳細は良くわからんけどリポジトリ用のIYインターフェース使ってそっちに任せてるんだなという隠蔽だけど、
デリゲートでやると何か良くわからん関数受け取って処理させてるわってならない?
670デフォルトの名無しさん (アウアウエー Sa9f-XmiE)
2021/05/03(月) 02:08:36.88ID:PW8YFNOca671デフォルトの名無しさん (ワッチョイ 7fa7-wijr)
2021/05/03(月) 03:11:07.27ID:oM0LAQLj0 >>667
突き詰めるといらない
だってc言語で完成されてるし
だから場面場面で使用するメリットを説明できるかってのは重要になると思う
先読みでの将来的に〜になる見込みで
先行投資を現場のPGの勝手な判断で行ったってのは相当アホな所業
突き詰めるといらない
だってc言語で完成されてるし
だから場面場面で使用するメリットを説明できるかってのは重要になると思う
先読みでの将来的に〜になる見込みで
先行投資を現場のPGの勝手な判断で行ったってのは相当アホな所業
672デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/03(月) 08:08:21.32ID:MrRb6D/k0 Interfaceが不要なメソッドってのも意味がわからんのだがな。
OOPでなくとも、型のキャスト可/不可には、インターフェイスがあったほうが良い。
これはGoみたいな、トップレベル関数で書ける他の言語でも同じ。
OOPでなくとも、型のキャスト可/不可には、インターフェイスがあったほうが良い。
これはGoみたいな、トップレベル関数で書ける他の言語でも同じ。
673デフォルトの名無しさん (テテンテンテン MM8f-GPK9)
2021/05/03(月) 08:20:32.49ID:kW5Idv8oM ここはC#初心者のためのスレのはずなんだけど
このおじいちゃん、なんでこのスレで自分の主義主張を振りまいてるんだろう?
自分の書き方が2021年時点で一般的な書き方と大きくかけ離れた時代錯誤なものと分かったうえで
初心者にもそういう書き方を強要したいの?
それとも誰かに構ってもらうのが目的なの? 自社の若手に煙たがれて敬遠されてるとこういうスレでクダを巻きたくなるのかな?
率直に言って、このおじいちゃんは
Rubyガイジ並みorそれ以上の害悪だからもうこのスレで書きこまないでほしい
このおじいちゃん、なんでこのスレで自分の主義主張を振りまいてるんだろう?
自分の書き方が2021年時点で一般的な書き方と大きくかけ離れた時代錯誤なものと分かったうえで
初心者にもそういう書き方を強要したいの?
それとも誰かに構ってもらうのが目的なの? 自社の若手に煙たがれて敬遠されてるとこういうスレでクダを巻きたくなるのかな?
率直に言って、このおじいちゃんは
Rubyガイジ並みorそれ以上の害悪だからもうこのスレで書きこまないでほしい
674デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/03(月) 08:36:10.53ID:MrRb6D/k0 どっちの指摘?
675デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/05/03(月) 09:50:34.48ID:AZIpChV60 構う奴もガイジって20年前から言われてるはずだがいい加減学習できないのかねチンパン君
676デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/03(月) 11:36:41.28ID:8gAH2GR/M 昨日は触れなかったけど、関数のメリットの中でも特に大きいのは、テストのしやすさね
インターフェースにしちゃうと、テストモック作んのが面倒くさすぎんのよ
いちおうモックフレームワークみたいなのもあるけど、ありゃプログラミングパズルみたいでマトモじゃない
長くメンテナンスするには疲弊が勝る
そもそもなんでモックが必要になるかって
、OOPでインターフェース使ってDI、なんてことをやるから無駄にオブジェクトの数とオブジェクト間の参照が増えていくからだ
関数なら簡単だ
都合のいいラムダを渡すだけ
関数には無駄なオブジェクトも参照もない
これ以上にシンプルなものはない
これを知ってしまうとOOPなんてやってられんくなるよ
インターフェースにしちゃうと、テストモック作んのが面倒くさすぎんのよ
いちおうモックフレームワークみたいなのもあるけど、ありゃプログラミングパズルみたいでマトモじゃない
長くメンテナンスするには疲弊が勝る
そもそもなんでモックが必要になるかって
、OOPでインターフェース使ってDI、なんてことをやるから無駄にオブジェクトの数とオブジェクト間の参照が増えていくからだ
関数なら簡単だ
都合のいいラムダを渡すだけ
関数には無駄なオブジェクトも参照もない
これ以上にシンプルなものはない
これを知ってしまうとOOPなんてやってられんくなるよ
677デフォルトの名無しさん (ワッチョイ bf42-OedE)
2021/05/03(月) 11:37:53.09ID:WvqQmPZG0 まあ1対1のインターフェースは要らないな
複数のクラスを同じ仕組みで扱うときに有効になるものだ
複数のクラスを同じ仕組みで扱うときに有効になるものだ
678デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 11:42:45.35ID:KphYKkJEd 都合の良いラムダを渡すだけ。
そのラムダの引数の型は?
普通ベースクラスかインターフェイスでは?
なんか勘違いしてる気がする。
アセンブリ1つが前提になってる?
そのラムダの引数の型は?
普通ベースクラスかインターフェイスでは?
なんか勘違いしてる気がする。
アセンブリ1つが前提になってる?
679デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 11:45:24.03ID:KphYKkJEd >>677
そりゃそうね。
そりゃそうね。
681デフォルトの名無しさん (エアペラ SD9b-R7/G)
2021/05/03(月) 12:19:41.29ID:US3b2rihD >>680
関数をオーバーライドするってことか?
関数をオーバーライドするってことか?
682デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 12:43:57.15ID:KphYKkJEd どう意味不明なのかマジでわからん。
OOを捨てて関数型推したいのはわかるけど。
IDisposableなんかはどう不要にしていく?
IEnumerableは?
IDbConnectionは不要で、クラスがだけあれば良いって話?
OOを捨てて関数型推したいのはわかるけど。
IDisposableなんかはどう不要にしていく?
IEnumerableは?
IDbConnectionは不要で、クラスがだけあれば良いって話?
683デフォルトの名無しさん (ワッチョイ 2701-jDx3)
2021/05/03(月) 12:48:01.71ID:9l24SOSQ0 >>676
興味あるのですが、参考になるサイトとかありますか?
興味あるのですが、参考になるサイトとかありますか?
684デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/03(月) 12:51:04.01ID:1Sg6AXuHM 初期のC++がCにトランスレートできてたようにクラスやインターフェースなんて無くてもコードは書けるわな
その方が楽とか言うならそれでいいと思う
俺のプロジェクトに関わらない限りは
その方が楽とか言うならそれでいいと思う
俺のプロジェクトに関わらない限りは
685デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/03(月) 13:04:29.64ID:57hGL+DgM >>682
IDisposableとかIEnumerableのような、言語が特別扱いしてるインターフェースを代替することはできない、ないし難しいだろうね
そういう特別なインターフェースを引き合いに出して、インターフェースのほうが優れてると主張することはアンフェアだとも思う
実際きみたち、特別扱いのインターフェースでしか優位性を主張できてないよね?
ちなみにGoだとdeferという構文があって、
いちいち特別なインターフェースの実装を”強いられる”ことなく、破棄関数を遅延実行させることができる
こちらのほうが洗練されてるね
C++だとこれはデストラクタの仕事になる
インターフェース?関係ないね
C#はどういうわけか、破棄関数の遅延実行にIDisposableというインターフェースを選択したが、だからといって、それがインターフェースの優位性を示すということにはならない
IDisposableとかIEnumerableのような、言語が特別扱いしてるインターフェースを代替することはできない、ないし難しいだろうね
そういう特別なインターフェースを引き合いに出して、インターフェースのほうが優れてると主張することはアンフェアだとも思う
実際きみたち、特別扱いのインターフェースでしか優位性を主張できてないよね?
ちなみにGoだとdeferという構文があって、
いちいち特別なインターフェースの実装を”強いられる”ことなく、破棄関数を遅延実行させることができる
こちらのほうが洗練されてるね
C++だとこれはデストラクタの仕事になる
インターフェース?関係ないね
C#はどういうわけか、破棄関数の遅延実行にIDisposableというインターフェースを選択したが、だからといって、それがインターフェースの優位性を示すということにはならない
686デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 13:14:13.33ID:KphYKkJEd >>685
アンフェアでもなんでもない。
IDbConnectionみたいな、何らかのデータベースへのコネクション、を表すものの代替も出来てないよね。
具象クラスでは事足りないし「データベースへ接続する関数を渡すイニシャライザ」からの返り値は同じように、汎用的なインターフェイスにキャストされてないといかん。
Goでもこれはsqlパッケージの中にインターフェイスが定義されてるよね。
と言うか、アセンブリの循環参照もわかってないんじゃないの?
Goのdefer文は破棄の遅延実行ではない。その関数を抜けるときに必ず実行する、だけ。
破棄以外にも使えるんよ。
finally節だと思えば妥当でしょ。
アンフェアでもなんでもない。
IDbConnectionみたいな、何らかのデータベースへのコネクション、を表すものの代替も出来てないよね。
具象クラスでは事足りないし「データベースへ接続する関数を渡すイニシャライザ」からの返り値は同じように、汎用的なインターフェイスにキャストされてないといかん。
Goでもこれはsqlパッケージの中にインターフェイスが定義されてるよね。
と言うか、アセンブリの循環参照もわかってないんじゃないの?
Goのdefer文は破棄の遅延実行ではない。その関数を抜けるときに必ず実行する、だけ。
破棄以外にも使えるんよ。
finally節だと思えば妥当でしょ。
687デフォルトの名無しさん (ワッチョイ df52-FRJu)
2021/05/03(月) 13:30:48.18ID:QO7vn18f0 >>685
特別扱いされているinterfaceが例にあげられたのはそれがよく知られたinterfaceの一例というだけの話であって、特別扱いされていることは本筋ではないだろう
特別扱いされているinterfaceが例にあげられたのはそれがよく知られたinterfaceの一例というだけの話であって、特別扱いされていることは本筋ではないだろう
688デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/03(月) 13:44:29.08ID:57hGL+DgM689デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 14:15:02.88ID:KphYKkJEd >>688
シグニチャが同じなら、引数も戻り値も同じなんよね。
DBごとに違うコネクションをどう表現するの?
GoでもDriverインターフェイスでさばくよね。DB。
具象クラスのメソッドが呼びたい時はアサーションするよね、
シグニチャが同じなら、引数も戻り値も同じなんよね。
DBごとに違うコネクションをどう表現するの?
GoでもDriverインターフェイスでさばくよね。DB。
具象クラスのメソッドが呼びたい時はアサーションするよね、
690デフォルトの名無しさん (ワッチョイ 87b0-OedE)
2021/05/03(月) 14:23:09.97ID:el9v2bCt0 無駄をなくしたとかシンプルにしたとか言ってるけど、言語仕様側で受け持ってた制約を無駄と評して人任せにしただけに感じてしまう
>666で言われてるけど
>666で言われてるけど
691デフォルトの名無しさん (ワッチョイ 672f-zL94)
2021/05/03(月) 14:28:16.36ID:LjFlj8XQ0 その関数のシグニチャを定義して強制するのがインターフェイスじゃないのかね
692デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 14:43:05.66ID:KphYKkJEd そう。結局インターフェイスのこと言ってるの。基底になるオブジェクトとかそういう話になるだろうけど。
定義場所の問題。
そんで、それを定義だけ外に出せないのが問題だと俺は思う。
定義場所の問題。
そんで、それを定義だけ外に出せないのが問題だと俺は思う。
693デフォルトの名無しさん (ワッチョイ bfde-wijr)
2021/05/03(月) 15:09:53.18ID:JDQ36HZh0 >>682
それを許すならコールバックのがいいなー
結局、実装見てみないとそいつらってわかんなくない?
MSが作ったメソッドなら実装されているだろう多分って言えるけど
それって組む人間の信頼性の話でさ
昔のデバイスコンテキストみたいに
え?解放されてんの?されてないの?
どっち?
みたいなのソースから無駄にわからんじゃん
こういうの欠陥品として捨てていくべきだと思うよ俺は
それを許すならコールバックのがいいなー
結局、実装見てみないとそいつらってわかんなくない?
MSが作ったメソッドなら実装されているだろう多分って言えるけど
それって組む人間の信頼性の話でさ
昔のデバイスコンテキストみたいに
え?解放されてんの?されてないの?
どっち?
みたいなのソースから無駄にわからんじゃん
こういうの欠陥品として捨てていくべきだと思うよ俺は
694デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/03(月) 15:24:55.90ID:KphYKkJEd >>693
コールバックはどうかなぁ。
それこそ、呼んでくれるかどうかわからんくない?
例外のハンドリングがいよいよ大変になるから、async awaitみたいにうまく隠蔽してくれる方が良いかなぁ。
確かにまぁ、開放したはずが開放できてなくて再起動するはめになったりしたし、わからんでもないけど、それこそIDisposableなんかでハンドリングした方が良いんじゃないかな。
コールバックはどうかなぁ。
それこそ、呼んでくれるかどうかわからんくない?
例外のハンドリングがいよいよ大変になるから、async awaitみたいにうまく隠蔽してくれる方が良いかなぁ。
確かにまぁ、開放したはずが開放できてなくて再起動するはめになったりしたし、わからんでもないけど、それこそIDisposableなんかでハンドリングした方が良いんじゃないかな。
695デフォルトの名無しさん (ワッチョイ bfde-wijr)
2021/05/03(月) 15:33:42.40ID:JDQ36HZh0 >>694
ぶっちゃけよんでるかどうかわからんのは退化だと思う
ぶっちゃけよんでるかどうかわからんのは退化だと思う
696デフォルトの名無しさん (ワッチョイ ff02-OuAg)
2021/05/03(月) 16:10:09.16ID:bSPfVkbS0 デリゲートvsインターフェースの戦いはつまるところ気軽に使いたい派vs丁寧に型付けしたい派の宗教戦争なのだろうな
JavaのFunctional Interface、TypeScriptのStructural Subtyping、オブジェクトリテラルがあれば両陣営とも納得すると思われる
JavaのFunctional Interface、TypeScriptのStructural Subtyping、オブジェクトリテラルがあれば両陣営とも納得すると思われる
697デフォルトの名無しさん (アウアウウー Saab-TNk6)
2021/05/03(月) 17:27:13.66ID:NFEIEsrVa698デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/03(月) 18:11:29.08ID:MrRb6D/k0 単純に、7割位のケースで有効な方法が、銀の弾丸な気がする時期じゃない?
Interfaceなり、型クラスなり、トレイトなり、定義と実装を分離する方法は色々だけど、どの言語でも完全に無くなってない事はゆっくり考えたらわかると思うんだけど。
どっちも出来ればいいんよ。
関数型も良いけど、世の中の殆どは状態を持っているんだから、結局モナドなんかを持ち出すぐらいなら手続き型でデータドリブンぐらいでバランスが良いとか、Entityクラスを軸にするんだ、とか、色んな考え方もあるわけだし。
Interfaceなり、型クラスなり、トレイトなり、定義と実装を分離する方法は色々だけど、どの言語でも完全に無くなってない事はゆっくり考えたらわかると思うんだけど。
どっちも出来ればいいんよ。
関数型も良いけど、世の中の殆どは状態を持っているんだから、結局モナドなんかを持ち出すぐらいなら手続き型でデータドリブンぐらいでバランスが良いとか、Entityクラスを軸にするんだ、とか、色んな考え方もあるわけだし。
699デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 00:13:22.42ID:9VBk1Szv0 循環参照だけど、例えば、FileLoggerと、StreamWriterみたいなクラスがあるとして、両方別アセンブリになってて、
FileLoggerはStreamWriterを使ってログ出力する事もできる、とすんじゃん?
で、
ここまでは普通にビルドできる。
StreamWriterもログを出力することになって、FileLoggerを使うことにするとすんじゃん?
前回の結果からの増分コンパイルはできるけど、クリーンビルドは出来なくなるよね。
結局は、最低IWriterなりILoggerなりとして、どちらかを定義と実装に分けておいて、
具象クラスをコンストラクタなり、ラムダを渡す初期化関数なりで渡すしか無くなると思うんだが。
ベースクラスと派生クラスにしておいて、ジェネリクス使えばそれで良いのでインターフェイスは要らない、と言うのは一見それで良さそうに見えるけど、
今度はダイアモンド継承になるから、WriterでありLoggerであるものが作れない。
関数型と排他の存在ではないと思うよ。
嫌いなら、必要悪ぐらいに思っといたら?
FileLoggerはStreamWriterを使ってログ出力する事もできる、とすんじゃん?
で、
ここまでは普通にビルドできる。
StreamWriterもログを出力することになって、FileLoggerを使うことにするとすんじゃん?
前回の結果からの増分コンパイルはできるけど、クリーンビルドは出来なくなるよね。
結局は、最低IWriterなりILoggerなりとして、どちらかを定義と実装に分けておいて、
具象クラスをコンストラクタなり、ラムダを渡す初期化関数なりで渡すしか無くなると思うんだが。
ベースクラスと派生クラスにしておいて、ジェネリクス使えばそれで良いのでインターフェイスは要らない、と言うのは一見それで良さそうに見えるけど、
今度はダイアモンド継承になるから、WriterでありLoggerであるものが作れない。
関数型と排他の存在ではないと思うよ。
嫌いなら、必要悪ぐらいに思っといたら?
700デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 00:35:29.27ID:M19mZJ1ZM Action<string> logなりAction<string> writeLineなり必要な関数を引数で渡すだけ
FileLoggerをリビルドするのはFileLoggerを変えた時だけ
StreamWriterをリビルドするのはStreamWriterを変えた時だけ
どちらもコアライブラリであるActionにしか依存しないので常に単体でクリーンビルド可能
FileLoggerをリビルドするのはFileLoggerを変えた時だけ
StreamWriterをリビルドするのはStreamWriterを変えた時だけ
どちらもコアライブラリであるActionにしか依存しないので常に単体でクリーンビルド可能
701デフォルトの名無しさん (ワッチョイ df01-i6Oo)
2021/05/04(火) 01:22:47.37ID:DanBAz9l0 >>699
受け渡しする関数のシグニチャ(=デリゲートの型)が
メソッド1つだけのインターフェースと同じ働きをするので
IWriterやILoggerがメソッドを1つしか持たないなら高階関数で処理したほうが適切な可能性もあるよ
map/filter/reduceのように毎回一つ一つの関数を渡すのが便利なものと
リポジトリのように事前に定義された一連の機能セットに互換の型を利用することで
クライアントコードは実装の詳細を気にせず使うほうが便利なものとそれぞれある
比較関数を毎回渡してソートする方式とIComparableを使ってソートする方式の違い
どういう種類の仕様変更に対してどこまで影響が波及するかを比較して考えるといいかも
受け渡しする関数のシグニチャ(=デリゲートの型)が
メソッド1つだけのインターフェースと同じ働きをするので
IWriterやILoggerがメソッドを1つしか持たないなら高階関数で処理したほうが適切な可能性もあるよ
map/filter/reduceのように毎回一つ一つの関数を渡すのが便利なものと
リポジトリのように事前に定義された一連の機能セットに互換の型を利用することで
クライアントコードは実装の詳細を気にせず使うほうが便利なものとそれぞれある
比較関数を毎回渡してソートする方式とIComparableを使ってソートする方式の違い
どういう種類の仕様変更に対してどこまで影響が波及するかを比較して考えるといいかも
702デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 07:53:17.60ID:9VBk1Szv0 >>700
Action<string>が、どう「ログ出力関数」になるわけ?
そんな漠然としたシグニチャになるわけ無いでしょ。
百歩譲ってAction<LogInfo>だろう。
ログレベルとか発生場所とか全部プリミティブで渡すの?ってのが、>>653だよ。そのログ出力内容が変わったらシグニチャ全部変えてくの?
>>701
うーん、まあ、それもまた然りかな。
一つしか持たないインターフェイスはたしかにそうかもしれん。
俺のイメージはLoggerもWriterも、状態を持たざるを得ないイメージだったので、IDisposableも一緒に持つイメージだった。
ログレベルとか、開いてるファイルと書き込み状態とか。マルチスレッドだとうまく排他しないとログが乱れるから。
IWriterもILoggerも、もう少しメソッドを持つイメージかな。
頑張ればLoggerは一つのメソッドでいけるかもしれないけど、LogLevelみたいなLogger側にEnumは持たせないといかんかも。
DIするなら、ILoggerの方が楽だと思う。
Action<string>が、どう「ログ出力関数」になるわけ?
そんな漠然としたシグニチャになるわけ無いでしょ。
百歩譲ってAction<LogInfo>だろう。
ログレベルとか発生場所とか全部プリミティブで渡すの?ってのが、>>653だよ。そのログ出力内容が変わったらシグニチャ全部変えてくの?
>>701
うーん、まあ、それもまた然りかな。
一つしか持たないインターフェイスはたしかにそうかもしれん。
俺のイメージはLoggerもWriterも、状態を持たざるを得ないイメージだったので、IDisposableも一緒に持つイメージだった。
ログレベルとか、開いてるファイルと書き込み状態とか。マルチスレッドだとうまく排他しないとログが乱れるから。
IWriterもILoggerも、もう少しメソッドを持つイメージかな。
頑張ればLoggerは一つのメソッドでいけるかもしれないけど、LogLevelみたいなLogger側にEnumは持たせないといかんかも。
DIするなら、ILoggerの方が楽だと思う。
703デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 08:02:02.52ID:9VBk1Szv0 なんか「こうすると後始末が楽」ってのと、「これてもできる」ってのは違うと思うんだが。
Action<string>とかAction<int,string,string>みたいなものでログ出力関数をロガーとして関数に突っ込むのは「これでもできる」側としか思えんのだ。
それでホントに改修も含めた総工数が下がるとも思えないし、
確かに今風だけどメリットはすごく薄いし、
合理的かと言われたら俺は違うって言いそう。
Action<string>とかAction<int,string,string>みたいなものでログ出力関数をロガーとして関数に突っ込むのは「これでもできる」側としか思えんのだ。
それでホントに改修も含めた総工数が下がるとも思えないし、
確かに今風だけどメリットはすごく薄いし、
合理的かと言われたら俺は違うって言いそう。
704デフォルトの名無しさん (スププ Sdff-BL7Q)
2021/05/04(火) 08:21:09.46ID:YPdSU1M4d 意味不明と言い続けてたのも、
全く解決になってない方法をゴリ押しすんのも、
もしかして、OOP・Interfaceが不要と思ってるんではなくて、OOP・Interfaceの考え方とか活用法を理解できてない?
>>666
本当にこれなのかな。
全く解決になってない方法をゴリ押しすんのも、
もしかして、OOP・Interfaceが不要と思ってるんではなくて、OOP・Interfaceの考え方とか活用法を理解できてない?
>>666
本当にこれなのかな。
705デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 09:40:15.42ID:/WM42vypM >>702
stringでもLogInfoでもなんでも好きにしなよ
お前ずっと反論がズレまくってんだよなぁ
ただの例示のコードスニペットの重箱の隅をつついて本質に触れないのは、ワザと話をそらそうとしてんのかな?
業務で書いてるコードじゃねえんだから、細かいとこは省略してエッセンスだけ書くに決まってんだろ
>>703
これでもできるじゃなく、そのほうが楽でわかりやすい、な
DIなどでおなじみの大量生産される型定義、プライベート変数定義、コンストラクタ定義が消えてスッキリ
コードの可読性を著しく下げる予測困難なコード≒隠蔽されたコード、長いスコープ変数(メンバ変数)などが消えてスッキリ
前にも書いたが、テストしやすくてスッキリ
>>704
いや真面目に、俺が意味不明ってつけたレスは、本当に意味不明だよ
頼むから、わかる日本語で書いてくれ
ちなみに俺も昔は、OOP信者でもちろんインターフェースも大好きだった
デザインパターンを1つ学んでは、一喜一憂してたのもいい思い出だ
ま、知識をアップデートしようってことだな
stringでもLogInfoでもなんでも好きにしなよ
お前ずっと反論がズレまくってんだよなぁ
ただの例示のコードスニペットの重箱の隅をつついて本質に触れないのは、ワザと話をそらそうとしてんのかな?
業務で書いてるコードじゃねえんだから、細かいとこは省略してエッセンスだけ書くに決まってんだろ
>>703
これでもできるじゃなく、そのほうが楽でわかりやすい、な
DIなどでおなじみの大量生産される型定義、プライベート変数定義、コンストラクタ定義が消えてスッキリ
コードの可読性を著しく下げる予測困難なコード≒隠蔽されたコード、長いスコープ変数(メンバ変数)などが消えてスッキリ
前にも書いたが、テストしやすくてスッキリ
>>704
いや真面目に、俺が意味不明ってつけたレスは、本当に意味不明だよ
頼むから、わかる日本語で書いてくれ
ちなみに俺も昔は、OOP信者でもちろんインターフェースも大好きだった
デザインパターンを1つ学んでは、一喜一憂してたのもいい思い出だ
ま、知識をアップデートしようってことだな
706デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 10:04:47.13ID:9VBk1Szv0 >>705
あのさあ。ホントにズレまくってるのそっちなのよ。
逸らそうとしてるんじゃなくて、業務で使うようなコードで、イニシャライザに任意の関数を渡すスタイル「のみ」でうまく行ったパターンは無いし、どのみちその関数のシグニチャは定義することになるんよ。
Kestrelでセルフホストする時に、どちらの方法も使うことになるけど、インターフェイスを受ける、具象クラスを返すラムダで初期化したりするよね。
GenericHostBuilderExtensions.ConfigureWebHostDefaults(IHostBuilder, Action<IWebHostBuilder>
とかもそうじゃない?
スッキリはしないよ。はっきり言って。
知識はアップデートしてるつもりだが、だからこそ、高階関数で万事解決だとは思ってない。
なんでも高階関数でやればスッキリする、依存を減らそう、呼んでほしいロジックは渡せば良いんだ、って発想は一時期かぶれたけど、
結局、相互に依存してるのと変わらんことに気づいた。
別にそれ自体がテスタブルでもなんでもない。
結果的にテスタブルになっただけであって、同じように気をつけてInterface使えばどちらもテスタブルになる。
あのさあ。ホントにズレまくってるのそっちなのよ。
逸らそうとしてるんじゃなくて、業務で使うようなコードで、イニシャライザに任意の関数を渡すスタイル「のみ」でうまく行ったパターンは無いし、どのみちその関数のシグニチャは定義することになるんよ。
Kestrelでセルフホストする時に、どちらの方法も使うことになるけど、インターフェイスを受ける、具象クラスを返すラムダで初期化したりするよね。
GenericHostBuilderExtensions.ConfigureWebHostDefaults(IHostBuilder, Action<IWebHostBuilder>
とかもそうじゃない?
スッキリはしないよ。はっきり言って。
知識はアップデートしてるつもりだが、だからこそ、高階関数で万事解決だとは思ってない。
なんでも高階関数でやればスッキリする、依存を減らそう、呼んでほしいロジックは渡せば良いんだ、って発想は一時期かぶれたけど、
結局、相互に依存してるのと変わらんことに気づいた。
別にそれ自体がテスタブルでもなんでもない。
結果的にテスタブルになっただけであって、同じように気をつけてInterface使えばどちらもテスタブルになる。
707デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/05/04(火) 10:37:19.27ID:x7uRD8HC0 まだ集団ウンチしてるのだ…
708デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 10:37:49.24ID:/WM42vypM >>706
既存のフレームワークはまだ追いついてないんだよ
中心的なフレームワークをOOPでインターフェースも使う前提で作っちゃったんだからある程度”使わざるを得ない”のは仕方がない
あとはそこから如何にして脱却していくかだな
依存を排除しようとしてるのに、相互に依存してるんならOOP、関数以前に設計が下手な可能性が高いな
テスタビリティは明らかに関数のほうが上
おぞましいモックオブジェクトの大群に襲われなくて済む
関数ならモックオブジェクトはただのラムダに置き換えられる
テストコードは短く、シンプルに、理解しやすくなり、テストのための黒魔術(モックフレームワーク)への依存関係を完全に断ち切れる
これがいかに素晴らしいことか、業務で真面目にテストを書いたことがあるなら、わかるはずだ
もしわからないなら、本気でテスト書いたことがない”ニワカ”でしょ
既存のフレームワークはまだ追いついてないんだよ
中心的なフレームワークをOOPでインターフェースも使う前提で作っちゃったんだからある程度”使わざるを得ない”のは仕方がない
あとはそこから如何にして脱却していくかだな
依存を排除しようとしてるのに、相互に依存してるんならOOP、関数以前に設計が下手な可能性が高いな
テスタビリティは明らかに関数のほうが上
おぞましいモックオブジェクトの大群に襲われなくて済む
関数ならモックオブジェクトはただのラムダに置き換えられる
テストコードは短く、シンプルに、理解しやすくなり、テストのための黒魔術(モックフレームワーク)への依存関係を完全に断ち切れる
これがいかに素晴らしいことか、業務で真面目にテストを書いたことがあるなら、わかるはずだ
もしわからないなら、本気でテスト書いたことがない”ニワカ”でしょ
709デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 10:52:23.31ID:9VBk1Szv0 >>708
追いついてないわけではなくて、現実見てるんじゃん。
結局、相手方にラムダなり関数なりの自分の一部分を「呼ばせる」仕組みになるのであれば、それは結局は依存してるのと同義だと思うぞ、俺は。見た目上依存が排除できてるようには見えるけど。
モックオブジェクトの作り方が悪いのでは?
結局、短くて大量のラムダに襲われるだけだし。
モックフレームワークとか開発の規模感にあってなかっただけではなかろうか。
別に俺は、完全にラムダを渡すスタイルが悪いと言ってるんじゃないんよ。
インターフェイスは必要な部分では必ず必要って言ってるだけであって。
インターフェイスと拡張メソッドでめちゃくちゃ効率的にできる事もあるし、抽象的に扱う必要があるものはある。
IDbConnectionをどういう関数にするかまだ答え貰ってないけど、どうするつもり?
宗教戦争じみてきたけど、絶対にインターフェイスは要らないって言いたいだけ?
追いついてないわけではなくて、現実見てるんじゃん。
結局、相手方にラムダなり関数なりの自分の一部分を「呼ばせる」仕組みになるのであれば、それは結局は依存してるのと同義だと思うぞ、俺は。見た目上依存が排除できてるようには見えるけど。
モックオブジェクトの作り方が悪いのでは?
結局、短くて大量のラムダに襲われるだけだし。
モックフレームワークとか開発の規模感にあってなかっただけではなかろうか。
別に俺は、完全にラムダを渡すスタイルが悪いと言ってるんじゃないんよ。
インターフェイスは必要な部分では必ず必要って言ってるだけであって。
インターフェイスと拡張メソッドでめちゃくちゃ効率的にできる事もあるし、抽象的に扱う必要があるものはある。
IDbConnectionをどういう関数にするかまだ答え貰ってないけど、どうするつもり?
宗教戦争じみてきたけど、絶対にインターフェイスは要らないって言いたいだけ?
710デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 10:56:22.23ID:/WM42vypM 実を言うとね
関数には様々な利点があるわけだけど、それらの利点がもし全くなかったとしても
この”テストコードの生産性の向上”だけが理由でも、俺は関数に取り組むべきだと考えてる
レガシーコードとはテストのないコードのことだ、とは有名なフレーズだが、心から同意する
テストコード生産性の低いOOPは、レガシーコード予備軍と言ってもいい
モックフレームワークは本当に君たちの良き友人だろうか?
よく考えてみてほしい
関数には様々な利点があるわけだけど、それらの利点がもし全くなかったとしても
この”テストコードの生産性の向上”だけが理由でも、俺は関数に取り組むべきだと考えてる
レガシーコードとはテストのないコードのことだ、とは有名なフレーズだが、心から同意する
テストコード生産性の低いOOPは、レガシーコード予備軍と言ってもいい
モックフレームワークは本当に君たちの良き友人だろうか?
よく考えてみてほしい
711デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 11:18:30.42ID:9VBk1Szv0 そもそも論だが、モックフレームワーク自体がまず必須ではない。
インターフェイスを満たしていればそれで良い。
依存性の注入をしはじめるとそりゃモックは作る必要があるかもしれないが、フレームワークを使う必要は無い。
そもそもそれは関数やラムダを渡す方法でも同じ。もちろん関数やラムダのテストはするよね。それが、結局依存してるって言ってるの。注入してるからあたり前よね。
なんか嫌な記憶があるんだろうけど、インターフェイスという概念が完全に使い物にならなかったら、世間はそう変わっていってる。でも、どの言語にもあるよね。型クラスだったり、少しずつ実現方法が変わることはあっても。
自分の使い方が悪いのを、ものが悪いと言うのはよろしくないぞ。
インターフェイスを満たしていればそれで良い。
依存性の注入をしはじめるとそりゃモックは作る必要があるかもしれないが、フレームワークを使う必要は無い。
そもそもそれは関数やラムダを渡す方法でも同じ。もちろん関数やラムダのテストはするよね。それが、結局依存してるって言ってるの。注入してるからあたり前よね。
なんか嫌な記憶があるんだろうけど、インターフェイスという概念が完全に使い物にならなかったら、世間はそう変わっていってる。でも、どの言語にもあるよね。型クラスだったり、少しずつ実現方法が変わることはあっても。
自分の使い方が悪いのを、ものが悪いと言うのはよろしくないぞ。
712デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 11:19:32.83ID:/WM42vypM >>709
短くて大量のモックラムダの定義は常にテストと共にあり、全てが目に見えて、嘘も隠し事もなく、理解容易だ
モックオブジェクトの大群は全てが隠蔽されており、その実体はお世辞にも理解しやすいとは言えない黒魔術で構成されている
モックオブジェクトを扱う人間はモックオブジェクト独特の世界観を深く理解し、信仰しなければならない
僕らはただ楽に単純明快なテストを書きたいだけなのに…
短くて大量のモックラムダの定義は常にテストと共にあり、全てが目に見えて、嘘も隠し事もなく、理解容易だ
モックオブジェクトの大群は全てが隠蔽されており、その実体はお世辞にも理解しやすいとは言えない黒魔術で構成されている
モックオブジェクトを扱う人間はモックオブジェクト独特の世界観を深く理解し、信仰しなければならない
僕らはただ楽に単純明快なテストを書きたいだけなのに…
713デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 11:23:09.70ID:9VBk1Szv0 >>712
自分で作れば、モックオブジェクトも別に隠蔽されてないし、理解しづらくも無いんだが。
必要十分なものを作れば良いと思うよ。
なんかフレームワークに振り回された思い出があるの?
それは俺にもあるからわからんでもない。
自分で作れば、モックオブジェクトも別に隠蔽されてないし、理解しづらくも無いんだが。
必要十分なものを作れば良いと思うよ。
なんかフレームワークに振り回された思い出があるの?
それは俺にもあるからわからんでもない。
714デフォルトの名無しさん (ワッチョイ a7e3-OedE)
2021/05/04(火) 11:27:48.16ID:XePiVdwm0 これ回線2つ使った自演芸やんけ
せめて文体変えようよ・・・
せめて文体変えようよ・・・
715デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 11:28:41.29ID:/WM42vypM >>711
何故モックフレームワークのような出来損ないが、世の人々にありがたがられているか理解してる?
モックフレームワークを使わなければいいと、言うだけなら簡単だよ
でもねその代償に今度は、大量のモッククラスを書かなければならなくなるんだ
世の人々はそんな大量のモッククラスを書くのは嫌だ、ということでモックフレームワークを作ったんだ
苦肉の策だったんだろうけど、世の人々は薄々疑問を感じながらも自分を納得させてモックフレームワークを受け入れた
大量のクラスを書くよりは、たぶんマシだから
さてなんでこうなってしまったか、根本原因はもうわかるね?
依存性分離のためにインターフェースを採用しちゃったからだよ
インターフェースに実装を与えるのは、関数と比べるとものすごい労力かかるんだね
何故モックフレームワークのような出来損ないが、世の人々にありがたがられているか理解してる?
モックフレームワークを使わなければいいと、言うだけなら簡単だよ
でもねその代償に今度は、大量のモッククラスを書かなければならなくなるんだ
世の人々はそんな大量のモッククラスを書くのは嫌だ、ということでモックフレームワークを作ったんだ
苦肉の策だったんだろうけど、世の人々は薄々疑問を感じながらも自分を納得させてモックフレームワークを受け入れた
大量のクラスを書くよりは、たぶんマシだから
さてなんでこうなってしまったか、根本原因はもうわかるね?
依存性分離のためにインターフェースを採用しちゃったからだよ
インターフェースに実装を与えるのは、関数と比べるとものすごい労力かかるんだね
716デフォルトの名無しさん (ワッチョイ 0778-OedE)
2021/05/04(火) 11:29:07.24ID:F3N+oY4e0 ID:9VBk1Szv0
ID:/WM42vypM
いい加減議論スレへ行け
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
ID:/WM42vypM
いい加減議論スレへ行け
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
717デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 11:30:27.06ID:9VBk1Szv0718デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 11:34:02.42ID:/WM42vypM >>713
僕らはテストを書きたいんだ
大量のモッククラスを書きたいわけでもない
モックフレームワークを自作したいわけでもない
モックフレームワークを利用して疲弊したいわけでもない
僕らはただたんにテストを書きたいんだ
僕らはテストを書きたいんだ
大量のモッククラスを書きたいわけでもない
モックフレームワークを自作したいわけでもない
モックフレームワークを利用して疲弊したいわけでもない
僕らはただたんにテストを書きたいんだ
719デフォルトの名無しさん (ワッチョイ bfde-wijr)
2021/05/04(火) 11:42:00.80ID:5c9CWd/c0 ま、インターフェースなんかいらんな
データベースが当たり前になってきた頃からインターフェースを積極的に使うやつは確実に減ってきた
だってこれやっぱテーブルにしにくいじゃん
いやね
差分だけ本当にまとまってるならそういう手もありなんだけど
実際は虫食い状態の共通部と固有部分を分けるのって現実的じゃないと思うんだよね
データベースが当たり前になってきた頃からインターフェースを積極的に使うやつは確実に減ってきた
だってこれやっぱテーブルにしにくいじゃん
いやね
差分だけ本当にまとまってるならそういう手もありなんだけど
実際は虫食い状態の共通部と固有部分を分けるのって現実的じゃないと思うんだよね
720デフォルトの名無しさん (ワッチョイ 8763-OedE)
2021/05/04(火) 12:03:51.01ID:UFmf8yJF0 属性のメリットが全然わからなくてとまどってる
obsoleteなど例外を除いて、summaryなどと違って参照時に開発者側へメッセージを呼び出すわけじゃないんだな
obsoleteのような開発時のエラーメッセージの表示を条件分岐したかったけど見当たらないし、obsolete自体が継承できないときた
メソッドの代わりとして使うしかないのか?
obsoleteなど例外を除いて、summaryなどと違って参照時に開発者側へメッセージを呼び出すわけじゃないんだな
obsoleteのような開発時のエラーメッセージの表示を条件分岐したかったけど見当たらないし、obsolete自体が継承できないときた
メソッドの代わりとして使うしかないのか?
721デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 12:09:41.03ID:9VBk1Szv0 >>720
組み込み属性以外だと、リフレクションでメソッドなりクラスなりを探すときに、特定のAttributeがついてるものを対象にしたり、呼び出し元に特定のAttributeがついてるかをコールスタックから探したりするためのものでは?
あとはAttributeUsageAttributeで制限かけたりかなぁ。
組み込み属性以外だと、リフレクションでメソッドなりクラスなりを探すときに、特定のAttributeがついてるものを対象にしたり、呼び出し元に特定のAttributeがついてるかをコールスタックから探したりするためのものでは?
あとはAttributeUsageAttributeで制限かけたりかなぁ。
722デフォルトの名無しさん (テテンテンテン MM8f-GPK9)
2021/05/04(火) 12:36:44.27ID:rb0F5K+LM 属性は、
EntityFrameworkとかASPNETとか属性利用ありきのライブラリを使ったり自作したりしない限り
特にメリットなんてないという理解でいいと思う
逆に言えばそういうライブラリを使うときに初めて意味を持つんで
ひとまず書き方使い方だけ頭の片隅にいれておけば十分
EntityFrameworkとかASPNETとか属性利用ありきのライブラリを使ったり自作したりしない限り
特にメリットなんてないという理解でいいと思う
逆に言えばそういうライブラリを使うときに初めて意味を持つんで
ひとまず書き方使い方だけ頭の片隅にいれておけば十分
723デフォルトの名無しさん (ワッチョイ 8763-OedE)
2021/05/04(火) 13:01:40.29ID:UFmf8yJF0724デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 13:41:23.71ID:p57xGa3RM >>720
属性はメタプログラミングで利用するもの
C#ではダイナミックに型情報にアクセスすることできるが、属性はその型情報に”お好みのラベル”を付与するための機構だ
ただラベルを貼り付けるだけではなんの意味もない
ラベルを解釈して振る舞いを変えるクライアントプログラムを作ることで、初めて属性に意味が生じる
同じ事をあちこちでやってるけど、クラスや関数など従来の言語基盤ではモジュール化しにくいもの
いわゆるアスペクトというものをモジュール化するための道具として使われることが多い
またIDEを初めとする周辺ツールなどからも参照できるためツールの拡張などに使われることも多い
はっきり言って泥臭い、洗練された機構ではないのでメンテナンスは大変だが、ただの利用者の立場では便利なものだ
python、TypeScriptなどでは属性より柔軟性は低いものの十分な効果が得られ、より理解、実装が容易なデコレータというアイデアが導入された(ちなみにこれは関数を受け取り関数を返す関数だ)
C#にもデコレータがあれば良いのだが……まだまだ遅れてるね
属性はメタプログラミングで利用するもの
C#ではダイナミックに型情報にアクセスすることできるが、属性はその型情報に”お好みのラベル”を付与するための機構だ
ただラベルを貼り付けるだけではなんの意味もない
ラベルを解釈して振る舞いを変えるクライアントプログラムを作ることで、初めて属性に意味が生じる
同じ事をあちこちでやってるけど、クラスや関数など従来の言語基盤ではモジュール化しにくいもの
いわゆるアスペクトというものをモジュール化するための道具として使われることが多い
またIDEを初めとする周辺ツールなどからも参照できるためツールの拡張などに使われることも多い
はっきり言って泥臭い、洗練された機構ではないのでメンテナンスは大変だが、ただの利用者の立場では便利なものだ
python、TypeScriptなどでは属性より柔軟性は低いものの十分な効果が得られ、より理解、実装が容易なデコレータというアイデアが導入された(ちなみにこれは関数を受け取り関数を返す関数だ)
C#にもデコレータがあれば良いのだが……まだまだ遅れてるね
725デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 13:55:11.06ID:9VBk1Szv0 デコレータと属性は目的も実態も全く違うものだろ。
726デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:02:18.42ID:p57xGa3RM 同じものってどこかに書いたっけ?
属性とはこういうものだ
他の言語では(アスペクトの実装手段として)より洗練されたデコレータというものがあっていいなあ
という文脈だが?
属性とはこういうものだ
他の言語では(アスペクトの実装手段として)より洗練されたデコレータというものがあっていいなあ
という文脈だが?
727デフォルトの名無しさん (ワントンキン MMbf-tZna)
2021/05/04(火) 14:05:17.38ID:geYLSs/TM で、デコレータでどうやって開発時にObsoleteのようにメッセージを出すんだ?
Pythonみたいなデコレータじゃ実行時にしか出せないだろ
Pythonみたいなデコレータじゃ実行時にしか出せないだろ
728デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:07:36.50ID:p57xGa3RM 俺がいつデコレータで開発時メッセージを出す話をしたのかな?
729デフォルトの名無しさん (ワントンキン MMbf-tZna)
2021/05/04(火) 14:08:07.94ID:EiXw2d7yM お前がじゃなく、質問者がそう言っている
730デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:11:39.63ID:p57xGa3RM 質問者は”属性の有用性が理解できない”と聞いてきてる
Obsoleteはその例でしかない
であるので属性の一般的な説明と用途を説明し
その後に参考としてデコレータを紹介した
Obsoleteはその例でしかない
であるので属性の一般的な説明と用途を説明し
その後に参考としてデコレータを紹介した
731デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:17:24.30ID:p57xGa3RM 質問自体が”開発時メッセージを表示させたい、コントロールしたいがどうすればいいか”だったら、デコレータの話はなかっただろう
732デフォルトの名無しさん (ミカカウィ FFcb-tZna)
2021/05/04(火) 14:17:31.82ID:An0jw/zOF いや質問者はObsoleteのようなことがやりたくて属性を調べたけど結局何ができる機能なのかよく分からなかったと言ってるだろ
この文脈で>>724のように書かれたらデコレータでならやりたいことができると質問者が誤解してもおかしくない
不適切というか意地悪な回答だと思うぞ
この文脈で>>724のように書かれたらデコレータでならやりたいことができると質問者が誤解してもおかしくない
不適切というか意地悪な回答だと思うぞ
733デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:19:16.62ID:p57xGa3RM お前が俺を攻撃したいのはわかったが、もう少し冷静に考えてから攻撃したらどうだ?
毎回、返り討ちにされてはつまらないだろう?
毎回、返り討ちにされてはつまらないだろう?
734デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 14:19:35.90ID:9VBk1Szv0 属性とデコレータは似てるようで全然違うので、同列に扱うのがよくわからん。
TSのreflect-metadataなんかでもわかるように、あれはデコレータで属性を与えるようなものなのよ。
逆にJavaのように属性でデコレータを与えるようなものももちろんある。
javax.decoratorとかな。
属性は属性でデコレータとは本質的に無関係で同列で引き合いに出すものではない。
その言い方してると、Serializableの説明がしにくくなる。
TSのreflect-metadataなんかでもわかるように、あれはデコレータで属性を与えるようなものなのよ。
逆にJavaのように属性でデコレータを与えるようなものももちろんある。
javax.decoratorとかな。
属性は属性でデコレータとは本質的に無関係で同列で引き合いに出すものではない。
その言い方してると、Serializableの説明がしにくくなる。
735デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 14:20:23.79ID:9VBk1Szv0736デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:30:08.24ID:p57xGa3RM >>734
2回目だが同じとは誰も言ってないぞ
(アスペクト指向という)目的を達する手段が複数あり、片方がより洗練されていると言ったんだ
なぜこれで”属性とデコレータが同じものだ”になるのか理解し難い
2回目だが同じとは誰も言ってないぞ
(アスペクト指向という)目的を達する手段が複数あり、片方がより洗練されていると言ったんだ
なぜこれで”属性とデコレータが同じものだ”になるのか理解し難い
737デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 14:35:07.15ID:9VBk1Szv0 >>736
誰もアスペクト指向の話は求めてないし、アスペクト指向にも使えるのは事実だが、アスペクト指向のためだけのものではない。
属性は属性。
Webフレームワークのパンドラとかロガーみたいな、特定のアスペクト指向に使う用途しか知らないならそう言いなよ。
誰もアスペクト指向の話は求めてないし、アスペクト指向にも使えるのは事実だが、アスペクト指向のためだけのものではない。
属性は属性。
Webフレームワークのパンドラとかロガーみたいな、特定のアスペクト指向に使う用途しか知らないならそう言いなよ。
738デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 14:40:27.36ID:9VBk1Szv0 データバリデーションのIndexやRequired、シリアライズのJsonPropertyとかColumnなんかは、別にアスペクト指向として割り込むためのものでも集約するためのものでもない。
XamarinのAndroidのActivityなんかはビルド時にXML産むために定義したり。
XamarinのAndroidのActivityなんかはビルド時にXML産むために定義したり。
739デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 14:41:32.01ID:p57xGa3RM >>737
はぁ…何度目だ?
質問者は明にアスペクト指向の話を求めているわけではないが、属性の有用性についてコメントを求めている
で、あるならば属性の利用形態として大きなウェイトを占めるアスペクト指向について、言及しないわけにはいかない
属性は単なるラベルであり、クライアントによって様々な利用形態が考えられることは、俺が先に説明した通り
はぁ…何度目だ?
質問者は明にアスペクト指向の話を求めているわけではないが、属性の有用性についてコメントを求めている
で、あるならば属性の利用形態として大きなウェイトを占めるアスペクト指向について、言及しないわけにはいかない
属性は単なるラベルであり、クライアントによって様々な利用形態が考えられることは、俺が先に説明した通り
740デフォルトの名無しさん (ワントンキン MMbf-tZna)
2021/05/04(火) 14:44:33.97ID:NgJtJBuAM そうか?
C#で属性使ってアスペクト指向ってあまり一般的じゃないだろ
ヘルスバーグがAOP嫌いなのも有名な話だ
C#で属性使ってアスペクト指向ってあまり一般的じゃないだろ
ヘルスバーグがAOP嫌いなのも有名な話だ
741デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 14:46:49.09ID:9VBk1Szv0 >>739
属性の有用性はそれ以前の問題。
アスペクト指向に属性は実際問題必須ではない。
インターフェイスは要るがなw
単なるラベルであり様々な利用形態が、ってのは、わかってる相手に説明する方法であって、全く知らない人間に対しては何の説明でもない。せめてググるためのワードを出せよ。
属性の有用性はそれ以前の問題。
アスペクト指向に属性は実際問題必須ではない。
インターフェイスは要るがなw
単なるラベルであり様々な利用形態が、ってのは、わかってる相手に説明する方法であって、全く知らない人間に対しては何の説明でもない。せめてググるためのワードを出せよ。
742デフォルトの名無しさん (ワッチョイ df7c-KKDS)
2021/05/04(火) 14:50:23.97ID:wdzHnAM+0 初心者にまったく役に立たない話はここでしなきゃいいのでは?
743デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 14:52:35.33ID:9VBk1Szv0 別にね、アスペクト指向はルールベースでも良いのよ。
Rubyなんかだと命名でフックしたりするようにね。
Rubyなんかだと命名でフックしたりするようにね。
744デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 15:04:03.10ID:p57xGa3RM >>741
属性はAOPに必須ではないが、ないと非常に大雑把な実装になり、挙動のコントロールが難しくなるため、実用上はほぼ必須だよ
太平洋横断に船は必須ではない、と言うようなものだ、最後の旅にならないといいね
いやいや、何もわかってない人にこそ、属性とはただのラベルでしかない、と説明したほうがいい
ただのラベルということを理解してないと、元の質問者のように属性には開発者メッセージを出力したり、色んなことができる、なにか不思議な力がある魔法の道具なのかな、と誤って認識してしまうんだ
1. 属性には本当にラベル以上の意味は何もないし、何もしない
2. 何かするのは、そのラベルを見て処理をするクライアントプログラム
3. 何をするかは、そのクライアントプログラム次第で全く異なる
これが属性の基本の基本な
このシンプルな3つの事実を教えないで、有耶無耶にはぐらかすと、初心者が属性を理解できなくなってしまう
属性はAOPに必須ではないが、ないと非常に大雑把な実装になり、挙動のコントロールが難しくなるため、実用上はほぼ必須だよ
太平洋横断に船は必須ではない、と言うようなものだ、最後の旅にならないといいね
いやいや、何もわかってない人にこそ、属性とはただのラベルでしかない、と説明したほうがいい
ただのラベルということを理解してないと、元の質問者のように属性には開発者メッセージを出力したり、色んなことができる、なにか不思議な力がある魔法の道具なのかな、と誤って認識してしまうんだ
1. 属性には本当にラベル以上の意味は何もないし、何もしない
2. 何かするのは、そのラベルを見て処理をするクライアントプログラム
3. 何をするかは、そのクライアントプログラム次第で全く異なる
これが属性の基本の基本な
このシンプルな3つの事実を教えないで、有耶無耶にはぐらかすと、初心者が属性を理解できなくなってしまう
745デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 15:07:33.04ID:p57xGa3RM ほぼ必須といったのは誤解を生むかもしれないな
デコレータのようなより洗練された機構が無く、AOPをメタプログラミングで実装する以外の選択肢に乏しい言語にとっては、ほぼ必須と訂正しておこう
デコレータのようなより洗練された機構が無く、AOPをメタプログラミングで実装する以外の選択肢に乏しい言語にとっては、ほぼ必須と訂正しておこう
746デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 15:16:46.55ID:9VBk1Szv0 だから、そんな話はしてないの。AOPとか。
デコレータの話が蛇足な上、その根拠のAOPの話が蛇足だったのよ。
属性はただのラベルではない。
誰かが読み取るためのラベル。
それはシリアライザだったり、コンパイラだったり、Webサーバのランタイムだったり様々だけど。
だから、Obsoleteなんかが意味を成すんであって。
現実的にC#の属性はAOPのためのものではない以上、蛇足そのものでしょ。
だから頭でっかちだと言ってるんだよ。
「ただのラベル」こそ「うやむやにはぐらかしてる」でしょ。
デコレータの話が蛇足な上、その根拠のAOPの話が蛇足だったのよ。
属性はただのラベルではない。
誰かが読み取るためのラベル。
それはシリアライザだったり、コンパイラだったり、Webサーバのランタイムだったり様々だけど。
だから、Obsoleteなんかが意味を成すんであって。
現実的にC#の属性はAOPのためのものではない以上、蛇足そのものでしょ。
だから頭でっかちだと言ってるんだよ。
「ただのラベル」こそ「うやむやにはぐらかしてる」でしょ。
747デフォルトの名無しさん (ワッチョイ 0778-OedE)
2021/05/04(火) 15:18:25.60ID:F3N+oY4e0 ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
748デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 15:18:59.72ID:9VBk1Szv0 じゃああっちで。
749デフォルトの名無しさん (ワッチョイ 7fa7-wijr)
2021/05/04(火) 15:42:18.40ID:vNyUKbw80 デコーダ太郎は責任とってクビ吊れ
750デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 15:43:52.50ID:/UxZFiSCM >>746
>属性はただのラベルではない。
>誰かが読み取るためのラベル。
それをただのラベルっていうんだよ
読み取る側がそのラベルを見て何らかの作用を起こすまではなにもしない
まさにただのラベルだな
>属性はただのラベルではない。
>誰かが読み取るためのラベル。
それをただのラベルっていうんだよ
読み取る側がそのラベルを見て何らかの作用を起こすまではなにもしない
まさにただのラベルだな
751デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 15:54:23.06ID:9VBk1Szv0 >>750
しつこいわ。
しつこいわ。
752デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 16:04:50.31ID:/UxZFiSCM753デフォルトの名無しさん (ワッチョイ e7ad-BL7Q)
2021/05/04(火) 16:08:55.98ID:9VBk1Szv0 お前の理想以外聞き入れないなら、ブーメランでもなんでもないわ。
754デフォルトの名無しさん (ブーイモ MMcf-QYFT)
2021/05/04(火) 16:10:37.11ID:B/7UzgrKM というブーメランなのでした
ちゃんちゃん
ちゃんちゃん
755デフォルトの名無しさん (ワッチョイ df01-i6Oo)
2021/05/04(火) 17:28:51.83ID:DanBAz9l0756デフォルトの名無しさん (オッペケ Sr5b-sT2V)
2021/05/05(水) 09:44:41.21ID:0AxeylkVr 昨日は頭のおかしい人が大活躍してたみたいだな
策っとNGしときましょう
策っとNGしときましょう
757デフォルトの名無しさん (ワッチョイ eaba-dxvU)
2021/05/07(金) 00:21:29.88ID:Oi9dh/iA0 WebClient使ってWebサイトのhtmlを文字列として取得したいんですが、
読み込みに数十秒かかるような重いページだと、途中でエラーします。
そんなページでもエラー無く読み取る方法有りますか?
読み込みに数十秒かかるような重いページだと、途中でエラーします。
そんなページでもエラー無く読み取る方法有りますか?
758デフォルトの名無しさん (ワッチョイ 2ae6-YEtS)
2021/05/07(金) 00:26:59.06ID:xGNvq5Jp0 Irvine
759デフォルトの名無しさん (ワッチョイ eaba-dxvU)
2021/05/07(金) 00:34:48.56ID:Oi9dh/iA0 >>758
それはC#から呼び出して使えますか?
それはC#から呼び出して使えますか?
760デフォルトの名無しさん (ワッチョイ da2d-gUNg)
2021/05/07(金) 00:39:08.58ID:rhVsIWeg0 >>757
HttpClientクラス使った方が良いと思うけど
WebClientクラスの場合は、GetWebRequest()をオーバライドして
WebRequest.TimeoutプロパティとHttpWebRequest.ReadWriteTimeoutプロパティを設定
HttpClientクラス使った方が良いと思うけど
WebClientクラスの場合は、GetWebRequest()をオーバライドして
WebRequest.TimeoutプロパティとHttpWebRequest.ReadWriteTimeoutプロパティを設定
761デフォルトの名無しさん (ワッチョイ eaba-dxvU)
2021/05/07(金) 00:43:50.02ID:Oi9dh/iA0 >>760
ありがとうございます。
>GetWebRequest()をオーバライド
は既に試したんですが、相変わらずエラーで中断します。
>HttpClientクラス使った方が良いと思うけど
それは何故でしょうか?
ありがとうございます。
>GetWebRequest()をオーバライド
は既に試したんですが、相変わらずエラーで中断します。
>HttpClientクラス使った方が良いと思うけど
それは何故でしょうか?
762デフォルトの名無しさん (ワッチョイ bef2-M6Ch)
2021/05/07(金) 02:50:42.19ID:sg0+DWIO0 どんなエラーが出るのよ
763デフォルトの名無しさん (ワッチョイ 7f54-Ulvp)
2021/05/07(金) 03:48:20.57ID:bebMDo2e0 DLしたいサイトのURL教えてもらっただけでだいぶはかどるよね。
764デフォルトの名無しさん (ワッチョイ 6a79-EEf/)
2021/05/07(金) 04:25:10.15ID:Bc+rT72I0 中華から攻撃受けてるときの重いふたばとか
765デフォルトの名無しさん (ワッチョイ 9f5f-DjaX)
2021/05/07(金) 04:39:35.33ID:FF3+CPRk0 デフォルトだとタイムアウトが足りてないだけなんじゃないの?
766デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/07(金) 05:39:50.22ID:LQe9nctZ0 > 途中でエラーします。
エラーしますとか変な日本語使う奴の相手はしない
エラーしますとか変な日本語使う奴の相手はしない
767デフォルトの名無しさん (ワッチョイ 33ad-K+t/)
2021/05/07(金) 08:08:05.60ID:n4YBHC+Y0 エラーいたします。
768デフォルトの名無しさん (ワッチョイ cf33-erDI)
2021/05/07(金) 08:28:13.14ID:96M3luB+0 エラーがございます
769デフォルトの名無しさん (ワッチョイ d35f-O1HG)
2021/05/07(金) 08:44:51.51ID:1BryI6MR0 エラーなさる
770デフォルトの名無しさん (ワッチョイ 73b5-fceI)
2021/05/07(金) 11:18:16.60ID:4XrAAqdx0 エラーになられます
771デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/07(金) 11:23:53.77ID:ckc6TxMx0 エラー仕る
772デフォルトの名無しさん (ブーイモ MM97-tepi)
2021/05/07(金) 12:35:02.79ID:iq1HEmUXM エラー参上
773デフォルトの名無しさん (ワッチョイ fb24-jjtP)
2021/05/07(金) 12:37:58.01ID:RB8Fe90n0 >>764
ふたばってもう誰も見てないだろうけどどんな理由で攻撃してくるの?
ふたばってもう誰も見てないだろうけどどんな理由で攻撃してくるの?
774デフォルトの名無しさん (ワッチョイ 73b5-fceI)
2021/05/07(金) 15:59:09.92ID:4XrAAqdx0 尖閣諸島を渡せ
775デフォルトの名無しさん (ワッチョイ d35f-t4JP)
2021/05/07(金) 18:28:13.92ID:1BryI6MR0 エラー渡し
776デフォルトの名無しさん (ワッチョイ 7eda-9tq9)
2021/05/07(金) 21:30:40.73ID:S8eSOzgY0 エラー呼吸
777デフォルトの名無しさん (ワッチョイ 33ad-KFDE)
2021/05/07(金) 21:31:58.32ID:Bgw7HCHL0 さくらタンのエラー画像キボンヌ
778デフォルトの名無しさん (ワッチョイ 73b5-fceI)
2021/05/08(土) 00:36:51.80ID:onVLUDOF0 (*´Д`)ハァハァ
779デフォルトの名無しさん (アウアウエー Sae2-8hOh)
2021/05/08(土) 11:24:07.14ID:Yiqu4oaaa くだらん
780デフォルトの名無しさん (スプッッ Sd2a-5xeF)
2021/05/08(土) 12:22:03.93ID:oZ/joMMLd #region って使わない方が良いのですか?
プライベートメソッドがたくさんあるとき隠すのは駄目ですか?
プライベートメソッドがたくさんあるとき隠すのは駄目ですか?
781デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/08(土) 12:29:25.27ID:Hz73TWc7M 好きにしたらいいよ
長いコードをリージョンで隠すより
短く書いたほうがいいと思うがね
長いコードをリージョンで隠すより
短く書いたほうがいいと思うがね
782デフォルトの名無しさん (ワッチョイ f3de-wGCM)
2021/05/08(土) 13:33:49.15ID:IqHZyMf20 ウザい
使うメソッドの周辺に置いておいてよ
publicとかprivateでリージョン切るやついるけどセンスの欠片もないな
使うメソッドの周辺に置いておいてよ
publicとかprivateでリージョン切るやついるけどセンスの欠片もないな
783デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 13:41:33.11ID:75Tkj6otd 積極的に使いたいとは思わないな>#region
784デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/08(土) 14:09:56.67ID:CLNCGw4K0 レガシーコード解読してるときに、コメントがてら一先ずregion使った
785デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 14:14:41.59ID:75Tkj6otd #region使わんといけないほどになったらクラス分けてほしいな
実際にはなかなかそういう自由はないかもしれないけど
実際にはなかなかそういう自由はないかもしれないけど
786デフォルトの名無しさん (ワッチョイ f3de-wGCM)
2021/05/08(土) 14:16:26.79ID:HwrhuFxX0 分ける方向がクソなときにウザい
1つのpublicにいくつかのprivateがくっついてるのに
publicやprivateでリージョン切るなや下手クソ
1つのpublicにいくつかのprivateがくっついてるのに
publicやprivateでリージョン切るなや下手クソ
787デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/08(土) 14:18:11.82ID:ub5A9aINa >>780
身もふたもないけど使い方次第だね。
#regionディレクティブはコードを分類するのとあまり見る必要がないコードを隠すのに
使えるけど、後者の使い方はあまり必要がない
自分はデカいクラスでMSのドキュメントみたいにメンバーを種類ごとに分類するのに使ったり、
ある程度以上の規模のFormで例えばメニューのイベントハンドラを分類するのに使ってる
身もふたもないけど使い方次第だね。
#regionディレクティブはコードを分類するのとあまり見る必要がないコードを隠すのに
使えるけど、後者の使い方はあまり必要がない
自分はデカいクラスでMSのドキュメントみたいにメンバーを種類ごとに分類するのに使ったり、
ある程度以上の規模のFormで例えばメニューのイベントハンドラを分類するのに使ってる
788デフォルトの名無しさん (ワッチョイ 6642-jjtP)
2021/05/08(土) 14:21:20.00ID:nusrVvaZ0 拡張のcodemaidで適当に分けてもらう
789デフォルトの名無しさん (ワッチョイ bb4f-DjaX)
2021/05/08(土) 14:21:52.55ID:L+qXSIbq0 private隠す#regionは使うけどな。どのへんがダメ?
790デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/08(土) 14:25:10.15ID:43bBwuymM 隠したくなるということは、隠さないと鬱陶しいぐらい長いコード、ということだから、そのあたりだろうね
791デフォルトの名無しさん (ファミワイ FF97-6gku)
2021/05/08(土) 14:28:22.99ID:/jodR7lWF 呼び出し階層を無視して十把一絡げに「private」だけで括ろうとするのはどうかなとは思う
792デフォルトの名無しさん (ワッチョイ bb4f-DjaX)
2021/05/08(土) 14:34:26.57ID:L+qXSIbq0 コードスメル的な意味かな?具体的に何が悪いのかよくわからんけど。
793デフォルトの名無しさん (ワッチョイ a6da-XZlr)
2021/05/08(土) 14:34:33.08ID:pDWBcfg30 /// <summary>
/// ・・・
/// </summary>
private int mHoge;
/// <summary>
/// ・・・
/// </summary>
public int Hoge { get => 0 == this.mHoge ? 1 : this.mHoge; }
で、それぞれに同じコメント書くのが非常にだるい。
なにかうまい方法ないですか?
/// ・・・
/// </summary>
private int mHoge;
/// <summary>
/// ・・・
/// </summary>
public int Hoge { get => 0 == this.mHoge ? 1 : this.mHoge; }
で、それぞれに同じコメント書くのが非常にだるい。
なにかうまい方法ないですか?
794デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 14:44:03.29ID:75Tkj6otd >>793
コレどう?
<inheritdoc> - C# プログラミング ガイド | Microsoft Docs https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/xmldoc/inheritdoc
コレどう?
<inheritdoc> - C# プログラミング ガイド | Microsoft Docs https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/xmldoc/inheritdoc
795デフォルトの名無しさん (ワッチョイ a6da-XZlr)
2021/05/08(土) 14:50:55.43ID:pDWBcfg30796デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/08(土) 15:26:30.05ID:X8Zwq8nja >>789
privateの意味を誤解してる気が
privateの意味はそのコードを利用する側の人は見る必要がないって意味だよね?
ソースコードを見てる人はその時点で「利用する側」か?
普通は違うよね?書く側の人に対して隠す意味は普通はない。
もちろん「まず見る必要がないから畳んでおきたい」需要が絶対にないとまでは言い切れんとは思うけど。
privateの意味を誤解してる気が
privateの意味はそのコードを利用する側の人は見る必要がないって意味だよね?
ソースコードを見てる人はその時点で「利用する側」か?
普通は違うよね?書く側の人に対して隠す意味は普通はない。
もちろん「まず見る必要がないから畳んでおきたい」需要が絶対にないとまでは言い切れんとは思うけど。
797デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/08(土) 15:28:42.58ID:X8Zwq8nja ちなみに、VSのエディタにはメソッドのシグネチャ以外の部分を畳む機能もあるけど俺はあれは嫌い。
ただの食わず嫌いかもしれないが
ただの食わず嫌いかもしれないが
798デフォルトの名無しさん (ワッチョイ bb4f-DjaX)
2021/05/08(土) 15:42:24.39ID:L+qXSIbq0799デフォルトの名無しさん (ブーイモ MM97-G81e)
2021/05/08(土) 16:10:59.65ID:0QGgEZ+BM 長大なメソッドの中身をregion使って折りたたんだら短く見えるからいいよね
800デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/08(土) 16:27:25.48ID:CLNCGw4K0 コンストラクタとかで引数チェックする場合ってDebug.Asset使う? ifと組み合わせて例外投げる?
801デフォルトの名無しさん (ワッチョイ 3ebb-krZt)
2021/05/08(土) 17:12:49.71ID:6pb9v2QO0 macOSに新しい.NET Core SDK/ .Net 5 SDKを入れ続けていると、何バージョン分もディレクトリが掘られて増えていきます
公式では、いらないものを単純にディレクトリごと削除して良いようなことが指示されていますが、これらのディレクトリのパスをdotnetコマンドに知らせている設定部分はどこにあるのですか?
公式では、いらないものを単純にディレクトリごと削除して良いようなことが指示されていますが、これらのディレクトリのパスをdotnetコマンドに知らせている設定部分はどこにあるのですか?
802デフォルトの名無しさん (スプッッ Sd2a-5xeF)
2021/05/08(土) 17:41:35.40ID:oZ/joMMLd ありがとうございますm(_ _)m
#region は気を付けます
#region は気を付けます
803デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 18:05:57.33ID:jYvDj1vcd >>800
コンストラクタで例外投げたくないな
引数はフィールドにセットするだけでそれ以外は基本しない
検証するなら別のメソッドにするかコンストラクタ隠蔽して検証しつつインスタンス返すstaticなメソッド作る
コンストラクタで例外投げたくないな
引数はフィールドにセットするだけでそれ以外は基本しない
検証するなら別のメソッドにするかコンストラクタ隠蔽して検証しつつインスタンス返すstaticなメソッド作る
804デフォルトの名無しさん (ラクッペペ MMe6-kG12)
2021/05/08(土) 18:15:04.80ID:+DU/XhxNM 20年前に見たような話で頭がくらくらする
805デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 18:24:03.67ID:jYvDj1vcd まあまあ
806デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/08(土) 19:33:57.25ID:6+YQB65FM >>800
普通にifで調べて、普通に例外を投げてくれ
引数がおかしいならArgumentExceptionとか適当なのあるでしょ
引数が増えるとifを書くのがしんどくなるかもしれないが、そのときは関数化しよう
そもそもDebug.Assertは滅多に使わないものと考えていい
デバッグビルドとリリースビルドで挙動が違うというのは、それだけで本番でしか発生しないバグを生みかねないものなので、可能な限り避けるべきだ
コンストラクタで例外を投げたくないとか言ってる人は、気にしなくていい
昔はそういう流派もあったんだな、とでも考えてくれ
普通にifで調べて、普通に例外を投げてくれ
引数がおかしいならArgumentExceptionとか適当なのあるでしょ
引数が増えるとifを書くのがしんどくなるかもしれないが、そのときは関数化しよう
そもそもDebug.Assertは滅多に使わないものと考えていい
デバッグビルドとリリースビルドで挙動が違うというのは、それだけで本番でしか発生しないバグを生みかねないものなので、可能な限り避けるべきだ
コンストラクタで例外を投げたくないとか言ってる人は、気にしなくていい
昔はそういう流派もあったんだな、とでも考えてくれ
807デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/08(土) 19:50:29.55ID:opSybYm9r .net frameworkのコンストラクタでもそうやってた
今のは知らん
今のは知らん
808デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/08(土) 19:57:02.17ID:opSybYm9r コンストラクタで例外投げろ
それ以外はゆるさない
XXX.Create("test");の戻り値nullチェックみたいのはバグの温床だから許さん
それ以外はゆるさない
XXX.Create("test");の戻り値nullチェックみたいのはバグの温床だから許さん
809デフォルトの名無しさん (ワッチョイ 73e3-jjtP)
2021/05/08(土) 20:01:04.70ID:Yl7KxUAk0 UnhandledExceptionの処理やるだろうしコンストラクタで例外投げてもいいと思うけどね
810デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 20:22:02.19ID:jYvDj1vcd 最近はそうなのか
自分も認識改めるわ
自分も認識改めるわ
811デフォルトの名無しさん (ワッチョイ bb01-IK/p)
2021/05/08(土) 20:24:43.64ID:LkrBFLk10 9.0のrecordってデータベースとのやり取りに使うシンプルなクラスには積極的に使っていったほうがええんかね?
812デフォルトの名無しさん (ワッチョイ cb68-dxvU)
2021/05/08(土) 20:46:20.44ID:v+2mVqTb0 単純計算の時間って完全に比例するんですか?
繰り返し処理で
10万回 2桁同士の掛け算を行う。
12万回 2桁同士の掛け算を行う。
これって後者のほうが平均とると必ず時間がかかるんですか?
繰り返し処理で
10万回 2桁同士の掛け算を行う。
12万回 2桁同士の掛け算を行う。
これって後者のほうが平均とると必ず時間がかかるんですか?
813デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/08(土) 20:51:21.18ID:CLNCGw4K0 コンストラクタで例外投げるかどうかは宗教論争感あると思うので棚上げにしてます。質問が悪かったです
自分が聞きたいことはDebugあるいはTraceのAssertメソッドの使い所でした
>>806
使い所ないんですかね
どんな値が渡されるのかわからない関数などは例外処理、その逆(外部に公開しない関数)の値チェックになら使えそうなのかなと思ったんですが
.Net1.1やその前からあるみたいなので、テストフレームワークが流通してないころに使われてた過去の遺産なのかな
自分が聞きたいことはDebugあるいはTraceのAssertメソッドの使い所でした
>>806
使い所ないんですかね
どんな値が渡されるのかわからない関数などは例外処理、その逆(外部に公開しない関数)の値チェックになら使えそうなのかなと思ったんですが
.Net1.1やその前からあるみたいなので、テストフレームワークが流通してないころに使われてた過去の遺産なのかな
814デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/08(土) 22:58:15.52ID:W+LjP6QJ0 >>812
汎用PCの場合
速度なんか測ったって
その場合はそうだったんだろとしか言いようがない
裏でウィルスバスターや
セキュリティソフトや
会社の監視ソフト
WindowsUpdateなど
色んな複合要素がありすぎてみんな速度なんか測るのやめちまったよ
汎用PCの場合
速度なんか測ったって
その場合はそうだったんだろとしか言いようがない
裏でウィルスバスターや
セキュリティソフトや
会社の監視ソフト
WindowsUpdateなど
色んな複合要素がありすぎてみんな速度なんか測るのやめちまったよ
815デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/08(土) 23:37:30.49ID:6+YQB65FM >>813
検証処理が非常に高価な場合はDebug.Assertを使う理由にならんこともないが、そんなことは滅多にないよ
ほとんどの場合、検証は安価であり本番で検証をスルーしてしまうリスクとは比べるまでもない
C言語のようにほんの些細なオーバーヘッドすら嫌うような言語とは考え方が違う
検証処理が非常に高価な場合はDebug.Assertを使う理由にならんこともないが、そんなことは滅多にないよ
ほとんどの場合、検証は安価であり本番で検証をスルーしてしまうリスクとは比べるまでもない
C言語のようにほんの些細なオーバーヘッドすら嫌うような言語とは考え方が違う
816デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/08(土) 23:47:06.02ID:+76Iryda0 そもそもアサーションをいつの段階で期待してんだ
まさか実運用環境をデバッグビルドで走らせるのか
コンストラクタでの例外は、やるなっていう言語が存在するのは確かだが、宗教以前に言語の問題
C#では別に問題なかったはず
まさか実運用環境をデバッグビルドで走らせるのか
コンストラクタでの例外は、やるなっていう言語が存在するのは確かだが、宗教以前に言語の問題
C#では別に問題なかったはず
817デフォルトの名無しさん (ワッチョイ da2d-gUNg)
2021/05/08(土) 23:50:56.30ID:ef0LnTY20 Debug.Assert()はバグってる原因を探る時に、想定通りの値になっているかを確認する時に使うな
確認が終わったらソースから消すけど、万が一消し忘れても影響無いし
Trace.Assert()は使ったことない
確認が終わったらソースから消すけど、万が一消し忘れても影響無いし
Trace.Assert()は使ったことない
818デフォルトの名無しさん (ワッチョイ dabd-6gku)
2021/05/09(日) 00:29:36.29ID:qLvHom4Y0 803だけど昔「コンストラクタで例外投げたりアカンぞ」みたいなことを本で読んだ記憶があったんだがいま読み返したら完全に自分の記憶違いだった 申し訳ない
819デフォルトの名無しさん (ワッチョイ b7e4-vR7S)
2021/05/09(日) 00:51:47.19ID:RBUe6vIe0 職場でExcelVBAとACCESSをある程度動かせるようになったので、ステップアップしてC#を勉強してみたい。
勉強用のサイトやオススメの本などあったら、教えて頂けませんか?
勉強用のサイトやオススメの本などあったら、教えて頂けませんか?
820デフォルトの名無しさん (ワッチョイ cb68-dxvU)
2021/05/09(日) 01:01:53.07ID:6r3obgDk0 2D格闘ゲームって3Dのapiがなくても作成可能ですか?
何か昔っぽいゲームを作りたくなってワクワクしてます。
環境はvisualstudioです。
何か昔っぽいゲームを作りたくなってワクワクしてます。
環境はvisualstudioです。
821デフォルトの名無しさん (ワッチョイ 9f02-dxvU)
2021/05/09(日) 02:07:45.79ID:xtmxe3CZ0 誰か助けて。WebView2を使ったプログラムなんだけど
以前動くやつを作ったプロジェクトを今日久しぶりに触ったら
「System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'」
と出てまったく動かなくなってしまってた… 一行も弄ってないのに
本当に何にも触ってないんだけど一体何が悪いのか。
以前動くやつを作ったプロジェクトを今日久しぶりに触ったら
「System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'」
と出てまったく動かなくなってしまってた… 一行も弄ってないのに
本当に何にも触ってないんだけど一体何が悪いのか。
822デフォルトの名無しさん (ワッチョイ 6a79-EEf/)
2021/05/09(日) 02:15:39.31ID:KIYocDNB0823821 (ワッチョイ 9f02-dxvU)
2021/05/09(日) 02:55:26.73ID:xtmxe3CZ0 原因が分かった。プロジェクトのディレクトリを移動すると動かなくなるみたい。
でも何故なの?どこを修正したら良くなるか誰かおしえて!
でも何故なの?どこを修正したら良くなるか誰かおしえて!
824デフォルトの名無しさん (ワッチョイ 7f54-WEa1)
2021/05/09(日) 03:56:24.54ID:SmU3pbXq0825デフォルトの名無しさん (スププ Sd8a-hETr)
2021/05/09(日) 08:16:13.97ID:Bo6dSg5rd826デフォルトの名無しさん (アウアウクー MM73-+y/8)
2021/05/09(日) 09:32:19.94ID:5OOG3JrHM827デフォルトの名無しさん (ワッチョイ 0b93-/hng)
2021/05/09(日) 09:44:58.83ID:ip1MRNKD0 例外投げちゃいかんのはデストラクタでは
828デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/09(日) 12:02:06.30ID:A+xFAhosa いやコンストラクタで例外投げるな、投げたい時にはファクトリーメソッドを使え、
という議論は確かに見たことある。
自分はコンストラクタで例外投げたいと思ったことがないので興味が持てず
詳細はよく覚えてないけど、それなりに説得力はあったような気がしたけどな
という議論は確かに見たことある。
自分はコンストラクタで例外投げたいと思ったことがないので興味が持てず
詳細はよく覚えてないけど、それなりに説得力はあったような気がしたけどな
829デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/09(日) 12:22:22.59ID:SuJMzV5Hr 自分の知らんところでコンストラクタ使われたら例外拾えないとかそんな腐った理由だろう
何があってもインスタンスが帰って来る状態が欲しいんだろうがその後処理を誤ると簡単に詰む
そんな甘いことを言ってるとバグ作るだけ
何があってもインスタンスが帰って来る状態が欲しいんだろうがその後処理を誤ると簡単に詰む
そんな甘いことを言ってるとバグ作るだけ
830デフォルトの名無しさん (ワッチョイ 6ae4-vR7S)
2021/05/09(日) 12:33:09.11ID:uZxXAkBZ0 >>825-826
アドバイスありがとう!
アドバイスありがとう!
831デフォルトの名無しさん (ワッチョイ 2a63-jjtP)
2021/05/09(日) 12:44:50.59ID:2oHJe1AX0 コンストラクタで例外投げるとオブジェクトが中途半端に作成されたものがゴミとして残るからだよ
832デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/09(日) 13:18:38.53ID:6ong4OY90 ・コンストラクタで例外おきるとデストラクタが呼ばれない説
⇒確認できた
・デストラクタが呼ばれないのでGCされずにメモリリークが起きる説
⇒確認できず。list.add(new Hoge())を1000回で、Hogeコンストラクタ内で例外起こすかどうかで確認。
例外起こさなければ使用メモリ増えるけど、例外ありの方は増えない。やり方が悪い?
メモリリーク云々はC++とかの話が元みたいで、それも例外投げるなではなく投げる場合は適切に参照を削除してから投げろみたいな話だったと思うのだが、
c#の方は問題ないのか?
標準ライブラリにもコンストラクタで例外返すやつあるのでそれの実装が見たい
⇒確認できた
・デストラクタが呼ばれないのでGCされずにメモリリークが起きる説
⇒確認できず。list.add(new Hoge())を1000回で、Hogeコンストラクタ内で例外起こすかどうかで確認。
例外起こさなければ使用メモリ増えるけど、例外ありの方は増えない。やり方が悪い?
メモリリーク云々はC++とかの話が元みたいで、それも例外投げるなではなく投げる場合は適切に参照を削除してから投げろみたいな話だったと思うのだが、
c#の方は問題ないのか?
標準ライブラリにもコンストラクタで例外返すやつあるのでそれの実装が見たい
833デフォルトの名無しさん (ササクッテロロ Sp33-+yJN)
2021/05/09(日) 13:21:46.98ID:hhBpMcqQp 残って気持ち悪いとしたらDispose持ちのネイティブリソースだろうけど
そのへんクリーン書こうとしたらファクトリメソッドでもやること変わらんでしょ
そのへんクリーン書こうとしたらファクトリメソッドでもやること変わらんでしょ
834デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/09(日) 13:23:44.08ID:rwsrdF7nd 古いガイドラインだけど
>✔ 必要な場合は、インスタンス コンストラクターから例外をスローします。
だからダメってことはないんだよね
コンストラクターのデザイン - Framework Design Guidelines | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/constructor
>✔ 必要な場合は、インスタンス コンストラクターから例外をスローします。
だからダメってことはないんだよね
コンストラクターのデザイン - Framework Design Guidelines | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/constructor
835デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/09(日) 13:33:06.24ID:6ong4OY90 ちょっと大きめのメモリ割り当てたら1回の例外発生時にGC呼び出されてるのも確認できた
836デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/09(日) 13:38:09.58ID:WHUEfE6G0 >>813
> どんな値が渡されるのかわからない関数などは例外処理、その逆(外部に公開しない関数)の値チェックになら使えそうなのかなと思ったんですが
ざっくりその認識で正しいよ
内部的にはあり得ない状態ならAssert投げる
デバッグ終えたら削除とかアホのやること
注意すべきなのはassertの条件の所に副作用を含む式を書いちゃいけないことぐらい
> どんな値が渡されるのかわからない関数などは例外処理、その逆(外部に公開しない関数)の値チェックになら使えそうなのかなと思ったんですが
ざっくりその認識で正しいよ
内部的にはあり得ない状態ならAssert投げる
デバッグ終えたら削除とかアホのやること
注意すべきなのはassertの条件の所に副作用を含む式を書いちゃいけないことぐらい
837デフォルトの名無しさん (ワッチョイ aa7c-ibqQ)
2021/05/09(日) 13:42:03.78ID:yIvZIEF/0 そもそもなんでもかんでもエラー処理を例外任せにするのが間違ってるような
838デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/09(日) 13:46:49.04ID:rAnETUQPM C#ではコンストラクタで例外が出るとファイナライザが呼ばれないことから
コンストラクタでは例外を出すべきでないとする派閥が昔は存在した
しかしこれが問題になるのはコンストラクタでアンマネージドリソースを確保してDisposeで解放するパターンを採用したクラスだけだ
ネイティブライブラリをPInvokeで呼び出すような低レベルの仕事では気を付ける必要があるが
そうでなければ気にしなくてよい
またそのようなアンマネージドリソースを扱う場合でもC#ではSafeHandleを実装して使うことになっている
SafeHandleを使う側はリークをことさら恐れる必要はない
コンストラクタで例外を投げてもよろしい
コンストラクタでは例外を出すべきでないとする派閥が昔は存在した
しかしこれが問題になるのはコンストラクタでアンマネージドリソースを確保してDisposeで解放するパターンを採用したクラスだけだ
ネイティブライブラリをPInvokeで呼び出すような低レベルの仕事では気を付ける必要があるが
そうでなければ気にしなくてよい
またそのようなアンマネージドリソースを扱う場合でもC#ではSafeHandleを実装して使うことになっている
SafeHandleを使う側はリークをことさら恐れる必要はない
コンストラクタで例外を投げてもよろしい
839デフォルトの名無しさん (ワントンキン MMda-rYak)
2021/05/09(日) 13:48:56.57ID:aeEkFGhTM >>833
例外投げるなら、その前に既にnewしたものを全部綺麗にDisposeしなきゃいけないわけだけど
そこまで考慮して正しく実装されたコンストラクタなんてドカタのコードで見たことないな
自分でthrowしなくても呼び出し先から例外が飛んでくるケースもあるから、本来は常に考慮が必要
あくまで可能性の問題としてだけど、コンストラクタで例外を投げるとDispose漏れが起こりやすいのは事実だと思うよ
漏れを完全に防げなくても、GC任せで問題にならない程度に頻度を抑えることはできる
例外投げるなら、その前に既にnewしたものを全部綺麗にDisposeしなきゃいけないわけだけど
そこまで考慮して正しく実装されたコンストラクタなんてドカタのコードで見たことないな
自分でthrowしなくても呼び出し先から例外が飛んでくるケースもあるから、本来は常に考慮が必要
あくまで可能性の問題としてだけど、コンストラクタで例外を投げるとDispose漏れが起こりやすいのは事実だと思うよ
漏れを完全に防げなくても、GC任せで問題にならない程度に頻度を抑えることはできる
840デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/09(日) 13:53:06.35ID:V90kiCWja841デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/09(日) 13:53:17.09ID:rAnETUQPM >>836
プログラマが内部的にありえないと考えている状態が実際に発生するかしないかはプログラマにはわからない
それがバグというものの性質だ
バグはプログラマの意識の外からやってくる
プログラマが間違えるからバグが発生する
なので絶対に起こらないから本番では外しちゃえなどと安易に考えずに
俺の考えではまあまず起こらないと思うけどもし起こったらやばいから念の為に残しておこうと考えたほうがよい
プログラマが内部的にありえないと考えている状態が実際に発生するかしないかはプログラマにはわからない
それがバグというものの性質だ
バグはプログラマの意識の外からやってくる
プログラマが間違えるからバグが発生する
なので絶対に起こらないから本番では外しちゃえなどと安易に考えずに
俺の考えではまあまず起こらないと思うけどもし起こったらやばいから念の為に残しておこうと考えたほうがよい
842デフォルトの名無しさん (ワントンキン MMda-rYak)
2021/05/09(日) 13:56:13.68ID:aeEkFGhTM >>838
.NET 5以降ではCERが廃止されたからSafeHandleは意味ないよ
.NET 5以降ではCERが廃止されたからSafeHandleは意味ないよ
843デフォルトの名無しさん (ワントンキン MMda-rYak)
2021/05/09(日) 14:05:22.60ID:aeEkFGhTM ちなみに.NET Framework(非Core系)でもCriticalFinalizerObjectに意味があるのは複数のAppDomainを使ったアプリケーションの場合だけだよ
あまり理解されてないけど、99.9%の人には無関係な極めてニッチな機能
あまり理解されてないけど、99.9%の人には無関係な極めてニッチな機能
844デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/09(日) 14:06:37.90ID:KNQAmpF60 また空中戦やってるな
設計はどうなってるのか?もこだわらず
どう処理したいかばっかり
客がエラー扱いにしたいって言ったら
テメーの例外のこだわりなんかゴミ箱だ
逆もまた然り
設計はどうなってるのか?もこだわらず
どう処理したいかばっかり
客がエラー扱いにしたいって言ったら
テメーの例外のこだわりなんかゴミ箱だ
逆もまた然り
845デフォルトの名無しさん (ワントンキン MMda-rYak)
2021/05/09(日) 14:12:54.16ID:aeEkFGhTM いや客ってのがユーザーのことなら例外処理なんて客と無関係な純粋に技術的な問題でしょw
多重下請けならその限りではないかもしれんが
多重下請けならその限りではないかもしれんが
846デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/09(日) 14:27:16.94ID:rAnETUQPM >>842
SafeHandleはCERのためのものではなく
アンマネージドリソースハンドルのラッパーを提供するための共通基盤でありCER対応はその部分でしかない
SafeHandleは依然として有用だよ
初心者は参考にするといい
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-dispose
SafeHandleはCERのためのものではなく
アンマネージドリソースハンドルのラッパーを提供するための共通基盤でありCER対応はその部分でしかない
SafeHandleは依然として有用だよ
初心者は参考にするといい
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-dispose
847デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/09(日) 14:30:18.11ID:rAnETUQPM もちろんオレオレハンドルラッパーをDIYしたいならそれを止める権利は俺にはない
しかし趣味ならともかく仕事ではDIYを避けたほうがいいだろうねとアドバイスだけはさせてもらおう
しかし趣味ならともかく仕事ではDIYを避けたほうがいいだろうねとアドバイスだけはさせてもらおう
848デフォルトの名無しさん (ワッチョイ 9f02-dxvU)
2021/05/09(日) 15:15:59.96ID:xtmxe3CZ0 >>824
ありがとうチェックしてみるよ
ありがとうチェックしてみるよ
849デフォルトの名無しさん (ワンミングク MMda-rYak)
2021/05/09(日) 15:17:59.75ID:E0SRP95CM >>846
それは眉唾だな
docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.safehandle?view=net-5.0
例えばこのサンプル、SafeHandle派生クラスを実装した上で更にそれを適切に解放するために普通にDisposeパターンを実装してる。
これが典型的な正しいSafeHandleの使い方だ。
CERが無いなら手間とミスしうるポイントが余計に増えるだけにしか俺には思えないね。
それは眉唾だな
docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.safehandle?view=net-5.0
例えばこのサンプル、SafeHandle派生クラスを実装した上で更にそれを適切に解放するために普通にDisposeパターンを実装してる。
これが典型的な正しいSafeHandleの使い方だ。
CERが無いなら手間とミスしうるポイントが余計に増えるだけにしか俺には思えないね。
850デフォルトの名無しさん (オッペケ Sr33-7fsT)
2021/05/09(日) 15:32:32.00ID:SuJMzV5Hr newしたものが綺麗にdisposeされないって馬鹿のコードだろ
そもそもが引数チェックではじいてからnewするだろ馬鹿じゃないかと
そもそもが引数チェックではじいてからnewするだろ馬鹿じゃないかと
851デフォルトの名無しさん (オッペケ Sr33-7fsT)
2021/05/09(日) 15:40:33.58ID:SuJMzV5Hr .netの内部でもこんな感じで普通にコンストラクタで例外投げてる
これ以外でどうやって通知すんだよ
馬鹿者が
if (path == null)
throw new ArgumentNullException("path", Environment.GetResourceString("ArgumentNull_Path"));
if (path.Length == 0)
throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
これ以外でどうやって通知すんだよ
馬鹿者が
if (path == null)
throw new ArgumentNullException("path", Environment.GetResourceString("ArgumentNull_Path"));
if (path.Length == 0)
throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
852デフォルトの名無しさん (ワンミングク MMda-rYak)
2021/05/09(日) 15:45:00.43ID:E0SRP95CM853デフォルトの名無しさん (オッペケ Sr33-7fsT)
2021/05/09(日) 15:49:17.16ID:SuJMzV5Hr コンストラクタで例外は投げても良い
でもおかしなことをする奴がいるからコンストラクタでは例外投げるなは暴論
でもおかしなことをする奴がいるからコンストラクタでは例外投げるなは暴論
854デフォルトの名無しさん (アウアウエー Sae2-D3Lk)
2021/05/09(日) 15:51:19.62ID:FUAnWwVaa >>849
プラットフォーム呼び出し時の参照カウントなどはどうする?
プラットフォーム呼び出し時の参照カウントなどはどうする?
855デフォルトの名無しさん (ワッチョイ ea61-LExt)
2021/05/09(日) 22:04:27.52ID:pySvIkdW0 例外はcatchして握りつぶすのが吉
856デフォルトの名無しさん (ワッチョイ a6da-XZlr)
2021/05/09(日) 23:19:09.95ID:CIQV7Tg10 async voidも多用すべし
857デフォルトの名無しさん (スップ Sd2a-5xeF)
2021/05/10(月) 07:43:24.96ID:v9qGjilad クラスとかメソッドとか分けるときの命名が大変で時間が掛かるお…
適当にそれっぽい英単語繋げてるけど、メソッド名が50文字以上になることがよくあるお…
ForとかByとかFromとかも使うとより長くなるんだお…
どうしたらいいんだお?
適当にそれっぽい英単語繋げてるけど、メソッド名が50文字以上になることがよくあるお…
ForとかByとかFromとかも使うとより長くなるんだお…
どうしたらいいんだお?
858デフォルトの名無しさん (ワッチョイ 3ebb-EEf/)
2021/05/10(月) 08:00:47.54ID:XZUy8xNJ0859デフォルトの名無しさん (ブーイモ MMd6-tepi)
2021/05/10(月) 08:05:31.40ID:AtOV5vKAM860デフォルトの名無しさん (スップ Sd2a-5xeF)
2021/05/10(月) 08:26:26.05ID:v9qGjilad861デフォルトの名無しさん (スプッッ Sd2a-5xeF)
2021/05/10(月) 08:28:55.47ID:EOKyCo1ad862デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 08:51:24.61ID:y0jj8Ah00 引数エラー一個一個出してくわけには行かない場合例外だと処理しにくいな
863デフォルトの名無しさん (スププ Sd8a-hETr)
2021/05/10(月) 09:51:39.48ID:6ezg7cUTd コメント打つ代わりにフルスペルで命名するっていう手もあるよね。
そうすれば入力する手間は変わらない。
でも英語が見慣れてなくて辛い。
そうすれば入力する手間は変わらない。
でも英語が見慣れてなくて辛い。
864デフォルトの名無しさん (ブーイモ MMd6-tepi)
2021/05/10(月) 09:56:18.04ID:AtOV5vKAM C#は日本語ok
865デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/10(月) 12:05:19.67ID:OSpjgtmc0 命名に悩んで手が止まるのアホらしいので、一旦日本語で命名して後で英語に変えてる
866デフォルトの名無しさん (スプッッ Sd2a-5xeF)
2021/05/10(月) 12:08:15.82ID:EOKyCo1ad 下手に英語やローマ字使うより日本のプロパティ名を使った方が分かり易いこともありますな
敢えて外人だけに意味を理解しにくくさせたいときなんかにも使えそうですな
敢えて外人だけに意味を理解しにくくさせたいときなんかにも使えそうですな
867デフォルトの名無しさん (ワッチョイ 3ebb-EEf/)
2021/05/10(月) 12:21:43.63ID:XZUy8xNJ0 >>866
どんな場面を想定しているのか、すげぇ気になる
どんな場面を想定しているのか、すげぇ気になる
868デフォルトの名無しさん (ワッチョイ 6642-jjtP)
2021/05/10(月) 12:34:14.65ID:3Mkz5DyC0 enumの要素が日本語だとコメント要らずではある
本体がアルファベットならインテリセンスも問題ない
本体がアルファベットならインテリセンスも問題ない
869デフォルトの名無しさん (ワッチョイ fbad-t4JP)
2021/05/10(月) 12:37:31.60ID:85dwBuQM0 国民健康保険保険者番号、という単語を変数名にするときは、だいぶ議論した上で、
kokuho_hnoになったな。
national_health_insurance_insurer_numberはとても反発が大きかった。
kokuho_hnoになったな。
national_health_insurance_insurer_numberはとても反発が大きかった。
870デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/10(月) 12:56:28.88ID:2MQuNC0ra 英語力がボトルネックになってるケースはむしろ少ない気がするね。
命名下手な人は日本語でも意味不明な名前付けそうな気がする
というより、だいたい命名以前の問題で既に失敗してるんだよね
普通のプログラマはそれが何をするメソッドなのか、「何者」なのかを
明確にしてからメソッドを書き始める。
命名で止まっちゃう人はそこがいい加減なんだよね。抽象化が出来てない。
命名下手な人は日本語でも意味不明な名前付けそうな気がする
というより、だいたい命名以前の問題で既に失敗してるんだよね
普通のプログラマはそれが何をするメソッドなのか、「何者」なのかを
明確にしてからメソッドを書き始める。
命名で止まっちゃう人はそこがいい加減なんだよね。抽象化が出来てない。
871デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 13:00:52.85ID:y0jj8Ah00 enumって継承できない?
872デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/10(月) 15:31:20.10ID:lCZGOQhNF873デフォルトの名無しさん (ワッチョイ 9f25-Fod4)
2021/05/10(月) 15:37:52.56ID:DLVUJfkF0 >>869
プロジェクト全体で使えるならnhi_insurer_numberみたいな略語ならありだと思うけどね
プロジェクト全体で使えるならnhi_insurer_numberみたいな略語ならありだと思うけどね
874デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/10(月) 15:58:21.88ID:l/O9+A2Na グロサリーは作った方がいいけどNHIで辞書に載ってるから(普通何だこれと思ったらググるよね?)
それはNhiIDでいいでしょ
それはNhiIDでいいでしょ
875デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/10(月) 16:21:26.47ID:lCZGOQhNF876デフォルトの名無しさん (ワッチョイ fbad-t4JP)
2021/05/10(月) 17:51:27.04ID:85dwBuQM0 俺も別に良いと思ったんだけど、とにかく反発がやばかった。
HNI_Insurer_No推しだった。
俺的には番号とついてるものにIDはまずい気がする。
HNI_Insurer_No推しだった。
俺的には番号とついてるものにIDはまずい気がする。
877デフォルトの名無しさん (ワッチョイ 2a01-Yqly)
2021/05/10(月) 17:56:24.33ID:giJ6lOgz0 kokuho_hnoだと保険者番号と被保険者番号の区別がつけにくいので
nhi_insurer_numberとnhi_numberくらいがいい気がする
kokuho_insurer_numberでも別にいいかな
nhi_insurer_numberとnhi_numberくらいがいい気がする
kokuho_insurer_numberでも別にいいかな
878デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/10(月) 18:24:14.99ID:id38dQYPr 変数名は単体で使ってるのか?
それともPersonクラスなどののメンバーなのかによって扱いが違う
それともPersonクラスなどののメンバーなのかによって扱いが違う
879デフォルトの名無しさん (スププ Sd8a-t4JP)
2021/05/10(月) 18:31:34.09ID:Jv8jAyYxd >>877
被保険者番号はhhnoという悲しいスタイルに。。
被保険者番号はhhnoという悲しいスタイルに。。
880デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/10(月) 18:37:55.44ID:l/O9+A2Na >>876
識別のために割り当てる符号は数字だろうがギリシャ文字だろうがID(identifier)でしょうw
ただ、保険者(業者)と被保険者を区別する必要があることに気づかなかった
この場合NhiIDはまずいね
まあスレ違い甚だしいな
識別のために割り当てる符号は数字だろうがギリシャ文字だろうがID(identifier)でしょうw
ただ、保険者(業者)と被保険者を区別する必要があることに気づかなかった
この場合NhiIDはまずいね
まあスレ違い甚だしいな
881デフォルトの名無しさん (ワッチョイ 2a01-Yqly)
2021/05/10(月) 18:42:01.34ID:giJ6lOgz0 hhnoかぁ
nhiもそうだけどhhnoやhnoみたいな普段の会話で使わない略語よりも
kokuho_hokensha_noとkokuho_hihokensha_noみたいに
普段の会話で使う日本語読みに寄せたほうが何かと良さそうだね
nhiもそうだけどhhnoやhnoみたいな普段の会話で使わない略語よりも
kokuho_hokensha_noとkokuho_hihokensha_noみたいに
普段の会話で使う日本語読みに寄せたほうが何かと良さそうだね
882デフォルトの名無しさん (ワッチョイ aa7c-ibqQ)
2021/05/10(月) 18:42:58.08ID:zy2rFAto0 番号なのにnoとか付けないってセンスなくね?
883デフォルトの名無しさん (JP 0H0a-aC2w)
2021/05/10(月) 18:46:43.73ID:T4WFU4KFH 被保険者番号みたいなのは
コーディング規約をいじる裁量があれば日本語変数名が最強なんだよなあ
入力はちょっと大変だけど、視認性最強でドキュメントコメント不要になるし
英字表記に悩んだり表記ゆれに煩わされることもない、変な英略語覚えるのに頭使わなくて済む
コーディング規約をいじる裁量があれば日本語変数名が最強なんだよなあ
入力はちょっと大変だけど、視認性最強でドキュメントコメント不要になるし
英字表記に悩んだり表記ゆれに煩わされることもない、変な英略語覚えるのに頭使わなくて済む
884デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/10(月) 18:46:58.67ID:id38dQYPr みんな業務はjavaの人なんだなと
885デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 21:46:48.97ID:y0jj8Ah00 基底クラスでenumのステータス持ってて
継承してそのステータスの種類が増えるとき
enumが継承できないとステータスの種類が増やせなくない?
継承してそのステータスの種類が増えるとき
enumが継承できないとステータスの種類が増やせなくない?
886デフォルトの名無しさん (ワンミングク MMda-rYak)
2021/05/10(月) 21:56:52.64ID:/NuMOBBIM >>885
enumは決まった値しか取り得ない型
継承して取りうる値が増えたら、それは基底クラスにおける「決まった値のみを取る」という規約を破ってしまうことになる
規約を破らずに値を追加するには、継承せず普通にenumに追加しなければならない
enumは決まった値しか取り得ない型
継承して取りうる値が増えたら、それは基底クラスにおける「決まった値のみを取る」という規約を破ってしまうことになる
規約を破らずに値を追加するには、継承せず普通にenumに追加しなければならない
887デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 22:00:17.01ID:y0jj8Ah00888デフォルトの名無しさん (ワッチョイ 9f5f-DjaX)
2021/05/10(月) 22:38:40.75ID:8qfIqwaR0889デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 00:18:16.99ID:lKBWqYLpa 率直に言ってenumを継承するって発想自体が理解不能w
>>885
enum Eを継承してFを作れるとして、Eの型のプロパティHogeを持つクラスAを継承してBを作っても、
Hogeの型をFに変えることはできないよね?
スーパークラスでステート値を増やすって発想に無理がある気がする
>>885
enum Eを継承してFを作れるとして、Eの型のプロパティHogeを持つクラスAを継承してBを作っても、
Hogeの型をFに変えることはできないよね?
スーパークラスでステート値を増やすって発想に無理がある気がする
890デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 00:47:29.66ID:aDB05LmB0 >>889
継承してステータスの取りうる状態が増えるときはどーするの?
ステータスはenum使えってみんなが言うから使ったらこのザマだよ
所詮、プログラムなんか組んだことないアホの戯言だった
継承して増える可能性のある値はenumなんか使っちゃ駄目だってことだね
俺は一生使わないと思う
継承してステータスの取りうる状態が増えるときはどーするの?
ステータスはenum使えってみんなが言うから使ったらこのザマだよ
所詮、プログラムなんか組んだことないアホの戯言だった
継承して増える可能性のある値はenumなんか使っちゃ駄目だってことだね
俺は一生使わないと思う
891デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 01:06:35.85ID:lKBWqYLpa >>890
まずそういうケースがあんまりありそうもない気がするけどあるとして、
(1) ベースクラスを書く段階でサブクラスでありうる拡張を織り込んで予約しておく
(2) それが無理なら
enum BorderStyle {None, Single, Double, ExtendedStyle };
みたいにしておいて、BorderStyle == BorderStyle.ExtendedStyle
の時には別のプロパティでスタイルが決まるようにする
まずそういうケースがあんまりありそうもない気がするけどあるとして、
(1) ベースクラスを書く段階でサブクラスでありうる拡張を織り込んで予約しておく
(2) それが無理なら
enum BorderStyle {None, Single, Double, ExtendedStyle };
みたいにしておいて、BorderStyle == BorderStyle.ExtendedStyle
の時には別のプロパティでスタイルが決まるようにする
892デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/11(火) 01:27:29.73ID:qWgZ839v0 > Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);
> Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.")
上の書き方の場合、文字列部分を定数で宣言できたってメリットあったと思うんだけど、$使う文字列挿入だとできないよね
使い分ければ良いだけだと思うんだけど、他に冴えたやり方あったりする?
> Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.")
上の書き方の場合、文字列部分を定数で宣言できたってメリットあったと思うんだけど、$使う文字列挿入だとできないよね
使い分ければ良いだけだと思うんだけど、他に冴えたやり方あったりする?
893デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 01:28:06.43ID:aDB05LmB0 class作ってメンバでconst intにしようと思ったら
採番が面倒だから結局intになったわ
と思ったらそれもログ出力が面倒で
結局、状態クラス作ったわ
採番が面倒だから結局intになったわ
と思ったらそれもログ出力が面倒で
結局、状態クラス作ったわ
894デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/11(火) 01:31:27.37ID:m6WVK0Xg0 enumは基本的に定数をならべただけだから不変のものにしか使っちゃだめ
ステータスを表すクラス作れよ
ステータスを表すクラス作れよ
895デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:06:49.74ID:aDB05LmB0 >>894
不変よ
少なくともプログラムが実行されてからは
だって状態を表してるんだから
変更が必要になるのは継承で分岐するソースコードの修正作業時だけ
こういう形でenumが使えないなら
今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えないということ
実際使わないほうがいいと思う
赤青ランプを継承して
赤青黃ランプを作ったときに
状態赤青がenumで作られてたらゴミ箱にブチ込むしか道はない
不変よ
少なくともプログラムが実行されてからは
だって状態を表してるんだから
変更が必要になるのは継承で分岐するソースコードの修正作業時だけ
こういう形でenumが使えないなら
今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えないということ
実際使わないほうがいいと思う
赤青ランプを継承して
赤青黃ランプを作ったときに
状態赤青がenumで作られてたらゴミ箱にブチ込むしか道はない
896デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 02:09:51.01ID:lKBWqYLpa 挿入文字列はコンパイル時に解析される(実行時に解析されるわけじゃない)と思うので(知らんけど)
stringの変数に挿入文字列自体を入れるとかできないと思うけど、そもそも何でそんなことがしたいの?
多言語化のために文字列リソースにしておきたいという動機なら理解できるけど
変数に入れたい動機が思いつかない
stringの変数に挿入文字列自体を入れるとかできないと思うけど、そもそも何でそんなことがしたいの?
多言語化のために文字列リソースにしておきたいという動機なら理解できるけど
変数に入れたい動機が思いつかない
897デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:10:54.04ID:aDB05LmB0 >>896
ログ出力したいんじゃん?
ログ出力したいんじゃん?
898デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 02:12:53.21ID:1Lpm83JY0 >>895
enumの定義をclassの外に出して独立させれば
enumの定義をclassの外に出して独立させれば
899デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:13:54.09ID:aDB05LmB0 >>898
何の解決にもなんなくね?
何の解決にもなんなくね?
900デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:16:57.22ID:aDB05LmB0901デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 02:38:14.36ID:1Lpm83JY0902デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 02:41:03.08ID:lKBWqYLpa だからそもそも根本的に考え方がおかしいと思うよw
集合論的に考えてみて
例えば、
自然数⊂整数
ってことは明らかに「整数 is 自然数」ではないでしょ。
自然数を継承して整数を作る、とう発想がそもそもおかしい。
集合論的に考えてみて
例えば、
自然数⊂整数
ってことは明らかに「整数 is 自然数」ではないでしょ。
自然数を継承して整数を作る、とう発想がそもそもおかしい。
903デフォルトの名無しさん (ワッチョイ 8a52-KFFl)
2021/05/11(火) 03:32:52.71ID:/5H26xT50904デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 07:38:19.05ID:aDB05LmB0 は?設計書にそう書いてあって
矛盾なく動くのに何がおかしいんだよ
頭いかれてんのか
いいからこの場合どういうenumになるのかさっさと書けよクズ
矛盾なく動くのに何がおかしいんだよ
頭いかれてんのか
いいからこの場合どういうenumになるのかさっさと書けよクズ
905デフォルトの名無しさん (ササクッテロラ Sp33-Fod4)
2021/05/11(火) 08:46:28.86ID:8Zm8z2p2p 普通そう言う場合enum使わんしょ
継承後色がどうなるか確定的じゃないし
stateを普通にintで管理して、それにRGB入りの配列で色を割り当てたら?
継承後色がどうなるか確定的じゃないし
stateを普通にintで管理して、それにRGB入りの配列で色を割り当てたら?
906デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 08:55:42.36ID:aDB05LmB0907デフォルトの名無しさん (アウアウカー Sa7b-KFFl)
2021/05/11(火) 09:52:12.74ID:FCSidwoba >>904
実装上の都合で赤青ランプに後付けで黄色を取り付けたのだから、色を表す定数として赤青のenumとは別に黄色の定数を定義することになるのは自然だろう。
それをあたかも三色同格のランプだと見せかけてるんだから、定数についても見かけ上同列に扱うためのenumを新たに定義しなければならないのは仕方ない。設計がいびつなのだから、内部処理的にもいびつになる。
実装上の都合で赤青ランプに後付けで黄色を取り付けたのだから、色を表す定数として赤青のenumとは別に黄色の定数を定義することになるのは自然だろう。
それをあたかも三色同格のランプだと見せかけてるんだから、定数についても見かけ上同列に扱うためのenumを新たに定義しなければならないのは仕方ない。設計がいびつなのだから、内部処理的にもいびつになる。
908デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 10:10:24.00ID:aDB05LmB0 >>907
何言ってるかわかってる?
基底に20個ぐらいステータスあってさらに増え続けてるとき
継承した分だけenumに同じステータスを追加しまくれっていってんだよ
継承10も20もやったら大変だぞ
もう実際はハードごと20種類以上追加しないといけなくてやってられないから
俺はenumはゴミと切り捨てたけどね
何言ってるかわかってる?
基底に20個ぐらいステータスあってさらに増え続けてるとき
継承した分だけenumに同じステータスを追加しまくれっていってんだよ
継承10も20もやったら大変だぞ
もう実際はハードごと20種類以上追加しないといけなくてやってられないから
俺はenumはゴミと切り捨てたけどね
909デフォルトの名無しさん (ブーイモ MM97-rYak)
2021/05/11(火) 10:33:16.06ID:aLadY06bM910デフォルトの名無しさん (ワッチョイ 73b5-fceI)
2021/05/11(火) 10:45:31.24ID:fJhAJw720 ♪燃〜〜えろよ燃えろ〜〜よ〜〜
911デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:02:46.92ID:aDB05LmB0912デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 11:03:10.18ID:8BKOP9bia >>908
まだ言っとるんだねw
だから根本的に考え方が間違ってるんだってw
特化/汎化って言い方をすると思うけど、継承っていうのは
汎用的なものを特定用途に「特化」するものなんだってw
だから>>902に書いた通り汎用性が小さい自然数を継承して整数にする、って考えは根本的におかしいし、
汎用性が小さい2ステートを継承して3ステートの物にするというのも間違ってる
考え方が逆だ。
多ステートの特殊形が3ステートで、3ステートの特殊形が赤青黄でしょ。
赤青のロジックの一部を赤青黄で使いまわしたいなら継承以外の方法で考えましょう。
例えば、RGB.RをRB.Rに変換する変換関数は書けるんだから、
Color ToColor(RGB rgb){ ... }
というメソッドは、中で
Color ToColor{RB rb){ ...}
と使いまわすことはできる
まだ言っとるんだねw
だから根本的に考え方が間違ってるんだってw
特化/汎化って言い方をすると思うけど、継承っていうのは
汎用的なものを特定用途に「特化」するものなんだってw
だから>>902に書いた通り汎用性が小さい自然数を継承して整数にする、って考えは根本的におかしいし、
汎用性が小さい2ステートを継承して3ステートの物にするというのも間違ってる
考え方が逆だ。
多ステートの特殊形が3ステートで、3ステートの特殊形が赤青黄でしょ。
赤青のロジックの一部を赤青黄で使いまわしたいなら継承以外の方法で考えましょう。
例えば、RGB.RをRB.Rに変換する変換関数は書けるんだから、
Color ToColor(RGB rgb){ ... }
というメソッドは、中で
Color ToColor{RB rb){ ...}
と使いまわすことはできる
913デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:06:54.31ID:aDB05LmB0914デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:11:17.08ID:aDB05LmB0 はっきり言うけど
べき論は結構だけど
enum型がこの仕様のままなら
なんにも使えない
もしくは使わないほうがいいと思う俺は
べき論は結構だけど
enum型がこの仕様のままなら
なんにも使えない
もしくは使わないほうがいいと思う俺は
915デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:14:26.45ID:aDB05LmB0 じゃあ、いっそenumって定義をやめよう
state型が必要です
これでおk?
おそらくこれができたら
enumなんか誰も使わない
それだけの話
state型が必要です
これでおk?
おそらくこれができたら
enumなんか誰も使わない
それだけの話
916デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/11(火) 11:14:32.61ID:FWZS8iTBF >enumはゴミ
知ってた
知ってた
917デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/11(火) 11:18:15.50ID:m6WVK0Xg0 >>895
不変っていうのは、実行時に変わらないって意味じゃないぞ
修正/機能追加でも変わらないってことだ
結論としては自分で書いてる通り
>今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えない
だよ。Enum継承したいってことはつまり変更したいってことだから
Color.RedやColor.BlueはEnumじゃないだろ
まあSystem.Drawing.Colorは構造体で継承できなかった気がするけど
そんな感じで作っとけ
不変っていうのは、実行時に変わらないって意味じゃないぞ
修正/機能追加でも変わらないってことだ
結論としては自分で書いてる通り
>今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えない
だよ。Enum継承したいってことはつまり変更したいってことだから
Color.RedやColor.BlueはEnumじゃないだろ
まあSystem.Drawing.Colorは構造体で継承できなかった気がするけど
そんな感じで作っとけ
918デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 12:02:27.73ID:N41oKzlma919デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 12:55:03.04ID:9XfnnIxq0 どれの話をしてるのかわからんけど困ったことない
Enumでやる
virtual List<enum> Lamps => 赤、青を返す
override List<enum> Lamps => base.Lampsと黄を返す
Flagでやる
virtual Color Lamp => Color.赤 | Color.青
override Color Lamp => base.Lamp | Color.黄
Flag側で継承
[flag]
enum Color{
赤=1,
青=2,
黄=4,
Hoge=赤 | 青,
Hoge2=Hoge | 黄
}
Enumでやる
virtual List<enum> Lamps => 赤、青を返す
override List<enum> Lamps => base.Lampsと黄を返す
Flagでやる
virtual Color Lamp => Color.赤 | Color.青
override Color Lamp => base.Lamp | Color.黄
Flag側で継承
[flag]
enum Color{
赤=1,
青=2,
黄=4,
Hoge=赤 | 青,
Hoge2=Hoge | 黄
}
920デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 13:34:53.46ID:aDB05LmB0921デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 13:38:39.20ID:aDB05LmB0 >>919
基底に黒とグレーを追加
基底に黒とグレーを追加
922デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 14:03:01.12ID:9XfnnIxq0923デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 14:27:53.86ID:7X7kMfyca >>919
enumの利点はコンパイル時に名前の集合を型として定義できる、
名前の集合が確定していて、だからインテリセンスが使えたり
集合に含まれないはずの名前が使われている間違いをコンパイル時に検出できることなので
それは代用にならんでしょ。
質問している人の問題はたぶん継承に固執してること。
部分集合を再利用して上位集合を定義したいって問題意識は分からんでもないけど、
emumなんてただの名前の集合なんだからそういう場合はコピペ継承するのが多分正解。
enumの利点はコンパイル時に名前の集合を型として定義できる、
名前の集合が確定していて、だからインテリセンスが使えたり
集合に含まれないはずの名前が使われている間違いをコンパイル時に検出できることなので
それは代用にならんでしょ。
質問している人の問題はたぶん継承に固執してること。
部分集合を再利用して上位集合を定義したいって問題意識は分からんでもないけど、
emumなんてただの名前の集合なんだからそういう場合はコピペ継承するのが多分正解。
924デフォルトの名無しさん (エアペラ SDd7-/hng)
2021/05/11(火) 14:31:08.99ID:pmLjbtQdD 適材適所
925デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/11(火) 14:40:19.26ID:/TD/rkCHM C#や諸々の言語はそもそも、継承の仕様が出来損ないなんだよね
Java 16みたいにSealed Classを定義できるなら、まだしもねぇ
どんなクラスでも継承できます、なんて言われてもね
全てのサブクラスの面倒を見るなんて、事実上不可能だろ
だからサブクラスを限定する仕組みが必要なのだが…
C#はまだまだ、遅れてるね
Java 16みたいにSealed Classを定義できるなら、まだしもねぇ
どんなクラスでも継承できます、なんて言われてもね
全てのサブクラスの面倒を見るなんて、事実上不可能だろ
だからサブクラスを限定する仕組みが必要なのだが…
C#はまだまだ、遅れてるね
926デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 14:45:04.15ID:9XfnnIxq0927デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 15:00:11.95ID:1Lpm83JY0928デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 15:07:01.36ID:9XfnnIxq0 自分ならカスタム属性と拡張メソッド作って、集合.Hoge.Colors()で一覧を取れるようにするかな
まあケースバイケース
enum 集合{
[AddColor(Color.赤, Color.青)]
Hoge,
[InheriteColor(集合.Hoge)]
[AddColor(Color.黄)]
Hoge2
}
まあケースバイケース
enum 集合{
[AddColor(Color.赤, Color.青)]
Hoge,
[InheriteColor(集合.Hoge)]
[AddColor(Color.黄)]
Hoge2
}
929デフォルトの名無しさん (ワッチョイ be2c-5KFm)
2021/05/11(火) 15:14:49.86ID:Fjpe2RX80 >>927
そっちじゃなくて継承できる型を限定する機能だね
ShapeインターフェイスをRectangleクラスとCircleクラスのみ実装可能にする
他の奴がTriangleクラスを作ってShapeを実装するのは認めない
そっちじゃなくて継承できる型を限定する機能だね
ShapeインターフェイスをRectangleクラスとCircleクラスのみ実装可能にする
他の奴がTriangleクラスを作ってShapeを実装するのは認めない
930デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 15:43:37.19ID:1Lpm83JY0931デフォルトの名無しさん (ワッチョイ 2a01-Yqly)
2021/05/11(火) 16:04:08.87ID:gVDvfxdk0 >>919
>override List<enum> Lamps => base.Lampsと黄を返す
これはEnumでやってるんじゃなくListでやってるだけのような・・
取りうる状態の範囲をEnumで表現してないしコンパイル時のチェックも無理だよね
>override Color Lamp => base.Lamp | Color.黄
こっちも型としてはColorになるので既存のColor定義が赤と青だけなら
全く別のEnumを新しく定義することか、既存の定義自体を変更して黄を足すかになるので
既存のコードを維持したまま新しいコードを追加することはできないよね?
Enumを使うべきユースケースじゃないからできなくて当たり前なんだけどさ
>override List<enum> Lamps => base.Lampsと黄を返す
これはEnumでやってるんじゃなくListでやってるだけのような・・
取りうる状態の範囲をEnumで表現してないしコンパイル時のチェックも無理だよね
>override Color Lamp => base.Lamp | Color.黄
こっちも型としてはColorになるので既存のColor定義が赤と青だけなら
全く別のEnumを新しく定義することか、既存の定義自体を変更して黄を足すかになるので
既存のコードを維持したまま新しいコードを追加することはできないよね?
Enumを使うべきユースケースじゃないからできなくて当たり前なんだけどさ
932デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/11(火) 16:18:03.82ID:qWgZ839v0 >>896
文字列の雛形をDBに持たせて、パラメータ部分を置換して出力するみたいなことやってたのよ
『置換して出力』部分を$使う挿入文字列で置き換えられたらいいなって夢想した
pythonの似たような機能でキーワード引数による指定が出来るから、似たようなこと出来ないかなって
> print('{first} and {second}'.format(first=a, second=b))
string.format使えばいいだけなんだけどね
文字列の雛形をDBに持たせて、パラメータ部分を置換して出力するみたいなことやってたのよ
『置換して出力』部分を$使う挿入文字列で置き換えられたらいいなって夢想した
pythonの似たような機能でキーワード引数による指定が出来るから、似たようなこと出来ないかなって
> print('{first} and {second}'.format(first=a, second=b))
string.format使えばいいだけなんだけどね
933デフォルトの名無しさん (テテンテンテン MMe6-I8iA)
2021/05/11(火) 20:06:26.01ID:7D4cBYXWM >>932のやりたいことが挿入文字列を共通化したいってことならおとなしくメソッド化して
string ToHelloText(string name, DateTime date) => $"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.";
で
Console.WriteLine(ToHelloText(name, date));
みたいな使い方するほうがいいんじゃ
string ToHelloText(string name, DateTime date) => $"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.";
で
Console.WriteLine(ToHelloText(name, date));
みたいな使い方するほうがいいんじゃ
934デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/12(水) 09:24:40.12ID:HCx7UYF5F プラごみを減らすためにレジ袋有料化するって話と似てるな
そもそもピントがずれてるし前提も可笑しい
そもそもピントがずれてるし前提も可笑しい
935デフォルトの名無しさん (ワッチョイ be2c-5KFm)
2021/05/12(水) 14:46:53.00ID:kcMRoKH40 リソースで他言語対応すると考えると欲しい気持ちは分かる
"Hello, I'm {givenName} {surname}."
"こんにちは、私は {surname}{givenName} です。"
みたいに書きたい
"Hello, I'm {givenName} {surname}."
"こんにちは、私は {surname}{givenName} です。"
みたいに書きたい
936デフォルトの名無しさん (ブーイモ MM97-tepi)
2021/05/12(水) 14:52:52.50ID:KOpdkLhcM All your base are belong to us
937デフォルトの名無しさん (オッペケ Sr33-7fsT)
2021/05/12(水) 18:25:12.05ID:l5b/FJ1ur evalをやりたいと言うことだな
テスト不可になるからいらんけど
テスト不可になるからいらんけど
938デフォルトの名無しさん (ワッチョイ 9f5f-Y/5H)
2021/05/12(水) 22:11:27.01ID:rLfxFtSp0 c#ってvisual studioインストールしたときに入ってるコンパイラじゃなくて
.Net 5に移行するのが良いでしょうか?
Microsoftも.Net 5移行を推進していきますかね?
.Net 5に移行するのが良いでしょうか?
Microsoftも.Net 5移行を推進していきますかね?
939デフォルトの名無しさん (ラクッペペ MMe6-jV+5)
2021/05/12(水) 22:18:36.03ID:ApiPrDZMM 同じもの
940デフォルトの名無しさん (ワッチョイ 9f5f-Y/5H)
2021/05/12(水) 23:16:35.91ID:rLfxFtSp0 そうだったんですね!
941デフォルトの名無しさん (ワッチョイ 0bda-jV+5)
2021/05/13(木) 01:52:12.91ID:Q5JRmth30 コンパイラは同じ
実行環境やフレームワークは違う
実行環境やフレームワークは違う
942デフォルトの名無しさん (アウアウクー MM23-Wdz7)
2021/05/14(金) 12:23:19.63ID:4kCY9pobM まさかC#でメンバ変数名のprefixにアンダーバー付けてないやつおる?
https://anond.hatelabo.jp/20210513215649
https://anond.hatelabo.jp/20210513215649
943デフォルトの名無しさん (ワッチョイ d1e3-Adon)
2021/05/14(金) 12:27:21.06ID:hPLmdAiv0 なんで今更感が半端ない
アンダースコアつけて怒られた記憶あるわ
アンダースコアつけて怒られた記憶あるわ
944デフォルトの名無しさん (ブーイモ MM5b-M3SR)
2021/05/14(金) 12:32:54.76ID:o+OksdyUM アンスコあかんの?
945デフォルトの名無しさん (アウアウクー MM23-Wdz7)
2021/05/14(金) 12:45:33.90ID:4kCY9pobM 今まで記載がずっとなくて、同じMicrosoftの子会社が出してるStylecopっていうコード解析ツールの言ってることなら正しいだろうって風潮だったんだけど逆転敗訴した感じ
946デフォルトの名無しさん (ワッチョイ 1fb0-sort)
2021/05/14(金) 12:49:56.23ID:idb/Si4k0 前までただのキャメルだったよな? 何かしっくりこないなあと思いつつあわせてたのに
というか>>942はちゃんとprivateのメンバ変数って書いてくれ
というか>>942はちゃんとprivateのメンバ変数って書いてくれ
947デフォルトの名無しさん (ワッチョイ ab2c-mHP1)
2021/05/14(金) 12:59:44.72ID:ty8DhYlQ0 俺は今まで通り m_ + PascalCase でいく
948デフォルトの名無しさん (エアペラ SD73-f+4d)
2021/05/14(金) 13:15:24.24ID:fGdsMbaSD キャメルケースの事をキャメルって略すのはどうも抵抗がある
949デフォルトの名無しさん (ワッチョイ aba7-4lYq)
2021/05/14(金) 13:52:15.03ID:xt/CNvYd0 スコープで付けると便利だけどね
gグローバルgUnko
mメンバmUnko
in引数入力inUnko
out引数出力outUnko
valローカルvalUnko
gグローバルgUnko
mメンバmUnko
in引数入力inUnko
out引数出力outUnko
valローカルvalUnko
950デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 14:00:51.83ID:E7dr4uiDa >>942
さすがにアホなガイドラインでほとんど同意は得られない気がする。
バッキングフィールド限定なら少なくとも俺は賛成するけど。
まあ、普通のフィルドもバッキングフィールドも出番減ってるから
どうでもいいと言えばどうでもいいかも
さすがにアホなガイドラインでほとんど同意は得られない気がする。
バッキングフィールド限定なら少なくとも俺は賛成するけど。
まあ、普通のフィルドもバッキングフィールドも出番減ってるから
どうでもいいと言えばどうでもいいかも
951デフォルトの名無しさん (ワッチョイ 5342-Adon)
2021/05/14(金) 14:04:32.36ID:vWTxavwv0 アンダースコアはライブラリと被った記憶
C言語時代だが
C言語時代だが
952デフォルトの名無しさん (ワッチョイ aba7-4lYq)
2021/05/14(金) 14:10:10.14ID:xt/CNvYd0 ぶっちゃけ客先のカスタマイズできない環境で文字ちっちゃくて見にくいときあるからイラネ
953デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 14:16:07.40ID:E7dr4uiDa しかし、_でプリフィクスしとくとインテリセンスでフィールドが一覧できて便利だよ、
ってコメントは泣けてくるねw
普通逆じゃないかw
インテリセンスの候補に登場して欲しくない奴を_でプリフィクスするのが普通のセンスだと思うけど。
ってコメントは泣けてくるねw
普通逆じゃないかw
インテリセンスの候補に登場して欲しくない奴を_でプリフィクスするのが普通のセンスだと思うけど。
954デフォルトの名無しさん (ワッチョイ 1fb0-sort)
2021/05/14(金) 14:36:58.65ID:idb/Si4k0 >>953
そのコメントどこに書いてある?
ところで別の話なんだけど、
とあるデータの集計や加工をメソッドチェーンで書きたい考えと、その集計や加工をデータとは別のクラスかつステートレスで書きたい考えって両立できるのかな?
拡張メソッド使うくらい?
そのコメントどこに書いてある?
ところで別の話なんだけど、
とあるデータの集計や加工をメソッドチェーンで書きたい考えと、その集計や加工をデータとは別のクラスかつステートレスで書きたい考えって両立できるのかな?
拡張メソッド使うくらい?
955デフォルトの名無しさん (ワッチョイ ff01-vB/y)
2021/05/14(金) 16:32:10.35ID:0kdm8qdh0956デフォルトの名無しさん (ワッチョイ cb68-gSvD)
2021/05/14(金) 19:49:54.05ID:xeRYEvYS0 オセロのプログラム作っています。
オセロが盤面にの上にくると影を描きたいのですが
これはフォームアプリでできますか?
オセロが盤面にの上にくると影を描きたいのですが
これはフォームアプリでできますか?
957デフォルトの名無しさん (ワッチョイ f1da-Wdz7)
2021/05/14(金) 20:01:11.64ID:7GBYwo1U0 >>946
publicなメンバ変数って一般的か?
publicなメンバ変数って一般的か?
958デフォルトの名無しさん (ブーイモ MMe1-6eZC)
2021/05/14(金) 20:03:38.54ID:7vyBBBSUM959デフォルトの名無しさん (スププ Sdd7-Ratl)
2021/05/14(金) 20:38:27.45ID:8fzMB91td >>956
あくまでもWinFormでやるならGDI+っていう機能を調べて、
円をキャンバスに描けばオセロ程度のアプリケーションを作るのは楽かもね。
そりゃあ本気でゲーム作るならUnityだろうけど、
オセロの内容にこだわるなら、コンソールで十分なんだけど。
あくまでもWinFormでやるならGDI+っていう機能を調べて、
円をキャンバスに描けばオセロ程度のアプリケーションを作るのは楽かもね。
そりゃあ本気でゲーム作るならUnityだろうけど、
オセロの内容にこだわるなら、コンソールで十分なんだけど。
960デフォルトの名無しさん (ワッチョイ 03da-as9D)
2021/05/14(金) 20:41:16.98ID:95pD/4XI0 WPFならDropShadowEffectで一発
961デフォルトの名無しさん (ワッチョイ 3bad-z8Fo)
2021/05/14(金) 21:13:06.87ID:VM2FDDZI0962デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 21:29:52.56ID:d3AihMu6a963デフォルトの名無しさん (オッペケ Sr6f-Adon)
2021/05/14(金) 21:45:19.42ID:Hk5V+gvwr m_とかアンダースコアつけるとかは原始人に見えてしまう
964デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 21:49:55.96ID:d3AihMu6a フィールドにmつけるのは割とそんな悪い習慣じゃないと思うけどアンダースコアは要らんね
mFooでいい。m_Fooにする意味が分からん
mFooでいい。m_Fooにする意味が分からん
965デフォルトの名無しさん (オッペケ Sr6f-Adon)
2021/05/14(金) 21:50:54.76ID:Hk5V+gvwr そっちの方が原始人度が高いとおもうがw
966デフォルトの名無しさん (オッペケ Sr6f-Adon)
2021/05/14(金) 21:51:52.40ID:Hk5V+gvwr フィールドにメンバーのmをつけるのもどうなのかとw
967デフォルトの名無しさん (ワッチョイ eb0c-0qpL)
2021/05/14(金) 21:54:28.98ID:2Onmey4o0 プロジェクトで統一されてりゃなんでもええよ
センスだのなんだのは個人の信仰でしかあらへんのじゃ
センスだのなんだのは個人の信仰でしかあらへんのじゃ
968デフォルトの名無しさん (ブーイモ MM5b-1bOW)
2021/05/14(金) 21:56:28.53ID:et+gRElJM 一般的な流儀はキャメルmFooかスネークm_fooのどちらか
969デフォルトの名無しさん (ワッチョイ d978-sort)
2021/05/14(金) 22:00:45.23ID:krSfg/SG0 てめぇの流儀を勝手に一般化するな
970デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 22:05:44.68ID:d3AihMu6a971デフォルトの名無しさん (オッペケ Sr6f-Adon)
2021/05/14(金) 22:20:25.04ID:Hk5V+gvwr >>957
Xamlで
Xamlで
972デフォルトの名無しさん (ワッチョイ 1301-tI/9)
2021/05/14(金) 23:16:17.86ID:ijV+D4Iw0 >>969
そういうゴタクはキャメルとスネークより一般的な流儀出してから言いなよ
そういうゴタクはキャメルとスネークより一般的な流儀出してから言いなよ
973デフォルトの名無しさん (テテンテンテン MM17-Wcp/)
2021/05/15(土) 10:06:46.25ID:DyddzWuxM >>954の>>953が書いてるコメントって
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/coding-conventions
のヒントのことか・・・・・公式ドキュメントでお墨付きつけてるのはちょっと酷いような
VS2019標準のLintでアンダースコア始まり変数名って許容されてたっけ?
最近VSCodeでしか書いてないから分からん
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/coding-conventions
のヒントのことか・・・・・公式ドキュメントでお墨付きつけてるのはちょっと酷いような
VS2019標準のLintでアンダースコア始まり変数名って許容されてたっけ?
最近VSCodeでしか書いてないから分からん
974デフォルトの名無しさん (ワッチョイ aba7-4lYq)
2021/05/15(土) 10:11:49.42ID:I4FgZZwl0 作ってるやつがゴミカスなんだな
昔のインド人は頭が良かったということで
昔のインド人は頭が良かったということで
975デフォルトの名無しさん (ワッチョイ 1fb0-sort)
2021/05/15(土) 13:01:38.70ID:K7/xaqOQ0 複数ルール混在するのが一番面倒なので、mでもm_でも_でもいいから統一してくれればいいかなあ
そんで_に統一しませんかって事か
そんで_に統一しませんかって事か
976デフォルトの名無しさん (アウアウエー Sa93-PbQN)
2021/05/15(土) 13:35:41.44ID:u3bkv4kna クラス内で揃ってればどうでもいい
977デフォルトの名無しさん (エアペラ SD5b-f+4d)
2021/05/15(土) 13:39:10.32ID:X2M8i/YMD >>976
これ
これ
978デフォルトの名無しさん (ラクッペペ MM17-JFKK)
2021/05/15(土) 13:45:45.41ID:Q8PHpDoBM すまん
979デフォルトの名無しさん (ワッチョイ 6d87-9scZ)
2021/05/15(土) 16:04:03.86ID:k7UiOGH90 ほんまそれなんやが
アホな中華は1クラス1万ステップとか作ってくるからめちゃくちゃになるんや
アホな中華は1クラス1万ステップとか作ってくるからめちゃくちゃになるんや
980デフォルトの名無しさん (ワッチョイ 3fac-v+G2)
2021/05/15(土) 16:17:10.56ID:/1WA0n4U0 パフォーマンスどうなんそれ
981デフォルトの名無しさん (ワッチョイ 895f-/DSF)
2021/05/15(土) 18:21:31.59ID:aVMlO2Jw0 c#のprivateメンバー変数にアンダースコア付けろだと…
これが今後のルールになるのかな?
これが今後のルールになるのかな?
982デフォルトの名無しさん (オッペケ Sr99-Adon)
2021/05/15(土) 19:22:05.87ID:En4kpP4hr ゴミみたいなルールで泣けてくる
983デフォルトの名無しさん (ワッチョイ aba7-4lYq)
2021/05/15(土) 19:28:07.03ID:I4FgZZwl0 ゴミカスが普段組んでもいないのにいいと思って考えちゃったクソルール
984デフォルトの名無しさん (オッペケ Sr99-Adon)
2021/05/15(土) 19:53:08.40ID:En4kpP4hr985デフォルトの名無しさん (ワッチョイ f1da-Wdz7)
2021/05/15(土) 20:00:50.49ID:x5z5lzlG0 一般的にって根拠を示しにくいけど、Microsoft公認のコーディングルールって言うとStylecopが示しているキャメルケースしかありえないんだよな
mHogeやm_Hogeは論外で今回の更新によって_Hogeが台頭したけど
mHogeやm_Hogeは論外で今回の更新によって_Hogeが台頭したけど
986デフォルトの名無しさん (ワッチョイ 7363-sort)
2021/05/15(土) 20:14:20.26ID:tihXB0Cj0 hogの意味を辞書で引く
987デフォルトの名無しさん (テテンテンテン MM17-6eZC)
2021/05/15(土) 21:11:59.64ID:EZTpChRKM988デフォルトの名無しさん (ワッチョイ 6dda-gSvD)
2021/05/15(土) 21:55:57.08ID:P/ScDIg90 いま入門書で勉強中の初心者です
コードは基本的に上から下に処理されていくと理解しているのですが
本に出てくるサンプルコードは呼び出す側のあとに呼び出される側のコードが書かれていることが多くてしっくりきません
何か理由があるのでしょうか?
コードは基本的に上から下に処理されていくと理解しているのですが
本に出てくるサンプルコードは呼び出す側のあとに呼び出される側のコードが書かれていることが多くてしっくりきません
何か理由があるのでしょうか?
989デフォルトの名無しさん (ワッチョイ 9fda-3Xtj)
2021/05/15(土) 21:57:54.60ID:Cs9vHg9X0 ないよ
990デフォルトの名無しさん (ワッチョイ 03da-as9D)
2021/05/15(土) 22:00:38.14ID:18pqJB1E0 そんなん言うたら、呼び出すメソッドが別ファイルの別クラスにあるのはいいんか?っちゅう話だよな。
991デフォルトの名無しさん (ワッチョイ 3bad-z8Fo)
2021/05/15(土) 22:03:52.54ID:t/RrGLho0 >>987
さすがにs_を標準にしちゃうのはかなり疑問だけどね
さすがにs_を標準にしちゃうのはかなり疑問だけどね
992デフォルトの名無しさん (ワッチョイ ff01-vB/y)
2021/05/15(土) 22:23:45.04ID:kOi9a7N70993デフォルトの名無しさん (アウアウエー Sa93-PbQN)
2021/05/15(土) 22:39:14.46ID:Tm9lZ4XLa994デフォルトの名無しさん (ワッチョイ 7363-sort)
2021/05/15(土) 23:03:58.43ID:tihXB0Cj0 関数など邪道
995デフォルトの名無しさん (ワッチョイ 9fda-3Xtj)
2021/05/15(土) 23:08:38.70ID:Cs9vHg9X0 全てasyncとlinqで実装
996デフォルトの名無しさん (ワッチョイ f1da-Wdz7)
2021/05/16(日) 01:12:40.73ID:cPyU4P820997デフォルトの名無しさん (アウアウウー Sa1d-gSvD)
2021/05/16(日) 02:38:29.44ID:sFLeX0L5a 前方参照が不可でプロトタイプ宣言が必要だったのは単に当時の技術的な制約に過ぎず
本質的な物じゃないと思うよw
メソッドのソースコード上の位置(どのファイルの何行目にあるか?)は
「技術的には」何の意味も持たない、と言うのが正しい。
一か所からしか呼ばれないメソッドがあるとき、呼ばれる側のメソッドを呼ぶ側より上の行に
書きたがる人がいるし気持ちは分からんでもないけど、そんなのあくまで好みの問題。どーでもいいよそんなの、が正解。
本質的な物じゃないと思うよw
メソッドのソースコード上の位置(どのファイルの何行目にあるか?)は
「技術的には」何の意味も持たない、と言うのが正しい。
一か所からしか呼ばれないメソッドがあるとき、呼ばれる側のメソッドを呼ぶ側より上の行に
書きたがる人がいるし気持ちは分からんでもないけど、そんなのあくまで好みの問題。どーでもいいよそんなの、が正解。
998デフォルトの名無しさん (ワッチョイ 8925-fy9k)
2021/05/16(日) 05:34:08.17ID:fcFZ09AZ0 最近の言語だとどこでも関数宣言できるし、かと言って関数内だと一番下で宣言した関数を上で使えるって訳でもない場合もあるからね
トップレベルの処理は言語仕様によって分けられていることを理解するのは最初は結構大変なもんだ
トップレベルの処理は言語仕様によって分けられていることを理解するのは最初は結構大変なもんだ
999デフォルトの名無しさん (ワッチョイ 1301-tI/9)
2021/05/16(日) 09:15:56.70ID:RjyUN9Py0 >>988
呼び出される側のあとに呼び出す側のコードが書かれていても
> コードは基本的に上から下に処理されていくと理解しているのですが
ならしっくり来なくね?
Pythonみたいに動的に関数定義したいということかな?
呼び出される側のあとに呼び出す側のコードが書かれていても
> コードは基本的に上から下に処理されていくと理解しているのですが
ならしっくり来なくね?
Pythonみたいに動的に関数定義したいということかな?
1000デフォルトの名無しさん (ワッチョイ 1301-tI/9)
2021/05/16(日) 09:16:15.77ID:RjyUN9Py0 >>996
それ逆やぞ
それ逆やぞ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 53日 20時間 17分 52秒
新しいスレッドを立ててください。
life time: 53日 20時間 17分 52秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★4 [BFU★]
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★10 [樽悶★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- 中国、レアアース輸出制限wwwwwwwwwwwwwwwwwwwwwwww🎌 [329329848]
- おまえらって冷笑系おおすぎじゃね
- 日本をドーム状に覆って気温を一定にしたほうが過ごしやすいんじゃないの?
- 職場の人の雑談あまりにもどうでもよくて混ざらないんだけどさ
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
