!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:ACoFzk2L02デフォルトの名無しさん (ワッチョイ 5168-u+xM)
2021/03/23(火) 18:03:39.73ID:VsSEePUk0 List<乙>
3デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/23(火) 21:59:18.80ID:EIK7uDnA0 コンソールでRPGみたいなゲーム作ろうとしてるけど
クラスの作り方がいまいち思い浮かばない
例えば
レベルアップした時にHPとかMPとかのクラスのフィールドをいじりたいけど、レベルクラスに入れるとステータス取るときに毎回status.level.hpみたいにレベルを通らないといけないのが厄介
かといってステータスクラスの中にレベルクラスとHPクラスを内包してしまうとレベルクラスのメソッドが呼び出された時にhpクラスのメソッドが呼び出せない…(staticはなしとして)
どうすれば良いのだ
クラスの作り方がいまいち思い浮かばない
例えば
レベルアップした時にHPとかMPとかのクラスのフィールドをいじりたいけど、レベルクラスに入れるとステータス取るときに毎回status.level.hpみたいにレベルを通らないといけないのが厄介
かといってステータスクラスの中にレベルクラスとHPクラスを内包してしまうとレベルクラスのメソッドが呼び出された時にhpクラスのメソッドが呼び出せない…(staticはなしとして)
どうすれば良いのだ
4デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/23(火) 23:03:31.32ID:CY92qFOb0 レベルやHPをクラスにしたい理由は?
どういうメソッドを想定してるの?
どういうメソッドを想定してるの?
5デフォルトの名無しさん (アウアウウー Sa5d-7TK3)
2021/03/23(火) 23:04:14.83ID:zRupaTqla >>3
単純に、ステータス、レベル、HP、MPをメンバ変数に持つクラスにすりゃええんちゃう?
レベルアップメソッドを呼ばれたら、それぞれを更新するだけ
最初は難しく考えないで、ありのまま設計して実装してみる
で、破綻しそうなら設計を変えて再実装
そういう試行錯誤も楽しいかもよ
単純に、ステータス、レベル、HP、MPをメンバ変数に持つクラスにすりゃええんちゃう?
レベルアップメソッドを呼ばれたら、それぞれを更新するだけ
最初は難しく考えないで、ありのまま設計して実装してみる
で、破綻しそうなら設計を変えて再実装
そういう試行錯誤も楽しいかもよ
6デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/23(火) 23:32:37.84ID:3AlrkluQ0 ゲームはすべてのリアルタイムデータをエクセルに並べるつもりでプログラムを組め
物体同士の相互作用処理が一番多くてかつそれが7つも8つも同時に関わるので
オブジェクト指向言語の機能が役に立たないどころか悪影響すら及ぼす
絶対に使わないほうが楽に組めるぞ
まあ、まずやってみろ
物体同士の相互作用処理が一番多くてかつそれが7つも8つも同時に関わるので
オブジェクト指向言語の機能が役に立たないどころか悪影響すら及ぼす
絶対に使わないほうが楽に組めるぞ
まあ、まずやってみろ
7デフォルトの名無しさん (オッペケ Sr85-DLm1)
2021/03/23(火) 23:52:01.54ID:oR7E8wqDr 偉そうなやつだな
8デフォルトの名無しさん (ワッチョイ b102-+i0H)
2021/03/23(火) 23:59:45.77ID:ACoFzk2L0 でもまあ、とにかくやってみるってのには賛成。
根気よく続けて、それにちょっとした向上心があるなら、そのうちそれなりにはなる。
>>3 の人は、直接的なアドバイスを求めてるんだろうけど、ちょっとアドバイスしたくらいでどうにかなるようなもんでもないなぁって感じ。
根気よく続けて、それにちょっとした向上心があるなら、そのうちそれなりにはなる。
>>3 の人は、直接的なアドバイスを求めてるんだろうけど、ちょっとアドバイスしたくらいでどうにかなるようなもんでもないなぁって感じ。
9デフォルトの名無しさん (ワッチョイ 5168-u+xM)
2021/03/24(水) 03:06:14.87ID:hZzg7ROH0 >>3
オブジェクト指向言語だからクラスは物、オブジェクトであって、
RPGのキャラはそれぞれステータスを持つオブジェクト=クラス。
キャラにはステータスがあるなら、それぞれのキャラクラスにはステータスクラスが保有されるべき。
・・・などと自分なりに整理して、設計してみてはどうか。
その設計で厄介なことがあっても、設計に納得出来るなら、それは通るしかない厄介事なのかもしれない。
それを回避したり厄介を軽減する手段はいろいろ有ると思う。
やってれば身についてくる。その過程がまた楽しい。
設計が正しいかどうか、それは自分が決めればいいが、想像が付かないなら書籍を漁る。
オブジェクト指向言語だからクラスは物、オブジェクトであって、
RPGのキャラはそれぞれステータスを持つオブジェクト=クラス。
キャラにはステータスがあるなら、それぞれのキャラクラスにはステータスクラスが保有されるべき。
・・・などと自分なりに整理して、設計してみてはどうか。
その設計で厄介なことがあっても、設計に納得出来るなら、それは通るしかない厄介事なのかもしれない。
それを回避したり厄介を軽減する手段はいろいろ有ると思う。
やってれば身についてくる。その過程がまた楽しい。
設計が正しいかどうか、それは自分が決めればいいが、想像が付かないなら書籍を漁る。
10デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 06:37:38.52ID:k6isLik00 3だけど
一応4回くらい違う設計で同じ処理のコードを作ってみたんだが、やりたいことは
親クラスに子クラス1,2がいて
子クラス1のフィールドが更新されたとき、子クラス2のフィールドを更新したい
一応現状はref使ってインスタンスされてる子クラス2のアドレスを保存して子クラス1で間接的に更新してるけど
子クラス3,4,…って増えた時に毎回コンストラクタの引数変えて処理追加させるのは冗長的だなぁと思って違うやり方したいと考えてるけど思いつかない…
一応4回くらい違う設計で同じ処理のコードを作ってみたんだが、やりたいことは
親クラスに子クラス1,2がいて
子クラス1のフィールドが更新されたとき、子クラス2のフィールドを更新したい
一応現状はref使ってインスタンスされてる子クラス2のアドレスを保存して子クラス1で間接的に更新してるけど
子クラス3,4,…って増えた時に毎回コンストラクタの引数変えて処理追加させるのは冗長的だなぁと思って違うやり方したいと考えてるけど思いつかない…
11デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 06:43:09.14ID:k6isLik00 >>4
パラメータクラスに最大値、最小値、現在値をプロパティで持つようにして
HP、MP、LV、EXP、クラスをパラメータクラスを継承して作ろうとしてる
さいごにステータスクラスとしてHPからEXPをフィールドに持つようにしてコンストラクタでインスタンス化させるようにしてる
パラメータクラスに最大値、最小値、現在値をプロパティで持つようにして
HP、MP、LV、EXP、クラスをパラメータクラスを継承して作ろうとしてる
さいごにステータスクラスとしてHPからEXPをフィールドに持つようにしてコンストラクタでインスタンス化させるようにしてる
12デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 07:00:45.85ID:k6isLik00 class Prameter{
private int _Max;
public int Max{
set MaxUpdate(value);
get return _Max;
}
protected virtual
void MaxUpdate(int val){
_Max=val;
}
最小値も上と同様
現在値も上と同様※
}
※少し実装とは違うけどざっくりとしたらこんな感じのクラスを現状HP,MP,Level,exp全クラスにそれぞれ継承してる
レベルアップとかは現在値の更新時処理のoverrideで処理変えたりして実装してるんだ
private int _Max;
public int Max{
set MaxUpdate(value);
get return _Max;
}
protected virtual
void MaxUpdate(int val){
_Max=val;
}
最小値も上と同様
現在値も上と同様※
}
※少し実装とは違うけどざっくりとしたらこんな感じのクラスを現状HP,MP,Level,exp全クラスにそれぞれ継承してる
レベルアップとかは現在値の更新時処理のoverrideで処理変えたりして実装してるんだ
13デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 07:19:03.14ID:k6isLik00 >>6
やっぱりそうか。Cのような関数での設計なら単純で作りやすいんだがオブジェクト指向の練習と思ってやってると意外と難しかった。
ちょうど7つも8つもパラメータが増えてきていちいち引数変えたりするの面倒やしクラスにするメリットがあまりないな…
やっぱりそうか。Cのような関数での設計なら単純で作りやすいんだがオブジェクト指向の練習と思ってやってると意外と難しかった。
ちょうど7つも8つもパラメータが増えてきていちいち引数変えたりするの面倒やしクラスにするメリットがあまりないな…
14デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/24(水) 07:39:20.22ID:IIHDBzfT015デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/24(水) 12:54:19.52ID:C9/npL5e0 >>11
ステータスクラスがHP, MP, LV, EXPの最大値、最小値、現在値をそれぞれ直接int等で持つ構成と
ステータスクラスがHP, MP, LV, EXPの各クラスのインスタンスを保持する構成とを比較して
後者にどういうメリットがあるのか、もしくはないのかを考えればいいんでないのかな?
>>10
>親クラスに子クラス1,2がいて
親クラス・子クラスという表現は一般的に継承関係を指すので
あるクラスが別のクラスのインスタンスを保持してる場合は親クラス・子クラスという表現は使わないほうがいい
>子クラス1のフィールドが更新されたとき、子クラス2のフィールドを更新したい
今回のケースで使うべきかどうかは微妙だけど
フィールドが更新されたときにそれをイベントとして通知するようなパターンを使えば
クラス1のコードでクラス2を参照する必要がなくなって通知先が増えてもクラス1を変更しなくてよい
ステータスクラスがHP, MP, LV, EXPの最大値、最小値、現在値をそれぞれ直接int等で持つ構成と
ステータスクラスがHP, MP, LV, EXPの各クラスのインスタンスを保持する構成とを比較して
後者にどういうメリットがあるのか、もしくはないのかを考えればいいんでないのかな?
>>10
>親クラスに子クラス1,2がいて
親クラス・子クラスという表現は一般的に継承関係を指すので
あるクラスが別のクラスのインスタンスを保持してる場合は親クラス・子クラスという表現は使わないほうがいい
>子クラス1のフィールドが更新されたとき、子クラス2のフィールドを更新したい
今回のケースで使うべきかどうかは微妙だけど
フィールドが更新されたときにそれをイベントとして通知するようなパターンを使えば
クラス1のコードでクラス2を参照する必要がなくなって通知先が増えてもクラス1を変更しなくてよい
16デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/24(水) 13:06:41.79ID:C9/npL5e0 https://paiza.io/projects/jSt0Q60s11SN8n8JJzO_7Q
これ、とあるゲームのキャラクターステータスだけどベタなキーバリューペアで管理してる
スキルや装備によってバトル中のHPや攻撃力/防御力とかが変化するから本来の値と底上げされた値は別項目で管理されてる
これ、とあるゲームのキャラクターステータスだけどベタなキーバリューペアで管理してる
スキルや装備によってバトル中のHPや攻撃力/防御力とかが変化するから本来の値と底上げされた値は別項目で管理されてる
17デフォルトの名無しさん (ワッチョイ 5168-4Ddi)
2021/03/24(水) 15:14:08.35ID:hZzg7ROH0 何か既存のRPGでやってるステータス計算の再現なのかな。
C#の仕組みを凝ると、デバッグが怖そう。
C#の仕組みを凝ると、デバッグが怖そう。
18デフォルトの名無しさん (スププ Sd33-PDCb)
2021/03/24(水) 17:52:37.32ID:JXkKcrLid なるほど、
皆様、様々なアドバイスありがとうございます。
特に親、子クラスとかのニュアンスや使い方の指摘はありがたい。
ちなみにゲームの再現はしてないけど、イメージはCUIのドラクエのイメージ。それをオブジェクト指向の練習としてクラスで作ってみようとして一番最初で詰んだという経緯っす。
メリットデメリットは正直オブジェクト指向が初めてだからよくわからないってのが本音。ただ知識として幅は広がってる気がする。MVCモデルとかで実現するのかなーとか考えたりイベントをリストで管理するのかなーとか色々模索はしたけど結局いい感じにならず苦難中。
皆様、様々なアドバイスありがとうございます。
特に親、子クラスとかのニュアンスや使い方の指摘はありがたい。
ちなみにゲームの再現はしてないけど、イメージはCUIのドラクエのイメージ。それをオブジェクト指向の練習としてクラスで作ってみようとして一番最初で詰んだという経緯っす。
メリットデメリットは正直オブジェクト指向が初めてだからよくわからないってのが本音。ただ知識として幅は広がってる気がする。MVCモデルとかで実現するのかなーとか考えたりイベントをリストで管理するのかなーとか色々模索はしたけど結局いい感じにならず苦難中。
19デフォルトの名無しさん (ワッチョイ 937c-4Ddi)
2021/03/24(水) 17:59:16.27ID:HEdEJwPg0 最初はあんまり沢山クラス作らない方がいいかと思う
段々とここは分離した方がいいとか継承した方がいいとか分かってくるので
とにかく動くものを作れるかどうかで勉強するにしても先に進めるかどうかの分岐点になるからな
段々とここは分離した方がいいとか継承した方がいいとか分かってくるので
とにかく動くものを作れるかどうかで勉強するにしても先に進めるかどうかの分岐点になるからな
20デフォルトの名無しさん (ワッチョイ 0b33-zgiT)
2021/03/24(水) 18:09:40.53ID:spck33He0 オブジェクト指向の学習が目的なら、ポケモンで学ぶオブジェクト指向みたいなのがいくつかあるから
そういったPOSTを眺めるとなんとなく雰囲気がつかめるかもしれない
そういったPOSTを眺めるとなんとなく雰囲気がつかめるかもしれない
21デフォルトの名無しさん (アウアウウー Sa5d-oXDN)
2021/03/24(水) 18:29:08.45ID:c5QGfFFqa ゲーム自体があんまりOOP向きの題材じゃないかもしれないよ。
モデル化する必要があるのはゲームの世界を成立させている「舞台装置」
であってプレーヤーの目に見える表層的なキャラじゃなかったりすると思うんだけど
前者は得てして抽象的な存在になるし、どうしても後者に引きずられてしまう。
知らんけど。
大昔シューティングゲームとかボードゲームがいかにOOP向きじゃないかって
論争があったねw
モデル化する必要があるのはゲームの世界を成立させている「舞台装置」
であってプレーヤーの目に見える表層的なキャラじゃなかったりすると思うんだけど
前者は得てして抽象的な存在になるし、どうしても後者に引きずられてしまう。
知らんけど。
大昔シューティングゲームとかボードゲームがいかにOOP向きじゃないかって
論争があったねw
22デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 18:34:43.36ID:7kvkVNgG0 そうか…
既にOOPに対して嫌悪感を抱き始めるこの始末。
とはいえ継承ができたりオーバーライドして変更したりできるのは良いね
〇〇/××って形の表示するのもは全部同じパラメータクラスで扱えるし、ちょこっと変えたいとなるとオーバーライドで消したりオーバーロードで処理増やしたりできるもんね。
うーん、やっぱC#はよーわからんw
既にOOPに対して嫌悪感を抱き始めるこの始末。
とはいえ継承ができたりオーバーライドして変更したりできるのは良いね
〇〇/××って形の表示するのもは全部同じパラメータクラスで扱えるし、ちょこっと変えたいとなるとオーバーライドで消したりオーバーロードで処理増やしたりできるもんね。
うーん、やっぱC#はよーわからんw
23デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 18:43:27.34ID:1tcqqVj20 ちなみに、C#(プログラミング)初心者が理解しやすそうな題材ってあります?
まだhelloworldから変数作って弄るよりかはゲームのほうが楽しめるんかなと思ってそれで始めたらドツボ入ったんだよね。
難易度も低めが良いけど…(マルチスレッドやGUIでないようなもの)
まだhelloworldから変数作って弄るよりかはゲームのほうが楽しめるんかなと思ってそれで始めたらドツボ入ったんだよね。
難易度も低めが良いけど…(マルチスレッドやGUIでないようなもの)
24デフォルトの名無しさん (ワッチョイ 937c-4Ddi)
2021/03/24(水) 18:57:55.30ID:HEdEJwPg0 どういうものを最終的に作りたいかによるけどゲームが目標なら
最初からUnityで勉強するのもアリかなと思う
勉強ならコンソールアプリの方が文字だけの世界だから分かりやすいけど
最初からWinFormsのプロジェクト作ってボタンやテキストボックスなど配置して
GUIのアプリのつくり方を勉強するのも良いかも知れない
GUIだとButtonにはClickイベントが、TextBoxにはTextChangedイベントがあるとか
(デザイン画面のボタンなどをダブルクリックすれば、上記の説明した一番使うであろうイベントの
実装が追加されるようになっている)
そういうイベントにより処理を行うみたいな形になるので、リアルタイムのゲームとは違った感じになるかと
どっちにしてもプログラムしてみて動かしてを繰り返し出来る方が望ましいかな
最初からUnityで勉強するのもアリかなと思う
勉強ならコンソールアプリの方が文字だけの世界だから分かりやすいけど
最初からWinFormsのプロジェクト作ってボタンやテキストボックスなど配置して
GUIのアプリのつくり方を勉強するのも良いかも知れない
GUIだとButtonにはClickイベントが、TextBoxにはTextChangedイベントがあるとか
(デザイン画面のボタンなどをダブルクリックすれば、上記の説明した一番使うであろうイベントの
実装が追加されるようになっている)
そういうイベントにより処理を行うみたいな形になるので、リアルタイムのゲームとは違った感じになるかと
どっちにしてもプログラムしてみて動かしてを繰り返し出来る方が望ましいかな
25デフォルトの名無しさん (ワッチョイ d901-PDCb)
2021/03/24(水) 19:03:33.84ID:1tcqqVj20 なるほどなー
よく考えたら最終的にはGUIのアプリケーションプログラムが作りたいと思ってた。ゲームは特に好きじゃないけど好きな人が多そうだから説明する時にも役立つかなとは思ってゲームにしてた具合。
先にFormやるのもありかも
よく考えたら最終的にはGUIのアプリケーションプログラムが作りたいと思ってた。ゲームは特に好きじゃないけど好きな人が多そうだから説明する時にも役立つかなとは思ってゲームにしてた具合。
先にFormやるのもありかも
26デフォルトの名無しさん (スププ Sd33-n6qz)
2021/03/24(水) 21:14:45.45ID:6P4Y/Xh7d ライフゲーム
27デフォルトの名無しさん (ワッチョイ 9301-lXNI)
2021/03/24(水) 21:41:45.26ID:C9/npL5e0 いろんな種類のキャラを動かす系のゲームはOOPに向いてると思うけどな
実際そういうゲームのほとんどがオブジェクト指向で作られてるわけで
プログラミングを学ぶ目的に適してるかと言われると微妙だが
実際そういうゲームのほとんどがオブジェクト指向で作られてるわけで
プログラミングを学ぶ目的に適してるかと言われると微妙だが
28デフォルトの名無しさん (ワッチョイ 51a7-FMtt)
2021/03/24(水) 21:51:54.97ID:IIHDBzfT0 >>27
向いてない
オブジェクト指向って
オブジェクト同士の処理を綺麗に書く
ように作られてない
全オブジェクトが存在するシーンにほぼすべての処理を記述することになる
マップ情報がないとキャラは移動すらできないことがすぐにわかる
ではマップとキャラのデータが混在した処理をどこに記述するべきか?
シーンに決まってる
なのでゲームシステムに関わるほぼすべての処理をシーンに記述することになる
もう仮にオブジェクト個別の処理が2〜3個見つかった程度で個別のクラスなんかに書くのはバカってぐらい
全部シーンに書くことになる
向いてない
オブジェクト指向って
オブジェクト同士の処理を綺麗に書く
ように作られてない
全オブジェクトが存在するシーンにほぼすべての処理を記述することになる
マップ情報がないとキャラは移動すらできないことがすぐにわかる
ではマップとキャラのデータが混在した処理をどこに記述するべきか?
シーンに決まってる
なのでゲームシステムに関わるほぼすべての処理をシーンに記述することになる
もう仮にオブジェクト個別の処理が2〜3個見つかった程度で個別のクラスなんかに書くのはバカってぐらい
全部シーンに書くことになる
29デフォルトの名無しさん (ワッチョイ 5168-4Ddi)
2021/03/25(木) 06:17:54.99ID:PnLvSLd80 言語そのものよりライブラリに何があるのか把握しきれなくて辛い。
自分でクラスを作ったら、もう既に.Netにあったりするし。
辞書を熟読するような事前の勉強が必要なのかな。
自分でクラスを作ったら、もう既に.Netにあったりするし。
辞書を熟読するような事前の勉強が必要なのかな。
30デフォルトの名無しさん (ワッチョイ 51de-FMtt)
2021/03/25(木) 07:11:43.36ID:/8oIOqtL0 >>29
必要なのは作る前にググる癖じゃね?
必要なのは作る前にググる癖じゃね?
31デフォルトの名無しさん (ワッチョイ d133-3UcT)
2021/03/25(木) 08:33:30.77ID:tiLz+LJ90 >>29
わかる。会社に入るとドキュメントの無いライブラリも加わる。
わかる。会社に入るとドキュメントの無いライブラリも加わる。
32デフォルトの名無しさん (ワッチョイ 5924-FrbH)
2021/03/25(木) 08:39:46.38ID:qKMPIZcm0 ゲームって普通にOOP学習にはもってこいじゃね?
一見全く種類の違う自キャラや敵やNPCなどを一つのベースクラスから派生させたりとかオブジェクト指向の有難みを享受しやすいジャンルだと思うけどな
まぁそういうことせずとも一度C言語を使ってみればC#を使ってる時点でデフォでめちゃくちゃオブジェクト指向の恩恵に授かってるというのを認識できるけど
一見全く種類の違う自キャラや敵やNPCなどを一つのベースクラスから派生させたりとかオブジェクト指向の有難みを享受しやすいジャンルだと思うけどな
まぁそういうことせずとも一度C言語を使ってみればC#を使ってる時点でデフォでめちゃくちゃオブジェクト指向の恩恵に授かってるというのを認識できるけど
33デフォルトの名無しさん (スフッ Sd33-u+xM)
2021/03/25(木) 09:28:18.12ID:WBb7w08Pd ゲームだと単純に楽しいし、良く知ってる世界だし。
異世界小説が流行るのも、みんなリアルよりゲームのほうが詳しいからね。
異世界小説が流行るのも、みんなリアルよりゲームのほうが詳しいからね。
34デフォルトの名無しさん (ブーイモ MMcb-92UB)
2021/03/25(木) 13:24:44.00ID:P2foE7HjM ゲームはOOPより関数型のがやりやすい
OOPだとゲーム状態が大量のオブジェクトに分散してしまい管理が追いつかなくなる
OOPだとゲーム状態が大量のオブジェクトに分散してしまい管理が追いつかなくなる
35デフォルトの名無しさん (ワッチョイ 5335-n6qz)
2021/03/25(木) 13:26:41.67ID:KsV0Sf9V0 パラメータ管理とレンダリングは別視点
36デフォルトの名無しさん (ワッチョイ 695f-R0OD)
2021/03/25(木) 13:29:23.03ID:Nsykn7+b0 unityやwpfで何か作ったらいいんじゃない?
嫌でもOOPを使うことになるし
嫌でもOOPを使うことになるし
37デフォルトの名無しさん (ワッチョイ 8bbb-Q5Cn)
2021/03/25(木) 15:14:45.90ID:mlbm7rgK0 Unityはやめといたほうがいいんじゃん?
ゲーム特有の定石が多い上にあまり公開されていないので、なかなかOOPを活かせるようなコードが書けるもんじゃない
ゲーム特有の定石が多い上にあまり公開されていないので、なかなかOOPを活かせるようなコードが書けるもんじゃない
38デフォルトの名無しさん (ワッチョイ f568-UUyU)
2021/03/26(金) 06:50:34.94ID:M+ibeJ+i0 なんか作るとき、ついつい無駄にインターフェース作ったり、クラスを継承させたりしたくなる。
後で使うかもって置いといても、結局、役立たずで無駄になったり。
後で使うかもって置いといても、結局、役立たずで無駄になったり。
39デフォルトの名無しさん (ラクッペペ MM96-3uWH)
2021/03/26(金) 08:06:06.50ID:kpMAymvOM YAGNI原則
40デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/26(金) 14:55:15.51ID:OgsXGrRW0 質問です。
'string[][]'と'string[*,*]の違いは何ですか?
List<string[]> lists = new List<string[]>();
を
string[,] = lists.ToArray();
で二次元配列にしようとすると、
CS0029: Cannot implicitly convert type 'string[][]' to 'string[*,*]'
とエラーが出て困っています。
'string[][]'と'string[*,*]の違いは何ですか?
List<string[]> lists = new List<string[]>();
を
string[,] = lists.ToArray();
で二次元配列にしようとすると、
CS0029: Cannot implicitly convert type 'string[][]' to 'string[*,*]'
とエラーが出て困っています。
41デフォルトの名無しさん (ブーイモ MMa6-OegW)
2021/03/26(金) 14:58:50.52ID:jmlXC9C1M [][]は配列の配列
[,]は二次元配列
[,]は二次元配列
42デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/26(金) 15:04:21.89ID:OgsXGrRW043デフォルトの名無しさん (エアペラ SD95-H12r)
2021/03/27(土) 08:26:55.12ID:8mKnzpiaD44デフォルトの名無しさん (ワッチョイ 6924-Q1TI)
2021/03/28(日) 08:30:33.61ID:w0FgUNmI0 >>38
「いつか使うだろう」という動機で作る機能の9割は結局使われないという法則があってだな
「いつか使うだろう」という動機で作る機能の9割は結局使われないという法則があってだな
45デフォルトの名無しさん (ワッチョイ 6502-12p/)
2021/03/28(日) 10:40:20.81ID:i/QSKAGe0 でも、ついでだし作っとくか、で作ったやつがその後のバグ対に効果大なこともあったな。結構。
「起こる可能性のあることはいつか必ず起こる」ってのはマーフィーの法則だっけ。
アタマの片隅にでも置いておくと、後で助かることがままある。
「起こる可能性のあることはいつか必ず起こる」ってのはマーフィーの法則だっけ。
アタマの片隅にでも置いておくと、後で助かることがままある。
46デフォルトの名無しさん (ワッチョイ b662-GHqT)
2021/03/28(日) 11:33:59.11ID:wZjOpvsr0 一人で作ってるならいいんだけど別の人が対応する時に混乱させるだけなことが多いからな
チーム開発では起こらないことを無駄に考えてしまうのはよくないって場面の方が多い
チーム開発では起こらないことを無駄に考えてしまうのはよくないって場面の方が多い
47デフォルトの名無しさん (テテンテンテン MM96-e9+l)
2021/03/28(日) 12:40:48.84ID:UWp6RwLlM48デフォルトの名無しさん (ワッチョイ f6de-q+au)
2021/03/28(日) 13:48:24.42ID:mEH1r/L6049デフォルトの名無しさん (アウアウウー Sacd-1mGO)
2021/03/28(日) 14:10:23.36ID:maSv/WgVa 必要になると思って書いておいたプロパティやメソッドが結局まったく使われなかった、
っていうのはないことはないと思う。
YAGNIって普通はこういう話じゃないの?
>>38が言ってるような要らんInterfaceや要らん継承関係を作ってしまうって
YAGNIとちょっと違う気がするし、そもそも普通はあんまりやらん気がするなあ。
っていうのはないことはないと思う。
YAGNIって普通はこういう話じゃないの?
>>38が言ってるような要らんInterfaceや要らん継承関係を作ってしまうって
YAGNIとちょっと違う気がするし、そもそも普通はあんまりやらん気がするなあ。
50デフォルトの名無しさん (ワントンキン MM46-e9+l)
2021/03/28(日) 14:18:03.89ID:YWsxET0EM コードレベルで呼び出されないのと運用上使用されないのは別問題だよ
前者はほぼ例外なく無駄無価値無意味なんで、俺がコードレビューするなら基本的には消させる
前者はほぼ例外なく無駄無価値無意味なんで、俺がコードレビューするなら基本的には消させる
51デフォルトの名無しさん (ワッチョイ 2578-UUyU)
2021/03/28(日) 20:04:07.22ID:GjVtou7p0 スレチ
議論は議論スレでどうぞ
議論は議論スレでどうぞ
52デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/28(日) 20:15:57.09ID:AfIP7Kkq0 >>44-50
横から便乗で質問ですけど、
「いつか使うだろう」とインターフェースや継承関係を作っておく自体は推奨されることですか?
例えば、インターフェースや継承関係が無くても、直付けで作れてしまう訳じゃないですか。
むしろ、そっちの方が楽(というか、直付けでしか作れない人もいますし)。
ただし、物事が複雑化してきたときに、インターフェースや継承関係があると拡張しやすい。
これって上級者なら、(どんなに小さいプログラムだろうが)常にインターフェースや継承関係を作った方がいいのか、
それとも、ケースバイケースで「このぐらい複雑ならインターフェースや継承関係が要る」という判断基準に則って作った方がいいんですか?
横から便乗で質問ですけど、
「いつか使うだろう」とインターフェースや継承関係を作っておく自体は推奨されることですか?
例えば、インターフェースや継承関係が無くても、直付けで作れてしまう訳じゃないですか。
むしろ、そっちの方が楽(というか、直付けでしか作れない人もいますし)。
ただし、物事が複雑化してきたときに、インターフェースや継承関係があると拡張しやすい。
これって上級者なら、(どんなに小さいプログラムだろうが)常にインターフェースや継承関係を作った方がいいのか、
それとも、ケースバイケースで「このぐらい複雑ならインターフェースや継承関係が要る」という判断基準に則って作った方がいいんですか?
53デフォルトの名無しさん (ワッチョイ b1b5-lMfL)
2021/03/28(日) 20:16:36.58ID:AfIP7Kkq054デフォルトの名無しさん (アウアウウー Sacd-1mGO)
2021/03/28(日) 20:49:47.68ID:qVTIlpQ/a55デフォルトの名無しさん (ワッチョイ 328b-UUyU)
2021/03/29(月) 18:40:55.68ID:dJ0caBH40 Seleniumで closeとquitをセットで使ってましたが
quitさへ使えばプロセス残りも防げて万能という認識で良いでしょうか?
quitさへ使えばプロセス残りも防げて万能という認識で良いでしょうか?
56デフォルトの名無しさん (ワッチョイ 328b-UUyU)
2021/03/29(月) 18:41:48.60ID:dJ0caBH40 というのもなぜか、最近アップデートされたChromeドライバーのバグなのか
driver.close();を実行するとやたらと時間が掛かる様になり、ストレスを感じています。
driver.close();を実行するとやたらと時間が掛かる様になり、ストレスを感じています。
57デフォルトの名無しさん (スププ Sdb2-uiCP)
2021/03/31(水) 11:53:07.69ID:/skdgMDzd 演算子のオーバーロードを定義したクラスを継承してそのクラスのオブジェクト同士を足したりしたいんだけど、
継承した子クラス同士足し算してもオーバーロードしてるのが親クラス返してエラー出る…
なんとかなりませんか…
継承した子クラス同士足し算してもオーバーロードしてるのが親クラス返してエラー出る…
なんとかなりませんか…
58デフォルトの名無しさん (エアペラ SD89-H12r)
2021/03/31(水) 12:51:53.66ID:rGwDN8jFD コーのせられる?
59デフォルトの名無しさん (アウアウウー Sacd-1mGO)
2021/03/31(水) 14:43:21.83ID:FnhDsC03a60デフォルトの名無しさん (スププ Sdb2-uiCP)
2021/03/31(水) 17:43:40.43ID:/skdgMDzd61デフォルトの名無しさん (アウアウエー Sada-OegW)
2021/03/31(水) 18:12:45.92ID:k0t0X50Ga 子クラスどうしの演算子を新しく定義する
62デフォルトの名無しさん (ワッチョイ d573-XUMB)
2021/04/02(金) 02:49:16.07ID:4F6/LV520 いやいやゲームはメチャクチャOOPに向いてる。
ゲームエンジンがプロパティペインで物を制作管理していくのが中心になってるってことは
全体としてOOPと相性がいい。
そらそうよ、鋳型と各オブジェクト、その相互作用、隠蔽やインターフェース、
まさにオブジェクト指向言語の基礎サンプルやエクササイズが綺麗にヒットしやすいのがゲームよ。
ゲームエンジンがプロパティペインで物を制作管理していくのが中心になってるってことは
全体としてOOPと相性がいい。
そらそうよ、鋳型と各オブジェクト、その相互作用、隠蔽やインターフェース、
まさにオブジェクト指向言語の基礎サンプルやエクササイズが綺麗にヒットしやすいのがゲームよ。
63デフォルトの名無しさん (ワッチョイ 4ba7-WZCG)
2021/04/02(金) 03:35:33.76ID:p2YnI9xf0 >>62
エアプ乙
ゲームはオブジェクト同士の関連処理が一番多い
それを綺麗に書く処理はオブジェクト指向言語には無い
これを議論するといっつも言語機能に用意されてないもんだから色んなワンダーランドがご披露されるだけのクソ展開になる
いいか
そんなもんないんだ
お前がどう書くかなんて俺は興味ない
ただ言語の機能にない
それだけだ
エアプ乙
ゲームはオブジェクト同士の関連処理が一番多い
それを綺麗に書く処理はオブジェクト指向言語には無い
これを議論するといっつも言語機能に用意されてないもんだから色んなワンダーランドがご披露されるだけのクソ展開になる
いいか
そんなもんないんだ
お前がどう書くかなんて俺は興味ない
ただ言語の機能にない
それだけだ
64デフォルトの名無しさん (オッペケ Sr01-26+2)
2021/04/02(金) 16:59:32.21ID:kD/N/lyPr たんに解がひとつではないだけの話じゃね?
そんなの普通のGUIアプリ一つ取ってもそうじゃん
そんなの普通のGUIアプリ一つ取ってもそうじゃん
65デフォルトの名無しさん (ブーイモ MMa9-ehU2)
2021/04/02(金) 17:30:53.01ID:bweg+I/EM 文面見ればオブジェクト指向を理解して言ってるのかどうかわかるやろ
66デフォルトの名無しさん (ワッチョイ 0d68-0pr0)
2021/04/02(金) 21:13:27.05ID:qd7mj8LF0 議論スレに行った方が良いのか判らないけど、
俺も初心者なんだけどC#の機能を試したくってさ。
基本キャラからキャラ種類別にクラス継承させたりして楽しんでたよ。
でもゴリゴリにスペックを切り詰めるようなゲームだと、そんな余裕はないのかもな。
俺も初心者なんだけどC#の機能を試したくってさ。
基本キャラからキャラ種類別にクラス継承させたりして楽しんでたよ。
でもゴリゴリにスペックを切り詰めるようなゲームだと、そんな余裕はないのかもな。
67デフォルトの名無しさん (エアペラ SD2b-/UL4)
2021/04/02(金) 21:22:46.60ID:nM9RZYDRD ゴリゴリにスペック使うような案件にC#使うとは思えないけど
68デフォルトの名無しさん (ワッチョイ a3e6-JnQU)
2021/04/02(金) 21:33:37.08ID:iQ+JaQcP0 日本産のスマホゲーと大陸産のスマホゲーぐらいの速度差は出るだろうな
69デフォルトの名無しさん (ワッチョイ 2d02-xz58)
2021/04/02(金) 21:37:00.93ID:L8b3h71w0 オブジェクト同士の関連処理を綺麗に書く機能、って具体的にどんな感じの物なのか興味はある。
70デフォルトの名無しさん (ワッチョイ 0d7b-1jBW)
2021/04/02(金) 21:37:57.13ID:JUK+seey0 ここ「初心者の質問スレ」で「初心者の雑談スレ」じゃないんだけどテンプレ読めないの?
マ板でやれ
マ板でやれ
71デフォルトの名無しさん (ワッチョイ 6524-dLXn)
2021/04/02(金) 23:15:46.39ID:jbXSiLa80 >>68
中華の大手どころってマルチプラットフォーム対応なソシャゲもUnityとか使わずにそもそも自前エンジンで開発してね?
中華の大手どころってマルチプラットフォーム対応なソシャゲもUnityとか使わずにそもそも自前エンジンで開発してね?
72デフォルトの名無しさん (ワッチョイ 1dae-lQ1w)
2021/04/03(土) 00:11:57.23ID:nqPdKYBV0 むしろUnityじゃないの見たことない
73デフォルトの名無しさん (アウアウウー Sae9-p1/t)
2021/04/03(土) 01:51:35.91ID:2NRf1R7da >>69
まあ言語機能云々は意味不明に聞こえるねw
前も書いたけど、ゲームの場合Mediator的な装置を用意すべき場面でも
目に見えるオブジェクトに引きずられて変な設計してしまいがちだと
いう意味なら分からんでもない。
バブルボブル(おっさんにしか分からんかも)で泡の相互作用を
Bubbleクラスに無理に実装したらたぶんハマるよね。
まあ言語機能云々は意味不明に聞こえるねw
前も書いたけど、ゲームの場合Mediator的な装置を用意すべき場面でも
目に見えるオブジェクトに引きずられて変な設計してしまいがちだと
いう意味なら分からんでもない。
バブルボブル(おっさんにしか分からんかも)で泡の相互作用を
Bubbleクラスに無理に実装したらたぶんハマるよね。
74デフォルトの名無しさん (ワッチョイ 55b5-vyem)
2021/04/03(土) 02:58:34.81ID:RiNFSwHX0 ちきしょー、分かっちまった
75デフォルトの名無しさん (ワッチョイ 8d2d-kjVL)
2021/04/03(土) 04:13:43.36ID:a3PJiZ4L0 linq便利だなーって使いまくってたけど
最近自分が手続き型の思考をしなくなってきたことが怖くなってきた
これプログラミング能力が低下するのでは..
最近自分が手続き型の思考をしなくなってきたことが怖くなってきた
これプログラミング能力が低下するのでは..
76デフォルトの名無しさん (スフッ Sd43-+5Lz)
2021/04/03(土) 10:48:17.75ID:UQC8gxiad >>75
でもLinqって古くから有る技術の延長にある気がする。
SelectしてWhereで選んでSortしてっていうのは、コマンドプロンプトでパイプリダイレクションとかいう手法に似てる。
ラムダ式とかは新しいのかな。数学の世界とかそういう所では古いのか。
でもLinqって古くから有る技術の延長にある気がする。
SelectしてWhereで選んでSortしてっていうのは、コマンドプロンプトでパイプリダイレクションとかいう手法に似てる。
ラムダ式とかは新しいのかな。数学の世界とかそういう所では古いのか。
77デフォルトの名無しさん (ワッチョイ 8d33-eEFg)
2021/04/03(土) 11:15:26.55ID:vVgJyrul0 やっててよかったラムダ式。
やらなきゃよかった苦悶式。
やらなきゃよかった苦悶式。
78デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/03(土) 12:27:40.46ID:4GR7Zrkb0 >>76
君はLISPを何だと思っているのかね?
君はLISPを何だと思っているのかね?
79デフォルトの名無しさん (ワッチョイ 5d7d-Cvkr)
2021/04/03(土) 12:41:49.44ID:msrmgqC70 そうか、C#だとメソッドチェーンすらも一般的ではないのか…
いやそんな馬鹿な
Unity制御スクリプトとしての利用が多いから?
いいや雑談だし
いやそんな馬鹿な
Unity制御スクリプトとしての利用が多いから?
いいや雑談だし
80デフォルトの名無しさん (ブーイモ MM6b-VtYg)
2021/04/03(土) 12:56:50.93ID:49uAy5SrM81デフォルトの名無しさん (ワッチョイ e54f-lQ1w)
2021/04/03(土) 13:57:02.33ID:PWpcDrEf0 いきなりメソッドチェーンとか持ち出したのはLinqの話に絡めてか?
全然違うものだと思うが。
全然違うものだと思うが。
82デフォルトの名無しさん (ワッチョイ e501-26+2)
2021/04/03(土) 18:55:38.38ID:a2otFyvK0 Linqのクエリ式自体はメソッドチェーンのシンタックスシュガーじゃん
83デフォルトの名無しさん (アウアウウー Sae9-p1/t)
2021/04/03(土) 19:11:52.27ID:CmPk+yxPa メソッドチェーンの元々の意味はvoidのメソッドをthisを返すようにして....
ってことだったんだと思うよ。
個人的にはこういう重箱の隅を突く話は好きじゃないけど
ってことだったんだと思うよ。
個人的にはこういう重箱の隅を突く話は好きじゃないけど
84デフォルトの名無しさん (ワッチョイ 2d02-xz58)
2021/04/04(日) 13:52:07.93ID:U9Ytphde0 >>73
純粋に、自分が知らない有用な書き方があるなら知りたいとは思うんだよな。
別スレの LINQ がらみの話題もやるかどうかは置いておいて勉強にはなったし。
もしくだんの人が出てきてくれて講釈してくれるなら専用のスレぐらいは立てる。
純粋に、自分が知らない有用な書き方があるなら知りたいとは思うんだよな。
別スレの LINQ がらみの話題もやるかどうかは置いておいて勉強にはなったし。
もしくだんの人が出てきてくれて講釈してくれるなら専用のスレぐらいは立てる。
85デフォルトの名無しさん (ワッチョイ 2b02-kjVL)
2021/04/04(日) 17:58:30.84ID:a8juFvNn0 初歩的な事かもしれませんが教えて下さい。
以下のような独自クラス「Group」のリストがあります。
このリストをクラスのAgeListをキーにGroupByしたいのですが上手くグループ化できません。
どうすれば良いでしょうか。
public class Group{
/// グループID
public int Id {get; set;}
/// グループ名
public int GroupName {get; set;}
/// グループ所属の年齢一覧
public List<int> AgeList {get; set;}
public Member()
{
List = new List();
}
}
以下のような独自クラス「Group」のリストがあります。
このリストをクラスのAgeListをキーにGroupByしたいのですが上手くグループ化できません。
どうすれば良いでしょうか。
public class Group{
/// グループID
public int Id {get; set;}
/// グループ名
public int GroupName {get; set;}
/// グループ所属の年齢一覧
public List<int> AgeList {get; set;}
public Member()
{
List = new List();
}
}
86デフォルトの名無しさん (ワントンキン MMa3-7UwS)
2021/04/04(日) 19:15:49.58ID:LnRN74zvM87デフォルトの名無しさん (ワッチョイ ad78-0pr0)
2021/04/04(日) 19:55:19.53ID:m/N7RFml0 >>85
最低限ビルドできるコードを例に挙げろよ
最低限ビルドできるコードを例に挙げろよ
88デフォルトの名無しさん (ワッチョイ b501-5QI3)
2021/04/04(日) 19:59:05.44ID:gm8Ka2TU0 そもそもの設計ヤバない?AgeはMemberに持つのでは?
89デフォルトの名無しさん (ブーイモ MM6b-ehU2)
2021/04/04(日) 20:15:49.42ID:+2DTDHawM デフォルトで使われる比較関数じゃ欲しい結果が得られないからGroupByに独自の比較関数を渡すか、Groupクラスに比較方法を定義しておくかのどちらか
90デフォルトの名無しさん (ブーイモ MM6b-ehU2)
2021/04/04(日) 20:17:26.34ID:+2DTDHawM 新卒研修の課題とかだろうから設計にツッコミいれてもしょうがないような
91デフォルトの名無しさん (ワッチョイ a37c-6/vn)
2021/04/04(日) 20:45:41.30ID:C0fdEpC00 初心者以前の話だよな
何がしたいか位は分かるように書けよと思う
何がしたいか位は分かるように書けよと思う
92デフォルトの名無しさん (アウアウウー Sae9-yx92)
2021/04/04(日) 20:52:52.48ID:ufNVz0O6a 何がしたいかはなんとなくわかるだろ
93デフォルトの名無しさん (ワッチョイ a37c-6/vn)
2021/04/04(日) 20:55:57.89ID:C0fdEpC0094デフォルトの名無しさん (テテンテンテン MM4b-/elG)
2021/04/04(日) 21:09:17.93ID:ghBYdtOLM95デフォルトの名無しさん (ワッチョイ 1bda-UCZ0)
2021/04/04(日) 21:13:12.33ID:xvT8M2vo0 俺はこういう場合、独自解釈して好きなように作る。
今回ならAgeListをソートしてカンマ区切りの文字列にして、をれをキーにする。
でGroupByだな。
過去この独自解釈が5割くらいそのまま仕様になってる
今回ならAgeListをソートしてカンマ区切りの文字列にして、をれをキーにする。
でGroupByだな。
過去この独自解釈が5割くらいそのまま仕様になってる
96デフォルトの名無しさん (アウアウウー Sae9-yx92)
2021/04/04(日) 21:16:41.13ID:jr3tMa1na >>93
>独自クラス「Group」のリスト
>このリストをクラスのAgeListをキーにGroupByしたい
List<Group> list = new List<Group>();
// なんか処理
list.Groupby(x => x.AgeList)
ってしたいって理解したんだけど違うんかな
宣言でそもそも間違ってるのは知らん
>独自クラス「Group」のリスト
>このリストをクラスのAgeListをキーにGroupByしたい
List<Group> list = new List<Group>();
// なんか処理
list.Groupby(x => x.AgeList)
ってしたいって理解したんだけど違うんかな
宣言でそもそも間違ってるのは知らん
97デフォルトの名無しさん (ワッチョイ 552c-s+Uo)
2021/04/04(日) 22:12:27.02ID:0QnJQanX0 Ruby なら、こういう感じ
members = [ {id: 1, age: 30}, {id: 2, age: 20}, {id: 3, age: 50} ]
p members.sort_by{ |member| member[ :age ] }
出力
[{:id=>2, :age=>20}, {:id=>1, :age=>30}, {:id=>3, :age=>50}]
members = [ {id: 1, age: 30}, {id: 2, age: 20}, {id: 3, age: 50} ]
p members.sort_by{ |member| member[ :age ] }
出力
[{:id=>2, :age=>20}, {:id=>1, :age=>30}, {:id=>3, :age=>50}]
98デフォルトの名無しさん (ラクッペペ MM4b-M4Sc)
2021/04/04(日) 22:18:00.59ID:LUDq5H1sM >>97
C#なら?
C#なら?
99デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/04(日) 22:23:09.43ID:ciXsbyqc0 >>97
APLなら?
APLなら?
100デフォルトの名無しさん (ワッチョイ 55b5-vyem)
2021/04/04(日) 22:32:47.74ID:glgnW2pm0 そんな議論はさておき、俺様が>>100を掻っ攫う
101デフォルトの名無しさん (ワッチョイ a37c-0pr0)
2021/04/04(日) 22:38:41.33ID:C0fdEpC00 Rubyガイジは無視して同じコードをちょっと書いてみた
https://paiza.io/projects/XRdHMEMPrv4_lIhlB8WYuw
https://paiza.io/projects/XRdHMEMPrv4_lIhlB8WYuw
102デフォルトの名無しさん (ブーイモ MM6b-VtYg)
2021/04/04(日) 22:45:22.63ID:7UKH0ZmwM ピザくいたい
103デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/04(日) 22:48:28.83ID:ciXsbyqc0 この時間だからラーメンにしておきな
104デフォルトの名無しさん (スップ Sd03-nQQ9)
2021/04/07(水) 14:11:22.94ID:/xOeegWId C++とJavaを業務でやっていてc#始めた初心者です。
Xamarin.Mac でmacOSのアプリを作りながら学んでるけど
恐ろしく情報が少ない…。Macでc#使う人って少ないんでしょうか?
Xamarin.Mac でmacOSのアプリを作りながら学んでるけど
恐ろしく情報が少ない…。Macでc#使う人って少ないんでしょうか?
105デフォルトの名無しさん (ワッチョイ a37c-0pr0)
2021/04/07(水) 20:43:30.57ID:keBvs1o20 そもそもXamarinで作る必要あるのかという感じがする
正直流行ってないからね
Java出来るならJavaでいいんじゃね?
もっと新しい技術ということならelectronをお勧めしておくわ
Windows限定アプリならVisualStudioでC#は楽でいいけどね
正直流行ってないからね
Java出来るならJavaでいいんじゃね?
もっと新しい技術ということならelectronをお勧めしておくわ
Windows限定アプリならVisualStudioでC#は楽でいいけどね
106デフォルトの名無しさん (スフッ Sd43-+5Lz)
2021/04/07(水) 21:57:44.60ID:5xSMK6sJd MacといえばSwiftじゃないの?
107デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/07(水) 22:41:15.43ID:fLp1VLDK0108デフォルトの名無しさん (ワッチョイ e501-nQQ9)
2021/04/08(木) 03:06:33.38ID:AfyS2Eek0 >>105-107
回答ありがとうございます。
マジですか。。。C#以外をお勧めされて複雑ですが
その言語も調べておきます。
まだC#学習して1ヶ月程度ですが機能が盛り沢山で面白いので
Macでも普及して欲しいですね(´・ω・`)
回答ありがとうございます。
マジですか。。。C#以外をお勧めされて複雑ですが
その言語も調べておきます。
まだC#学習して1ヶ月程度ですが機能が盛り沢山で面白いので
Macでも普及して欲しいですね(´・ω・`)
109デフォルトの名無しさん (スフッ Sd43-+5Lz)
2021/04/08(木) 03:47:40.98ID:mAebMgXVd 機能は盛りだくさんでもPythonやJavaの方が人気なんだよね。
それぞれ良し悪しや向き不向きがあるだろうけど。
それぞれ良し悪しや向き不向きがあるだろうけど。
110デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/08(木) 04:49:18.36ID:SlRPMViD0 今、統計的な素養があってPytorch触れると
月単価150万からだもんなぁ。
月単価150万からだもんなぁ。
111デフォルトの名無しさん (ワッチョイ a37c-0pr0)
2021/04/08(木) 14:03:49.02ID:3r6MsATA0 >>108
どうしてもC#がいいなら採用出来るかどうかは別にしてもUnityという手はあるけどね
どうしてもC#がいいなら採用出来るかどうかは別にしてもUnityという手はあるけどね
112デフォルトの名無しさん (ワッチョイ 55b5-vyem)
2021/04/08(木) 14:17:05.70ID:d++ONVxC0 >>110
TensorFlowでもええん?ダメなん?
TensorFlowでもええん?ダメなん?
113デフォルトの名無しさん (ワッチョイ 2d5f-KShf)
2021/04/08(木) 16:37:37.25ID:kfGdZKXS0 これってDLL importとかしなくなるってことですか?
https://www.atmarkit.co.jp/ait/articles/2101/29/news113.html
https://www.atmarkit.co.jp/ait/articles/2101/29/news113.html
114デフォルトの名無しさん (ワッチョイ e384-bVUD)
2021/04/08(木) 17:10:27.78ID:eSL736QZ0 >>113
MSが共通Wrapper作りましたってことでDLL importは必要なくなるし、アンマネージ
部分についてもお約束を守ればよくなるみたいだけど、サンプル見ると色々手続きが
面倒臭そうで使い勝手は良くなさそう
MSが共通Wrapper作りましたってことでDLL importは必要なくなるし、アンマネージ
部分についてもお約束を守ればよくなるみたいだけど、サンプル見ると色々手続きが
面倒臭そうで使い勝手は良くなさそう
115デフォルトの名無しさん (アウアウウー Sae9-kjVL)
2021/04/08(木) 17:48:44.06ID:4s+x/uBpa void*とかobjectにするしかないだろうしアホみたいなオーバーロードの山になるだろうし
始まる前から破綻の予感しかしない
っていうか何で今更
始まる前から破綻の予感しかしない
っていうか何で今更
116デフォルトの名無しさん (テテンテンテン MM4b-/elG)
2021/04/08(木) 18:56:34.79ID:HxWbcod1M そもそもガンガンWin32API使うなら素直にC/C++使うし、C#だとちょっとつまみ食いする程度にしか使わんから今のままでもいいや
117デフォルトの名無しさん (ワッチョイ a3e6-JnQU)
2021/04/08(木) 19:11:09.64ID:7Q+Xoj4V0 apiで使う構造体とかの面倒くささが無くなるならいいんじゃない?
118デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/08(木) 20:07:04.02ID:SlRPMViD0 >>112
需要と供給で単価は決まるからなぁ
需要と供給で単価は決まるからなぁ
119デフォルトの名無しさん (ワッチョイ 2d5f-MW8P)
2021/04/08(木) 20:11:07.35ID:Rugi+GK60 Cじゃない言語でOS作り直してくれよもう
120デフォルトの名無しさん (ワッチョイ cbda-2D+M)
2021/04/08(木) 20:20:01.96ID:SlRPMViD0 アセンブラけ?
121デフォルトの名無しさん (ワッチョイ 0d68-0pr0)
2021/04/08(木) 21:41:44.08ID:oExYloS10 OSのようなハードに近いレベルの言語となると、Rustが流行ってるのかな。
C#でそういうのも出来ると良いのにね。
C#でそういうのも出来ると良いのにね。
122デフォルトの名無しさん (ワッチョイ 9b42-0pr0)
2021/04/08(木) 22:08:07.77ID:5uUtmx9J0 >>113
https://dot-sharp.com/net-getdetailsof/
Shell32.dllを使うとき、com参照を追加するだけでC#のライブラリと同じ程度の手軽さで使えました
これが増えるってならいいんじゃないかな
https://dot-sharp.com/net-getdetailsof/
Shell32.dllを使うとき、com参照を追加するだけでC#のライブラリと同じ程度の手軽さで使えました
これが増えるってならいいんじゃないかな
123デフォルトの名無しさん (ワッチョイ 6fb5-KVJ7)
2021/04/09(金) 01:46:32.36ID:tMeqLsRz0124デフォルトの名無しさん (ワッチョイ 8eda-789v)
2021/04/09(金) 04:55:29.41ID:dxRxz0Yw0 C#をネイティブコンパイルできうようにすればいいだけだと思うが。
なぜ回り道をするのか
なぜ回り道をするのか
125デフォルトの名無しさん (ワッチョイ c6da-z9yU)
2021/04/09(金) 05:03:11.50ID:mVBnPI5w0126デフォルトの名無しさん (ワッチョイ 6fb5-KVJ7)
2021/04/09(金) 10:06:28.56ID:tMeqLsRz0127デフォルトの名無しさん (ワッチョイ 86bb-eWep)
2021/04/09(金) 15:11:32.43ID:Sg2n4mcl0 AI関連は、何を使えるかよりどこの博士号を持ってるかの方が重要なんだろ?
128デフォルトの名無しさん (ワッチョイ c6da-z9yU)
2021/04/09(金) 19:20:58.42ID:mVBnPI5w0 CNTKの求人って見ないな
ttps://www.bigdata-navi.com/
ttps://www.bigdata-navi.com/
129デフォルトの名無しさん (ワッチョイ 67da-MIQy)
2021/04/10(土) 07:46:10.33ID:qc4cGBnV0 以前画面解像度切り替えのツールを作った時にvanaraといwin32apiのラッパー使ったな
構造体も用意してあって簡単に使えた
構造体も用意してあって簡単に使えた
130デフォルトの名無しさん (ワッチョイ 1724-uCSv)
2021/04/10(土) 09:05:48.65ID:Zw7mVk6D0 win32って一々ラッパー挟まずとも実はC#側で結構調節してくれるんだよな
GetProcAddressみたいなANSI版しかないような関数でもstringそのまま放り込んでもちゃんと機能してびっくりした
GetProcAddressみたいなANSI版しかないような関数でもstringそのまま放り込んでもちゃんと機能してびっくりした
131デフォルトの名無しさん (ワッチョイ 6743-1WRr)
2021/04/10(土) 20:01:50.03ID:00IQtlCT0 人はそれをマーシャリングと呼ぶのである
132デフォルトの名無しさん (ワッチョイ bb2d-ksEv)
2021/04/10(土) 21:24:18.51ID:mb0ile8c0 a={1, 2, 3, 4}という配列が与えられて
更に10進数x=5が与えられた時、5を2進数にして101なので
(最下位ビットがa[0]になります)
配列の要素1と3の和を出力せよという課題が出ました
var r = 0;
for (int i = 0; i < a.Length; i++)
if ((x & i << 1) == 0)
r += a[i];
で求める答えが出そうだと思ったのですが
4ではなく3が出ます。どこが間違っているんでしょうか
更に10進数x=5が与えられた時、5を2進数にして101なので
(最下位ビットがa[0]になります)
配列の要素1と3の和を出力せよという課題が出ました
var r = 0;
for (int i = 0; i < a.Length; i++)
if ((x & i << 1) == 0)
r += a[i];
で求める答えが出そうだと思ったのですが
4ではなく3が出ます。どこが間違っているんでしょうか
133デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/10(土) 22:21:05.25ID:ZQT/KDjfa >>132
わざと間違えてない?w
static int GetBit(uint x, int position)
{
return (int)((x >> position) & 1);
}
わざと間違えてない?w
static int GetBit(uint x, int position)
{
return (int)((x >> position) & 1);
}
134デフォルトの名無しさん (ワッチョイ bb2d-ksEv)
2021/04/10(土) 22:33:06.71ID:mb0ile8c0 >>133
その書き方だと通るんですよね..
下のように解説してるサイトがあったのでそう書いてみたのですが
なんかおかしいんです
ビット bit に i 番目のフラグが立っているかどうか if (bit & (1<<i))
その書き方だと通るんですよね..
下のように解説してるサイトがあったのでそう書いてみたのですが
なんかおかしいんです
ビット bit に i 番目のフラグが立っているかどうか if (bit & (1<<i))
135デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/10(土) 23:55:58.75ID:GWhpBmtX0 え。
>if ((x & i << 1) == 0)
>if (bit & (1<<i))
>if ((x & i << 1) == 0)
>if (bit & (1<<i))
136デフォルトの名無しさん (ワッチョイ bb2d-ksEv)
2021/04/11(日) 00:13:20.51ID:Zc34G5gB0 あ、やっと気づきました
bit操作理解せずに、コピペで済ませてた弊害が出ました
ありがとうございました
bit操作理解せずに、コピペで済ませてた弊害が出ました
ありがとうございました
137デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/11(日) 00:18:38.88ID:gSPWaQTLa138デフォルトの名無しさん (スフッ Sd02-gbe5)
2021/04/11(日) 06:53:51.52ID:+8zEqMg4d Typescriptじゃインターフェース名にI(アイ)をつけないのが推奨されてるけど、
C#もそうなったりするのかな。
C#もそうなったりするのかな。
139デフォルトの名無しさん (ワッチョイ 0b78-CoCA)
2021/04/11(日) 08:10:38.23ID:JfLfucqJ0 破壊的変更を.NETユーザーが受け入れてくれるなら良いんじゃね
140デフォルトの名無しさん (ワッチョイ d74f-1WRr)
2021/04/11(日) 08:23:58.76ID:DcU1Z0EW0141デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/11(日) 12:26:31.31ID:y6cz0vLM0 C#でIが取れなかったのはCOMの影響があったからとかなんとか
今更C#の方針を変えることはないだろうね
今更C#の方針を変えることはないだろうね
142デフォルトの名無しさん (アウアウエー Sa3a-PnGn)
2021/04/11(日) 13:01:27.23ID:+MjFaIzva エディタで色分けしてくれればいclass, struct, interface, abstract
143デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/11(日) 17:06:24.47ID:LOxmuPpta プリフィクスのIは字面からインターフェイスだと分かるようにしたい、という強迫神経症的な動機というより、
単純に名前のバッティングを機械的に回避できる点が大きいんじゃないの?
単純に名前のバッティングを機械的に回避できる点が大きいんじゃないの?
144デフォルトの名無しさん (ワッチョイ df01-slfm)
2021/04/11(日) 17:51:20.56ID:v+npbxj+0 どうせインターフェースにIを付けなくなっても、実装クラスのいい名前が思いつかずになんとかImplってサフィックスつけるんだろ?
145デフォルトの名無しさん (ワッチョイ 7b68-CoCA)
2021/04/11(日) 19:02:53.13ID:jqn7J9El0 Delphiだと、クラスにはTypeのT、パラメータにはFieldのFを付けるんだよね。
InterfaceのIはその名残なのかな、とか思ったんだよ。
そして、そういうのは無くしていく傾向なのかな、と。
InterfaceのIはその名残なのかな、とか思ったんだよ。
そして、そういうのは無くしていく傾向なのかな、と。
146デフォルトの名無しさん (ワッチョイ 227c-YIZl)
2021/04/11(日) 20:39:38.45ID:9ef64+I30147デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/11(日) 21:55:51.16ID:XlCnUXyn0 命名規則で一番上手くいってるのはC#と思う
インターフェースにプリフィックスIをつけるから命名で困った時にImplとかやらなくてすむし
プロパティ名は大文字で始めるから小文字で始めるローカル変数とぶつかりにくいし
インターフェースにプリフィックスIをつけるから命名で困った時にImplとかやらなくてすむし
プロパティ名は大文字で始めるから小文字で始めるローカル変数とぶつかりにくいし
148デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/11(日) 22:00:03.96ID:XlCnUXyn0 で、最近は名前がさらぶつかりにくくなるようにメンバ変数はm_を付けるスタイルに個人的に変更した
149デフォルトの名無しさん (ワッチョイ 6793-I7Om)
2021/04/11(日) 23:11:51.93ID:Jjs5QDLf0 キャメルケースwww
150デフォルトの名無しさん (ワッチョイ 47ac-0zu2)
2021/04/11(日) 23:30:29.10ID:gtdLzQZJ0 まあVSの恩恵でかいよなあって
151デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/12(月) 00:03:30.52ID:5s47Rc9D0152デフォルトの名無しさん (ワッチョイ d7f2-GYEe)
2021/04/12(月) 00:35:55.51ID:z0nrn9OY0 なるほどなぁ
ちなみにIListはなんて名前にすればより適切だと思う?
ちなみにIListはなんて名前にすればより適切だと思う?
153デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/12(月) 00:41:39.46ID:JfC2SlE/0 おまえ馬鹿か
たいていぶつかるのはローカル変数や外部に公開しないクラス名だろ
JavaのImpl使うのだって、内部クラスや非公開や内部のエンジンクラスとか
たいていぶつかるのはローカル変数や外部に公開しないクラス名だろ
JavaのImpl使うのだって、内部クラスや非公開や内部のエンジンクラスとか
154デフォルトの名無しさん (ワッチョイ e290-nwb8)
2021/04/12(月) 00:43:02.12ID:JfC2SlE/0 そんなのに適切な名前なんかブッキングできねぇよカス
155デフォルトの名無しさん (ワッチョイ 7b68-CoCA)
2021/04/12(月) 04:43:49.73ID:FczQKoXE0 >>152
Microsoftの推奨する命名規則を参考にすれば良いんじゃない?
つまり、I付きPascal形式でスペル省略不可のフルネームで名詞を表せば良いのかな。
自由に付けても良いけど、.Net Frameworkと調子を合わせると違和感が無いと思う。
Microsoftの推奨する命名規則を参考にすれば良いんじゃない?
つまり、I付きPascal形式でスペル省略不可のフルネームで名詞を表せば良いのかな。
自由に付けても良いけど、.Net Frameworkと調子を合わせると違和感が無いと思う。
156デフォルトの名無しさん (ワッチョイ 2b54-USUf)
2021/04/12(月) 06:14:41.91ID:nRLgqnE00 うちの会社、昔から変数名の1文字目にデータ型の略称(?)をつける文化みたいで、
intのListがiListだったり、longのListがlListだったり、ちょっと困惑した。
intのListがiListだったり、longのListがlListだったり、ちょっと困惑した。
157デフォルトの名無しさん (ワッチョイ c6da-GYEe)
2021/04/12(月) 06:47:12.36ID:HnVQKAJ10158デフォルトの名無しさん (エアペラ SD02-I7Om)
2021/04/12(月) 07:54:06.97ID:lF7oqfJtD MSの.NETプログラムにおける命名ガイドラインな
ttps://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/naming-guidelines
ttps://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/naming-guidelines
159デフォルトの名無しさん (スフッ Sd02-gbe5)
2021/04/13(火) 07:46:13.80ID:FVP0aIINd 皆さんコメント入れる? 命名規約とか守ってたらコメント要らないような気がしてきた。
160デフォルトの名無しさん (ワッチョイ 2b54-USUf)
2021/04/13(火) 08:25:02.43ID:lZomqcCZ0161デフォルトの名無しさん (アウアウウー Sabb-VfxA)
2021/04/13(火) 08:48:00.08ID:cGgJVHDFa >>159
入れる
入れる
162デフォルトの名無しさん (ワッチョイ 227c-CoCA)
2021/04/13(火) 09:02:05.69ID:t+pv5GMk0 visualstudioだとクラスやメソッドの1行前に///入力で自動補完されるからそれは使ってるかな
163デフォルトの名無しさん (アウアウエー Sa3a-PnGn)
2021/04/13(火) 09:08:35.29ID:gWbnUgF3a 日付、所属、名前、旧コードはコメントに残すのが常識でしょ
164デフォルトの名無しさん (ワッチョイ 2349-0zu2)
2021/04/13(火) 09:19:57.30ID:Ehg3izfw0 ギャグかな?
165デフォルトの名無しさん (ワッチョイ cb5f-wtuO)
2021/04/13(火) 11:05:10.28ID:fFoE8jgx0 バージョン管理ツール使ってるのに旧コード残すやつにはイラッとする!
特に不具合のコードをコメントアウトして残されてると、当てつけなのかと思ってしまう
特に不具合のコードをコメントアウトして残されてると、当てつけなのかと思ってしまう
166デフォルトの名無しさん (ワッチョイ bb33-qZRM)
2021/04/13(火) 12:14:15.55ID:YrXVy+xO0 コメントって入れるものだったんだ。
書くものだと思ってた。
書くものだと思ってた。
167デフォルトの名無しさん (エアペラ SD02-I7Om)
2021/04/13(火) 12:48:28.16ID:ZNHsyNhsD >>159
コメントには「なぜ」を書くんだよ
コメントには「なぜ」を書くんだよ
168デフォルトの名無しさん (ワッチョイ df01-AJCP)
2021/04/13(火) 14:24:24.21ID:ovEIWddm0 なぜこんなコード書いたんですか?と書いて旧コードを残すわけですね
169デフォルトの名無しさん (ブーイモ MM93-GYEe)
2021/04/13(火) 14:40:11.12ID:cQExUzr8M 168が仕様を理解せずおかしな実装を
したので辻褄合わせの辞書を実装しました by 167
したので辻褄合わせの辞書を実装しました by 167
170デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/13(火) 16:02:36.93ID:ct/xqAfva >>159
コメントは基本的には必要悪なので必要がない限り書かないのが正しいけど、
少なくともパブリックメンバーについては単純に「必要」かもしれんね。
ないと書いた人の意図を変に誤解してないか不安になって
結局中のコードを覗きたくなるかもしれない。
そんなことしなくて済むためのカプセル化のはずなのに
コメントは基本的には必要悪なので必要がない限り書かないのが正しいけど、
少なくともパブリックメンバーについては単純に「必要」かもしれんね。
ないと書いた人の意図を変に誤解してないか不安になって
結局中のコードを覗きたくなるかもしれない。
そんなことしなくて済むためのカプセル化のはずなのに
171デフォルトの名無しさん (ワッチョイ f784-AglQ)
2021/04/13(火) 17:44:15.92ID:Kc5TdA4a0 1年後に自分の書いたコード読んで、何をやっているかちゃんと理解できるならば
書かなくてもよいんじゃないかなw
書かなくてもよいんじゃないかなw
172デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 18:24:41.93ID:arsZDomXD >>171
何をやってるかなんてコード読めば解るんだから、
そんなことのためにコメントは不要
「なぜ」そんなメソッドが必要か、
「なぜ」そのデータ構造やアルゴリズムを選択したか
なんていう、コードから見えない情報を記すのがコメント
何をやってるかなんてコード読めば解るんだから、
そんなことのためにコメントは不要
「なぜ」そんなメソッドが必要か、
「なぜ」そのデータ構造やアルゴリズムを選択したか
なんていう、コードから見えない情報を記すのがコメント
173デフォルトの名無しさん (ワントンキン MM92-qfGw)
2021/04/13(火) 18:31:59.11ID:KJ4k5XjpM MS含めアメリカ製の高品質なコードって「なぜ」のコメントが無茶苦茶充実してるよな
日本だとだいたい // 〇〇処理 みたいな無意味なコメントか、ほとんど無いかのどちらか
SaaSとか一般的にレベル高いと思われてるはずの現場では、だいたい後者のパターンでほぼコメントが無い
根本的に論理的な言語能力に差があるんだろうなと思わざるを得ないわ
日本だとだいたい // 〇〇処理 みたいな無意味なコメントか、ほとんど無いかのどちらか
SaaSとか一般的にレベル高いと思われてるはずの現場では、だいたい後者のパターンでほぼコメントが無い
根本的に論理的な言語能力に差があるんだろうなと思わざるを得ないわ
174デフォルトの名無しさん (アウアウウー Sabb-VfxA)
2021/04/13(火) 18:37:50.47ID:781G2uFla コードレビューでコメントを書けって指摘されるじゃんw
175デフォルトの名無しさん (ブーイモ MM3e-PnGn)
2021/04/13(火) 18:43:17.63ID:/XAQKj46M コメントなんて要らないんだよ
コミットログを見ればいいんだから
コミットログを見ればいいんだから
176デフォルトの名無しさん (ワッチョイ df01-qZRM)
2021/04/13(火) 18:48:56.00ID:2mKMjuav0 private なプロパティってフィールドにするべきですか?
177デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/13(火) 18:55:44.96ID:ufUQjDoVa178デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:02:46.98ID:arsZDomXD179デフォルトの名無しさん (ワントンキン MM92-qfGw)
2021/04/13(火) 19:08:03.49ID:KJ4k5XjpM180デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/13(火) 19:14:53.40ID:ufUQjDoVa >>178
コメントはバグる可能性があるからコメント書くな、
なんて言ったらバグる可能性があるのはコードも同じなんだから
コードも書くなってことになっちゃうよw
「不必要なコメントは有害無益」は正しいけど、それは
必要なコメントを否定する根拠にはなりえない。
コメントはバグる可能性があるからコメント書くな、
なんて言ったらバグる可能性があるのはコードも同じなんだから
コードも書くなってことになっちゃうよw
「不必要なコメントは有害無益」は正しいけど、それは
必要なコメントを否定する根拠にはなりえない。
181デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:40:32.77ID:arsZDomXD >>180
コメントがバグるって話じゃなく、
書いた人の「つもり」がコメントとして残るのが危うい
実行時にどう動くかを決めるのは、コメントではなくコードなのだから、
コメントを読んでコードを読んだつもりになれるのも危うい
コメントがバグるって話じゃなく、
書いた人の「つもり」がコメントとして残るのが危うい
実行時にどう動くかを決めるのは、コメントではなくコードなのだから、
コメントを読んでコードを読んだつもりになれるのも危うい
182デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:42:57.23ID:arsZDomXD 入門書の多くがコメントの書き方を蔑ろにしてるのが元凶だと思うんだよね
ほぼ単なるメモ機能としての記載しかされてない
ほぼ単なるメモ機能としての記載しかされてない
183デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/13(火) 19:46:12.88ID:arsZDomXD 続いちゃったので議論スレに移します
https://mevius.5ch.net/test/read.cgi/tech/1469538912/82
https://mevius.5ch.net/test/read.cgi/tech/1469538912/82
184デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/13(火) 19:48:22.85ID:DZHUx02Q0 「コードを読めば何してるか分かる」のだから、メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
・・・たまにブチ切れたくなることがあるけどな。
・・・たまにブチ切れたくなることがあるけどな。
185デフォルトの名無しさん (ワッチョイ 4f5f-AJCP)
2021/04/13(火) 19:53:58.09ID:1xWi7ZbJ0 >>182
あれは解説を見ないとプログラムが理解できない人向けの本なんだからそれをコメントに書くのは当たり前じゃん
あれは解説を見ないとプログラムが理解できない人向けの本なんだからそれをコメントに書くのは当たり前じゃん
186デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/13(火) 20:27:38.26ID:vPRWCVoWM187デフォルトの名無しさん (ワッチョイ c6da-z9yU)
2021/04/13(火) 20:43:00.23ID:YIOTduDg0188デフォルトの名無しさん (ワッチョイ cb5f-CoCA)
2021/04/13(火) 21:22:13.67ID:51HoYqEa0 ドキュメント代わりにしてるから入れる
///<summry>
の形式のやつ
doxygenで出力してモジュール設計書として納品して一丁上がり
///<summry>
の形式のやつ
doxygenで出力してモジュール設計書として納品して一丁上がり
189デフォルトの名無しさん (ワッチョイ 06a7-ucxl)
2021/04/13(火) 21:30:50.70ID:cA2aWYvl0 クラス図もシーケンス図もねぇのになにいってんだこのバカ
190デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/14(水) 05:43:13.79ID:C2CdPm+G0 >>186
だから要らないって話だろ
var hoge = items.First();
で最初の要素を取得するなんてコメントは要らん
記載するならwhy何故取得するのかだけ書けばいい
もし動作について記載したくなったなら、それはメソッド化するとかを検討した方がいい
だから要らないって話だろ
var hoge = items.First();
で最初の要素を取得するなんてコメントは要らん
記載するならwhy何故取得するのかだけ書けばいい
もし動作について記載したくなったなら、それはメソッド化するとかを検討した方がいい
191デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/14(水) 06:13:30.67ID:NHvKxhVFM192デフォルトの名無しさん (ワッチョイ 8e62-2UTP)
2021/04/14(水) 07:02:48.39ID:C2CdPm+G0 それはアホだけどコメント入らないも的外れって指摘なんだが
193デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/14(水) 07:55:29.84ID:IRkO9LrOM194デフォルトの名無しさん (ブーイモ MM3e-Y7rb)
2021/04/14(水) 10:15:09.46ID:+thTLvERM 宗教が合わないと作成者本人が綺麗に作ったつもりでも読みにくくてしょうがないからブロック毎に動作の概要ぐらいはコメントで書いといて欲しいわ
195デフォルトの名無しさん (ワッチョイ 6fb5-KVJ7)
2021/04/14(水) 10:31:27.70ID:GNdqlmcr0 なんだよ、せっかく議論スレに移ったのについてきてねーじゃん
正直者が馬鹿を見る世界
もう移らん、絶対移らん(笑)
俺はコメント入れてほしい派
読めば判るっつってもさ、
コード書いてる本人ですら
何やってるか分かってない場合もあるからな(笑)
せめてコメントで
「ここではこんなことをしてる(つもり)」
って書いてくれら「全然そうなってないだろ!」と突っ込める
正直者が馬鹿を見る世界
もう移らん、絶対移らん(笑)
俺はコメント入れてほしい派
読めば判るっつってもさ、
コード書いてる本人ですら
何やってるか分かってない場合もあるからな(笑)
せめてコメントで
「ここではこんなことをしてる(つもり)」
って書いてくれら「全然そうなってないだろ!」と突っ込める
196デフォルトの名無しさん (ワッチョイ c602-Pg6q)
2021/04/14(水) 11:35:41.20ID:pb7R6DhS0 xxxInternal
xxxPublic
xxxOverride
xxxPublic
xxxOverride
197デフォルトの名無しさん (ブーイモ MM3e-D3kA)
2021/04/14(水) 11:40:36.85ID:tyZiRMgdM パワーポイントやエクセル内の文字列を検索するクラスってありますか?
windowsの検索窓ではなく…
windowsの検索窓ではなく…
198デフォルトの名無しさん (ワントンキン MMf7-qfGw)
2021/04/14(水) 11:48:50.60ID:RaIqb6oIM >>197
Windows Searchを使えば検索窓と同等の機能がプログラムから使える
Windows Searchを使えば検索窓と同等の機能がプログラムから使える
199デフォルトの名無しさん (ブーイモ MM3e-D3kA)
2021/04/14(水) 11:53:46.39ID:tyZiRMgdM200デフォルトの名無しさん (ワッチョイ 6793-I7Om)
2021/04/14(水) 14:15:46.62ID:MmF8o4I50 議論スレに移れないってことは、
コメント付けたところで読めない無能だから無意味って証明になったな
コメント付けたところで読めない無能だから無意味って証明になったな
201デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/14(水) 14:21:26.07ID:IGhCcGj6a202デフォルトの名無しさん (アウアウウー Sabb-ksEv)
2021/04/14(水) 14:23:38.27ID:IGhCcGj6a ついでに、これも何度も言ってるが、そんなくだらない「交通整理」に誰も従わないのは
「交通整理」の欺瞞性とそれを主張している人間の卑しい動機に普通は気が付くから。
「交通整理」の欺瞞性とそれを主張している人間の卑しい動機に普通は気が付くから。
203デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/14(水) 17:19:19.99ID:gLzfQxv5D >>202
卑しい動機って何?
卑しい動機って何?
204デフォルトの名無しさん (ラクッペペ MM8e-tPyg)
2021/04/14(水) 17:43:05.15ID:fKew9GPPM 他人を見下し自分が主導権を握りたいという自分勝手な承認欲求が行動原理
205デフォルトの名無しさん (ワッチョイ 0663-oziv)
2021/04/14(水) 17:58:45.23ID:d4l1z4pL0206デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/14(水) 19:48:09.33ID:5dAhuQZZ0 >>193
その 184 だけど。w
「コードを読めば何してるか分かる」な人は、そもそもコメントがなくてもいいんだから、書かれていても無視すればいい。
コメントが欲しい人は、コメントの弊害(メンテ忘れとか)の現状を承知の上でそう言ってるんだから、そもそも問題ない。
つまり、コメントがいる/いらないの論争は無意味だからやめとけってことなんだよ。
その上で「コードを読めば何してるか分かる」ように丁寧な書き方を目指せば済むことじゃん。
まあ自分はブロックと言うか処理単位でのコメントは出来るだけ書くけど。
その 184 だけど。w
「コードを読めば何してるか分かる」な人は、そもそもコメントがなくてもいいんだから、書かれていても無視すればいい。
コメントが欲しい人は、コメントの弊害(メンテ忘れとか)の現状を承知の上でそう言ってるんだから、そもそも問題ない。
つまり、コメントがいる/いらないの論争は無意味だからやめとけってことなんだよ。
その上で「コードを読めば何してるか分かる」ように丁寧な書き方を目指せば済むことじゃん。
まあ自分はブロックと言うか処理単位でのコメントは出来るだけ書くけど。
207デフォルトの名無しさん (ブーイモ MM3e-8zEc)
2021/04/14(水) 19:57:35.09ID:un1gf4OwM だってコメント邪魔なんだもん
208デフォルトの名無しさん (ブーイモ MM3e-PnGn)
2021/04/14(水) 20:17:08.74ID:22Gnyx3vM ・コメントがあるとノイズになり視認性が落ちる
・コメントには嘘が混ざっていたり情報が欠落していることがあるので常にコードとコメントの整合性を確認しながら読まなくてはならない
・コメントに嘘を混ぜたり情報を欠落させないために細心の注意を払わないとコードを更新できなくなる
・コメントには嘘が混ざっていたり情報が欠落していることがあるので常にコードとコメントの整合性を確認しながら読まなくてはならない
・コメントに嘘を混ぜたり情報を欠落させないために細心の注意を払わないとコードを更新できなくなる
209デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/14(水) 21:19:55.23ID:5dAhuQZZ0 これは茶化しで書くけど。
コメントがなければストレスなく読める美しいコードなんて見たことないなあ。
コメントがなければストレスなく読める美しいコードなんて見たことないなあ。
210デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/14(水) 22:05:49.52ID:MpN5sHI3M211デフォルトの名無しさん (ワッチョイ cb02-+YuK)
2021/04/14(水) 22:33:48.02ID:5dAhuQZZ0 そーなのか。
じゃあバカな私に分かるようにおまえ様の主張をきちんと述べてみてくれ。
じゃあバカな私に分かるようにおまえ様の主張をきちんと述べてみてくれ。
212デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/15(木) 07:44:33.23ID:UZqM7amYM213デフォルトの名無しさん (ブーイモ MM3e-VRFv)
2021/04/15(木) 08:01:46.43ID:PPG2Aw5dM 改修履歴をコメントで残すとかいうのさえなけりゃ
他のコメントはコード読むのに邪魔になりはしない
他のコメントはコード読むのに邪魔になりはしない
214デフォルトの名無しさん (エアペラ SD7a-I7Om)
2021/04/15(木) 08:08:37.68ID:OPERSbUtD215デフォルトの名無しさん (アウアウウー Sabb-VfxA)
2021/04/15(木) 09:10:14.90ID:UMT499lla 必要だからどの言語もコメント機能が有るのでは?
216デフォルトの名無しさん (ワッチョイ 4e42-CoCA)
2021/04/15(木) 10:39:52.56ID:V+OBz7ue0 言語ではないけどjsonってのが有ってだな
217デフォルトの名無しさん (ワッチョイ e202-OeC+)
2021/04/15(木) 11:20:52.75ID:ZYoZizjK0 >>209
ほんこれ
ほんこれ
218デフォルトの名無しさん (テテンテンテン MM8e-VoLZ)
2021/04/15(木) 11:28:50.53ID:VIeSEXX8M219デフォルトの名無しさん (ワッチョイ 4e42-CoCA)
2021/04/15(木) 11:44:04.13ID:V+OBz7ue0 最初に作った人が「コレはデータだからコメント不要」って取り付く島もないんだとか
VsCodeの設定ファイルみたく独自で拡張してjsonもどきになっているよな
VsCodeの設定ファイルみたく独自で拡張してjsonもどきになっているよな
220デフォルトの名無しさん (ワッチョイ 4ede-ucxl)
2021/04/15(木) 20:44:07.32ID:ggX3n8E30 jsonなんて人間の読めるもんじゃないと思う
ダブルコーテーションが目にキツイ
ダブルコーテーションが目にキツイ
221デフォルトの名無しさん (ワッチョイ d74f-1WRr)
2021/04/15(木) 20:56:31.12ID:yv1G2zip0222デフォルトの名無しさん (ワッチョイ cb5f-wtuO)
2021/04/15(木) 23:45:13.23ID:025iJfef0 json便利だけど、protobufを使うようになってから使用頻度減ったなー
223デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/16(金) 21:25:28.58ID:UPAcC/fc0 1つの一連の処理で一度に10回以上は失敗する可能性があるんだけど
例外って複数ストックできる?
例外って複数ストックできる?
224デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/16(金) 21:36:31.59ID:WuJ5uN/Q0 できるよ
ValidationでエラーためてIsValidで確認するのと同じ
ValidationでエラーためてIsValidで確認するのと同じ
225デフォルトの名無しさん (ワッチョイ b733-UBeK)
2021/04/16(金) 21:41:19.41ID:AE+nXjed0 try{
...
}catch(Exception ex){
exceptions.Add(ex);
}finally{
continue;
}
こんな糞コード見たことないけどな。
...
}catch(Exception ex){
exceptions.Add(ex);
}finally{
continue;
}
こんな糞コード見たことないけどな。
226デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/16(金) 21:41:25.62ID:UPAcC/fc0 デーモンコアと
マイナスドライバーを設定
try{
while(米が勝つまで回す){
@測る
Aマイナスドライバーを動かす
}
}
finally
{
Bデーモンコアを離す
Cif(青い光りが見えた){
Dみんなを退避
E逃げる
F救急車を呼ぶ
G遺書を書く
}
}
大体こんな処理なんだけど
B〜Gは途中で例外起きても
最後までやってほしいらしい
っていう一連の処理なんだ
どのエラーや例外も全部保存したい
>>224
なんかサンプルないですかね?
マイナスドライバーを設定
try{
while(米が勝つまで回す){
@測る
Aマイナスドライバーを動かす
}
}
finally
{
Bデーモンコアを離す
Cif(青い光りが見えた){
Dみんなを退避
E逃げる
F救急車を呼ぶ
G遺書を書く
}
}
大体こんな処理なんだけど
B〜Gは途中で例外起きても
最後までやってほしいらしい
っていう一連の処理なんだ
どのエラーや例外も全部保存したい
>>224
なんかサンプルないですかね?
227デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/16(金) 21:53:27.03ID:XmBIRBCo0 溜めておいた例外を最後にAggregateExceptionのInnnerExceptionsにセットして投げれば
228デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/16(金) 21:54:23.20ID:UPAcC/fc0 >>227
なんかそういう処理の書き方の流れが知りたい感じです
なんかそういう処理の書き方の流れが知りたい感じです
229デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/16(金) 22:18:19.07ID:57BTnFcs0 年内に死にそう
230デフォルトの名無しさん (ワッチョイ bf42-tdH6)
2021/04/16(金) 22:48:51.32ID:yteCGRud0231デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 00:39:50.34ID:v4ZcCEOKa >>223
失敗してても処理が継続される時点でそれを例外を呼ぶべきか、そもそも疑問に感じるね。
失敗してても処理が継続される時点でそれを例外を呼ぶべきか、そもそも疑問に感じるね。
232デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 01:02:22.39ID:v4ZcCEOKa class DaemonSequenceException:Exception
{
public Exception FooResult { get; set; }
public Exception BarResult { get; set; }
....
}
とかみたいに他の部分の成否と無関係に実行できる各部分に名前をつけて、
その部分の例外をプロパティーで持つとかするのかね知らんけど
{
public Exception FooResult { get; set; }
public Exception BarResult { get; set; }
....
}
とかみたいに他の部分の成否と無関係に実行できる各部分に名前をつけて、
その部分の例外をプロパティーで持つとかするのかね知らんけど
233デフォルトの名無しさん (ワッチョイ ff02-L6pe)
2021/04/17(土) 10:56:45.87ID:F6GtSG/H0 DirectoryInfo.GetDirectories は例外を送出するけど処理は継続する
234デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:32:02.82ID:mfYtpggw0 まあ、結論としては
c#的にはこういう複数の処理が失敗するまたは終了処理も失敗するケースは言語的には完全に想定外ってことですかね
c#的にはこういう複数の処理が失敗するまたは終了処理も失敗するケースは言語的には完全に想定外ってことですかね
235デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 20:42:29.21ID:IkH2FR7eM236デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:47:08.33ID:mfYtpggw0237デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/17(土) 20:47:45.31ID:7MTKb57l0238デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:50:06.01ID:mfYtpggw0 >>237
そもそも例外で返すのが間違いということでしょうか?
そもそも例外で返すのが間違いということでしょうか?
239デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/17(土) 20:56:09.74ID:7MTKb57l0 >>238
<1>
var exceptions = new List<Exception>();
<2> (処理の数だけ作る)
try
{
処理
}
catch( Exception e )
{
exceptions.Add( e );
}
<3>
throw new AggregateException( exceptions );
<1>
var exceptions = new List<Exception>();
<2> (処理の数だけ作る)
try
{
処理
}
catch( Exception e )
{
exceptions.Add( e );
}
<3>
throw new AggregateException( exceptions );
240デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 20:59:45.02ID:mfYtpggw0241デフォルトの名無しさん (ワッチョイ 777b-B9Cj)
2021/04/17(土) 21:15:57.36ID:PG7156wz0242デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 21:17:13.40ID:8nmJAkjBM >>236
だから受け側で何をしたいんだよ…
だから受け側で何をしたいんだよ…
243デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 21:20:05.07ID:mfYtpggw0244デフォルトの名無しさん (ワッチョイ 3778-tdH6)
2021/04/17(土) 21:23:05.33ID:gq87BRHm0 簡単なサンプルで試してみればいいでしょ…
245デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 21:24:17.27ID:3+8Yd0vAa たぶん欲しいのはエラーのログなんだろうね。
あるいはPOSTでやるようなチェックリスト?
例外オブジェクトをエラーを表す目的で使ってもいいとは思うけど、
何がしたいのか目的をはっきりさせずに「例外をストックできるか?」とか質問するから
みんな混乱する。
あるいはPOSTでやるようなチェックリスト?
例外オブジェクトをエラーを表す目的で使ってもいいとは思うけど、
何がしたいのか目的をはっきりさせずに「例外をストックできるか?」とか質問するから
みんな混乱する。
246デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 21:38:41.80ID:8nmJAkjBM なぜかこういう人は何をしたいのか書かないんだよな…
まあもういいや、相手もしてもしょうがなさそうだし
まあもういいや、相手もしてもしょうがなさそうだし
247デフォルトの名無しさん (ワッチョイ 572d-pvza)
2021/04/17(土) 21:38:56.54ID:7MTKb57l0 >>243
それで出来るけど、catch( AggregateException ex )で受けた方が
AggregateException.InnerExceptionsを参照しやすくていいんじゃない
それで出来るけど、catch( AggregateException ex )で受けた方が
AggregateException.InnerExceptionsを参照しやすくていいんじゃない
248デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 21:42:46.43ID:mfYtpggw0249デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/17(土) 21:43:49.75ID:mfYtpggw0250デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/17(土) 21:51:17.10ID:6GAIvEwc0 例外を見ればどの処理で発生した例外なのか確実に分かる場合はいいけど
そうじゃないならList<Exception>だとたぶん困るよね
そうじゃないならList<Exception>だとたぶん困るよね
251デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 22:17:04.15ID:svTSVNg/M >>250
どこで発生した例外かを知りたいなら例外にその情報を入れとけば良いだけだろ
どこで発生した例外かを知りたいなら例外にその情報を入れとけば良いだけだろ
252デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/17(土) 22:42:26.62ID:6GAIvEwc0253デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/17(土) 23:35:25.92ID:svTSVNg/M >>252
ExceptionでもSourceに入れるとかMessageの一部に入れるとかやりようはいくらでもあるだろ
ExceptionでもSourceに入れるとかMessageの一部に入れるとかやりようはいくらでもあるだろ
254デフォルトの名無しさん (ブーイモ MMcf-eihA)
2021/04/17(土) 23:49:44.95ID:CX6JLVJZM エスパー回答すると、Disposeをしっかり作ってusingを使え、が顧客が本当に欲しかったもの
255デフォルトの名無しさん (ワッチョイ d768-B9Cj)
2021/04/18(日) 00:46:37.58ID:hpbx6fns0 C#の話と関係無いかもしれませんが、パッケージの開発環境って今の時代何がありますか?
完全にオフラインで使える開発環境とかって無いんでしょうか?コマンドプロンプトしか無いんでしょうか?
完全にオフラインで使える開発環境とかって無いんでしょうか?コマンドプロンプトしか無いんでしょうか?
256デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/18(日) 01:09:20.83ID:IgLv47etM 落ち着け(´・ω・`)
パッケージ、開発環境、コマンドプロンプト
全然話が繋がっていない
パッケージ、開発環境、コマンドプロンプト
全然話が繋がっていない
257デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/18(日) 08:55:30.53ID:v8qpskqd0258デフォルトの名無しさん (ワッチョイ 3754-n3xY)
2021/04/18(日) 18:43:20.44ID:H0K908230 なんとなくエスパーすると、開発ソフトをインストールさえすれば、その後はネット非接続で何でも開発出来る環境が理想ってこと?
なら、たぶん無い。
.net sdk使って、標準ライブラリだけ使うなら出来るんかな?
結局必要なライブラリやらランタイムをDLするか、他のPCでDLして開発PCに入れる事になりそうだけど。
なら、たぶん無い。
.net sdk使って、標準ライブラリだけ使うなら出来るんかな?
結局必要なライブラリやらランタイムをDLするか、他のPCでDLして開発PCに入れる事になりそうだけど。
259デフォルトの名無しさん (ワッチョイ 97b5-Ct9k)
2021/04/18(日) 18:52:54.76ID:qPyS0oex0260デフォルトの名無しさん (ワッチョイ d768-B9Cj)
2021/04/18(日) 21:38:47.12ID:hpbx6fns0261デフォルトの名無しさん (ワッチョイ d7ac-HAyt)
2021/04/18(日) 23:39:25.09ID:svx6jcyS0 今はネットワーク繋いでなんぼの時代だから
262デフォルトの名無しさん (テテンテンテン MM8f-LzhE)
2021/04/18(日) 23:42:54.47ID:4BU0O/MkM そういうセキュリティの気にし方をするのであれば、普段使いのPCとは別に
個人情報を一切入れないPCを1台用意して開発勉強専用にするのが一番安心できると思うよ
外に漏れて困るようなレベルのコードを書くならダメだけどさ
というかMicrosoftDocsやGitHubやStackOverflow/Qiitaとか一切閲覧できない環境で
NuGetやNPMに登録されてる出来合いのライブラリもまったく利用しない縛りを入れて
自分の能力だけで1から100までコードを書けるなんてすごいなあ
俺にはそんな縛りプレイしてたらとてもじゃないけど開発にならないや
個人情報を一切入れないPCを1台用意して開発勉強専用にするのが一番安心できると思うよ
外に漏れて困るようなレベルのコードを書くならダメだけどさ
というかMicrosoftDocsやGitHubやStackOverflow/Qiitaとか一切閲覧できない環境で
NuGetやNPMに登録されてる出来合いのライブラリもまったく利用しない縛りを入れて
自分の能力だけで1から100までコードを書けるなんてすごいなあ
俺にはそんな縛りプレイしてたらとてもじゃないけど開発にならないや
263デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 01:35:18.62ID:X+u8pzLd0 インターネットにつながっていないが故に管理がおろそかになってパッチ適用がされない弊害の方がやっかい
日立のランサムウェアなんかはまさにそれ
日立のランサムウェアなんかはまさにそれ
264デフォルトの名無しさん (ワッチョイ bf68-tdH6)
2021/04/19(月) 01:49:10.86ID:c6NDAp6p0 構造体(値型)を関数の参照渡し以外で、参照する方法ってありますでしょうか?
配列の構造体にアクセスするコードを書いているのですが、
逐一配列の添字計算が入るのも嫌なので避けたいと思っています。
添字の数は関数の中では変わりません。
今は関数の参照渡しで使っていますが、他に方法は無いのかなと思いまして。
配列の構造体にアクセスするコードを書いているのですが、
逐一配列の添字計算が入るのも嫌なので避けたいと思っています。
添字の数は関数の中では変わりません。
今は関数の参照渡しで使っていますが、他に方法は無いのかなと思いまして。
265デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/19(月) 02:02:38.37ID:Kd9UEe0s0 >>264
refローカル変数じゃあかんの?
refローカル変数じゃあかんの?
266デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 02:03:15.10ID:lMV2Jqgd0 >>264
理想形が見えねぇ
理想形が見えねぇ
267デフォルトの名無しさん (ワッチョイ b733-UBeK)
2021/04/19(月) 02:06:16.22ID:4lrHWi0u0 配列の構造体って何?
268デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/19(月) 02:06:36.98ID:XVH2We7ia269デフォルトの名無しさん (ワッチョイ bf68-tdH6)
2021/04/19(月) 02:14:43.49ID:c6NDAp6p0270デフォルトの名無しさん (ワッチョイ fff2-9WMT)
2021/04/19(月) 03:18:25.46ID:RtpbkBzw0 オフライン環境での開発だけど、
VS Community2019のオフラインインストーラをダウンロードして
オフライン環境に持ち込んで使ってる
c#でフォームのデスクトップアプリしか作らんので特に困ってない
VS Community2019のオフラインインストーラをダウンロードして
オフライン環境に持ち込んで使ってる
c#でフォームのデスクトップアプリしか作らんので特に困ってない
271デフォルトの名無しさん (ワッチョイ 5724-DdNk)
2021/04/19(月) 07:43:09.06ID:rq760clV0 >>264
var p = &array[5];
var p = &array[5];
272デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/19(月) 07:51:00.81ID:trWXRHySM ゆう君みたいにCSCで開発するのだ
273デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 08:22:30.53ID:X+u8pzLd0 >>270
バグや脆弱性対応は?VS2019って頻繁に更新されてるけど
バグや脆弱性対応は?VS2019って頻繁に更新されてるけど
274デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/19(月) 08:27:27.76ID:eEvFTkhNM >>273
offlineインストーラーも知らないのは開発者としてどうかと思う
offlineインストーラーも知らないのは開発者としてどうかと思う
275デフォルトの名無しさん (ワッチョイ 9736-pvza)
2021/04/19(月) 09:01:07.98ID:qHBf6kdf0 getsetプロパティをFuncで呼び出せるようにしたいのですが可能でしょうか?
メソッドで括って呼び出せば良いのだろうけど直接Funcに入れる方法があるならそうしたいです
メソッドで括って呼び出せば良いのだろうけど直接Funcに入れる方法があるならそうしたいです
276デフォルトの名無しさん (ワッチョイ 7f7c-xwMB)
2021/04/19(月) 09:10:46.59ID:a1UfxEQG0 よく分からん
Func<string> func = () => person.Name;
を
Func<string> func = person.Name;
みたいに書きたいってことか? 無理だけど
func = person.Name.Surname;
のときperson.Nameがいつ解決されるのか判断つかないし
Func<string> func = () => person.Name;
を
Func<string> func = person.Name;
みたいに書きたいってことか? 無理だけど
func = person.Name.Surname;
のときperson.Nameがいつ解決されるのか判断つかないし
277デフォルトの名無しさん (ワッチョイ 9736-pvza)
2021/04/19(月) 09:26:07.33ID:qHBf6kdf0 >>276
返信ありがとうございます
イメージとしては複数のクラスで
public bool hoge {set => test = value; }
が複数あって
List<Func<bool, bool>> func;
に追加していってキャンセルとか何らかの処理後に一括して戻したい、と言うような処理です
やはりプロパティってメソッドみたくできないFuncに入れる事ができないんでしょうか
他の方法ですっきりする方法はないですかね?
返信ありがとうございます
イメージとしては複数のクラスで
public bool hoge {set => test = value; }
が複数あって
List<Func<bool, bool>> func;
に追加していってキャンセルとか何らかの処理後に一括して戻したい、と言うような処理です
やはりプロパティってメソッドみたくできないFuncに入れる事ができないんでしょうか
他の方法ですっきりする方法はないですかね?
278デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 09:56:26.88ID:lMV2Jqgd0 やりたいことがさっぱりわからんな
ダイアログのキャンセル押したら画面ごと破棄でいいじゃん
ダイアログのキャンセル押したら画面ごと破棄でいいじゃん
279デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/19(月) 10:04:55.77ID:aTPYfb0+0280デフォルトの名無しさん (ワントンキン MM4f-Ct+I)
2021/04/19(月) 10:21:06.38ID:8YZTYag9M まあ気持ちはわかる
(Webでなく)GUIアプリで独学した初心者って、エンティティオブジェクトをアプリ全体で生存させるような設計をしちゃうんだよな
オブジェクト指向を普通に解釈すりゃそれが自然なんだけど、実際そういう設計はしないんだよ
ドメインモデルだろうとトランザクションスクリプトだろうと、エンティティはトランザクション毎に作る
(Webでなく)GUIアプリで独学した初心者って、エンティティオブジェクトをアプリ全体で生存させるような設計をしちゃうんだよな
オブジェクト指向を普通に解釈すりゃそれが自然なんだけど、実際そういう設計はしないんだよ
ドメインモデルだろうとトランザクションスクリプトだろうと、エンティティはトランザクション毎に作る
281デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 10:39:20.82ID:X+u8pzLd0282デフォルトの名無しさん (ベーイモ MM4f-XYuH)
2021/04/19(月) 10:44:42.24ID:7XobiDdgM283デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/19(月) 10:58:10.70ID:Ee/wQKnTM >>281
知ってて聞くのはもっとどうかと思う
知ってて聞くのはもっとどうかと思う
284デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 12:13:19.27ID:lMV2Jqgd0 >>282
なんだかとってもおかしいよ
なんだかとってもおかしいよ
285デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 12:18:18.64ID:lMV2Jqgd0 これあれじゃね?
開始日と終了日に期間制限があると値が設定できないやつ(笑)
開始日と終了日に期間制限があると値が設定できないやつ(笑)
286デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/19(月) 12:41:53.53ID:/vkKNniZa 何がしたいのかよく分からないね。
キャンセル要求が発生したら初期状態に戻したいなら
素直に初期状態をまるごとキャッシュしておく方が分かりやすいんじゃないかと思うけど
もっと素直なのはそもそもApplyするまでUIの値をモデルに反映しないことだよね。
まあたぶん要件を説明しきれてないんだろうけど
キャンセル要求が発生したら初期状態に戻したいなら
素直に初期状態をまるごとキャッシュしておく方が分かりやすいんじゃないかと思うけど
もっと素直なのはそもそもApplyするまでUIの値をモデルに反映しないことだよね。
まあたぶん要件を説明しきれてないんだろうけど
287デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/19(月) 12:42:25.65ID:eG8AP0Ht0288デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 13:39:27.50ID:lMV2Jqgd0 まあ、設定画面がモードレスでリアルタイムで値を変えたいときもあるかもしれんが
それやると
地獄の一丁目にご招待って感じ(笑)
それやると
地獄の一丁目にご招待って感じ(笑)
289デフォルトの名無しさん (ワッチョイ ff02-L6pe)
2021/04/19(月) 13:46:03.66ID:0ewLpJwG0 Contract?
290デフォルトの名無しさん (ブーイモ MMcf-Vz79)
2021/04/19(月) 13:50:22.81ID:wot3CwpcM291デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
2021/04/19(月) 14:13:33.61ID:lMV2Jqgd0 >>290
影響する値でエラーが出てもそれとは関係ない表示はできる限り続けて欲しい(プレビューが見えないから)
エラーが出てるときは値の変更で表示は変わっても最後の反映はできないようにしてほしい
でも値を変更してる最中のundo,redoは効くようにして欲しい
って割とありがち要求だよね
モードレスやった時点で地獄を覚悟しろって感じ
影響する値でエラーが出てもそれとは関係ない表示はできる限り続けて欲しい(プレビューが見えないから)
エラーが出てるときは値の変更で表示は変わっても最後の反映はできないようにしてほしい
でも値を変更してる最中のundo,redoは効くようにして欲しい
って割とありがち要求だよね
モードレスやった時点で地獄を覚悟しろって感じ
292デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
2021/04/19(月) 14:17:30.66ID:5/g8GOz6M そのためのMVVMですから!
293デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/19(月) 16:11:25.84ID:X+u8pzLd0 >>283
めんどくさいのに本当にしてるのか気になったから聞いたんだけど何かおかしい?
めんどくさいのに本当にしてるのか気になったから聞いたんだけど何かおかしい?
294デフォルトの名無しさん (ワッチョイ 57ad-IUyB)
2021/04/19(月) 16:13:54.25ID:LEIxqEAm0 うちにも本当にしてる端末はあるぞ。
むしろ自動で上げたくないしな。
既知の問題でワークアラウンドがあるならそれで良いというケースもあるし。
リリースノートめちゃくちゃ読む。
むしろ自動で上げたくないしな。
既知の問題でワークアラウンドがあるならそれで良いというケースもあるし。
リリースノートめちゃくちゃ読む。
295デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/19(月) 16:51:10.44ID:qG+FkDTLM296デフォルトの名無しさん (スッップ Sdbf-EDaw)
2021/04/19(月) 16:56:35.95ID:Ly5FRhD3d オフラインがめんどうとか何言ってんの?開発する時にはセキュリティ上当然やろ
オンラインとか最近の開発ではありえない
オンラインとか最近の開発ではありえない
297デフォルトの名無しさん (ワントンキン MM4b-Ct+I)
2021/04/19(月) 17:17:52.34ID:ssZtrIutM 今のVSって最新メジャーバージョンは完全に人柱向けだからなあ
アップデートをすぐに入れられないような環境だと詰む可能性があるからむしろリスクが大きい
最新版を追えない環境なら2017使ったほうがいいよ
アップデートをすぐに入れられないような環境だと詰む可能性があるからむしろリスクが大きい
最新版を追えない環境なら2017使ったほうがいいよ
298デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/19(月) 17:59:46.65ID:sAdoeVNCM299デフォルトの名無しさん (テテンテンテン MM8f-Ct+I)
2021/04/19(月) 18:14:05.65ID:HuLqOw9zM300デフォルトの名無しさん (ワッチョイ d793-vsd6)
2021/04/20(火) 00:39:35.61ID:TLYpp//E0 docker「…」
301デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
2021/04/20(火) 02:18:25.03ID:hE4KV5oa0 C#を勉強中です
Delegateの機能はわかったのですが、これはどのような状況で使うのか思いつきません
こう使うと便利だという例を教えてください
Delegateの機能はわかったのですが、これはどのような状況で使うのか思いつきません
こう使うと便利だという例を教えてください
302デフォルトの名無しさん (ワッチョイ 97ad-CpDH)
2021/04/20(火) 02:19:59.60ID:X693LKGY0 それは繊細な問題ですね
303デフォルトの名無しさん (ワッチョイ 9fad-EDaw)
2021/04/20(火) 02:23:17.77ID:mCU9Z3ky0 delegateの機能が解説されていた箇所に書いてなかったの?書いてあったけどそれを理解できないってこと?
304デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/20(火) 02:33:44.44ID:KMnW7zDR0 >>301
そのわかったというDelegateの機能を説明してみてもらってもいい?
そのわかったというDelegateの機能を説明してみてもらってもいい?
305デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/20(火) 02:54:23.22ID:C6K6mBrBa306デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
2021/04/20(火) 03:07:10.55ID:hE4KV5oa0 >>303
機能の解説だけでどのようなときに使うかは書いてなかったです
Delegate型の説明と作り方の後に例としてConsole.WriteLineでHelloと表示するメソッドを
新たに作ったDelegate型のaという変数に突っ込んでa()を実行して
ほら表示できたでしょという感じだったのだけれど
だからどうしたとしか思わなかったです
機能の解説だけでどのようなときに使うかは書いてなかったです
Delegate型の説明と作り方の後に例としてConsole.WriteLineでHelloと表示するメソッドを
新たに作ったDelegate型のaという変数に突っ込んでa()を実行して
ほら表示できたでしょという感じだったのだけれど
だからどうしたとしか思わなかったです
307デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
2021/04/20(火) 03:22:02.21ID:HBCxLvi90 自分も変数のシャドーイングとか何が便利なのかわからないです
脳みそのメモリ圧迫されるのでは
脳みそのメモリ圧迫されるのでは
308デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
2021/04/20(火) 03:27:57.34ID:HBCxLvi90 >>306
こういうメソッドの引数がデリゲートで、まさに便利な使い方だと思ってる
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.list-1.removeall?view=net-5.0
間違ってたら訂正よろしくです
こういうメソッドの引数がデリゲートで、まさに便利な使い方だと思ってる
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.list-1.removeall?view=net-5.0
間違ってたら訂正よろしくです
309デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
2021/04/20(火) 03:33:39.19ID:hE4KV5oa0310デフォルトの名無しさん (ワッチョイ b768-tdH6)
2021/04/20(火) 04:41:05.35ID:IRlXB/YU0 デリゲートは自分で使うもんじゃないと思ってた。
Buttonをクリックしたら、このメソッド実行してねってのを、IDEが作ってくれる奴だから。
だから、「こんなときどうしよう」って悩んだときに、
そうだ!デレゲートってのがあるんだよ!っていう、よっぽどの場合に、入門書を読めば良いと思う。
初めてのC#みたいな本がお薦めなんだけどね。
Buttonをクリックしたら、このメソッド実行してねってのを、IDEが作ってくれる奴だから。
だから、「こんなときどうしよう」って悩んだときに、
そうだ!デレゲートってのがあるんだよ!っていう、よっぽどの場合に、入門書を読めば良いと思う。
初めてのC#みたいな本がお薦めなんだけどね。
311デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/20(火) 05:04:14.96ID:mPkgRyxP0 >>306
試しにhello2 からhello100まで突っ込んでみよう
試しにhello2 からhello100まで突っ込んでみよう
312デフォルトの名無しさん (エアペラ SDbb-vsd6)
2021/04/20(火) 08:17:28.06ID:UlsxkGg7D デリゲート定期
313デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
2021/04/20(火) 08:29:39.05ID:2x6gxMkWM デリケートに好きして
314デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/20(火) 09:39:52.16ID:KMnW7zDR0 >>306
わからなかったらまず最初にリファレンスを読むといい
Delegateとは何かどういう目的で使われるのか普通に書いてる
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/delegates/
わからなかったらまず最初にリファレンスを読むといい
Delegateとは何かどういう目的で使われるのか普通に書いてる
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/delegates/
315デフォルトの名無しさん (オッペケ Sr8b-HAyt)
2021/04/20(火) 09:49:15.79ID:UooL86SRr まあこういうものが腹に落ちるようになるのが楽しいとこでもある
316デフォルトの名無しさん (ワッチョイ fff2-9WMT)
2021/04/20(火) 11:01:31.30ID:wGU9ai2r0 >>313
パジャマのままで
パジャマのままで
317デフォルトの名無しさん (ワッチョイ 972c-KAGY)
2021/04/20(火) 12:07:45.54ID:7xfghfsY0 例えば、Ruby では、Forwardable でインスタンス変数に委譲できる
自分で配列クラスから、Stack を作って、その内のpush, pop だけを使いたい場合、
もし配列を継承・is-a すると、余計なメソッドまで継承してしまうので、それらを使いたくない。
そういう場合に、委譲・has-a で、インスタンス変数に委譲して、使うメソッドも限定できる
Go, Elixir も継承がない、委譲だけ。
継承は大掛かり。
使わないメソッドを呼ばれてしまう可能性があるから
また、誰でも使うような、String クラスなどを継承して、メソッドを追加されるのも嫌。
そういう継承は想定外だから
素人は、よくそういう事をする。
継承用のクラスじゃないのに継承したりする
require 'forwardable'
class Stack
extend Forwardable
def initialize( ) @ary = [ ] end
def_delegators( :@ary, :push, :pop )
end
stack = Stack.new
stack.push 1
stack.push 2
stack.pop
p stack #=> #<Stack: @ary=[1]>
自分で配列クラスから、Stack を作って、その内のpush, pop だけを使いたい場合、
もし配列を継承・is-a すると、余計なメソッドまで継承してしまうので、それらを使いたくない。
そういう場合に、委譲・has-a で、インスタンス変数に委譲して、使うメソッドも限定できる
Go, Elixir も継承がない、委譲だけ。
継承は大掛かり。
使わないメソッドを呼ばれてしまう可能性があるから
また、誰でも使うような、String クラスなどを継承して、メソッドを追加されるのも嫌。
そういう継承は想定外だから
素人は、よくそういう事をする。
継承用のクラスじゃないのに継承したりする
require 'forwardable'
class Stack
extend Forwardable
def initialize( ) @ary = [ ] end
def_delegators( :@ary, :push, :pop )
end
stack = Stack.new
stack.push 1
stack.push 2
stack.pop
p stack #=> #<Stack: @ary=[1]>
318デフォルトの名無しさん (ワッチョイ 972c-KAGY)
2021/04/20(火) 12:25:42.67ID:7xfghfsY0 >>307
shadowing とは、内外の変数は、別々の扱いで、
内側のスコープに入ると、内側が優先されて、
外側の同じ変数名が隠されること。
その際、外側の変数には影響を与えない。
Ruby では、外側のa は10で、内側のブロックスコープでは、
同名の変数aを使っても、外側の変数には影響を与えない。
ブロックスコープを抜けると、aは10のまま
a = 10
ary = [ 1, 2 ]
ary.each do |a|
puts "ブロック内: #{ a }"
end
p a
出力
ブロック内: 1
ブロック内: 2
10
shadowing とは、内外の変数は、別々の扱いで、
内側のスコープに入ると、内側が優先されて、
外側の同じ変数名が隠されること。
その際、外側の変数には影響を与えない。
Ruby では、外側のa は10で、内側のブロックスコープでは、
同名の変数aを使っても、外側の変数には影響を与えない。
ブロックスコープを抜けると、aは10のまま
a = 10
ary = [ 1, 2 ]
ary.each do |a|
puts "ブロック内: #{ a }"
end
p a
出力
ブロック内: 1
ブロック内: 2
10
319デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/20(火) 13:01:47.56ID:TyJgyLsfa このスレはRubyの宝石箱や!まで読んだ。
320デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/20(火) 20:38:25.40ID:mPkgRyxP0 火入れするかあんたのはスピネルや
と言うべきか
と言うべきか
321デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
2021/04/20(火) 21:04:57.15ID:HBCxLvi90 なにかのネタというかエンジニアジョークなのかな? わからないや
シャドーイングがどんな機能なのかは単純だからわかってるつもりだけど、一見同じ変数名を扱えることで何が嬉しいの?って話です
コード読んでて混乱しそうなので無い方が綺麗だと思うのだが、自分の脳みそが貧弱なだけかな?
シャドーイングがどんな機能なのかは単純だからわかってるつもりだけど、一見同じ変数名を扱えることで何が嬉しいの?って話です
コード読んでて混乱しそうなので無い方が綺麗だと思うのだが、自分の脳みそが貧弱なだけかな?
322デフォルトの名無しさん (ワッチョイ bf68-Zgro)
2021/04/20(火) 21:05:35.48ID:3ANNQsEU0 c から来た人なんだけど、デリゲートって関数ポインターの認識
323デフォルトの名無しさん (ワッチョイ bf68-Zgro)
2021/04/20(火) 21:08:17.98ID:3ANNQsEU0 半角の++が書き込めない。なんだこれ。
324デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/20(火) 21:28:46.29ID:mPkgRyxP0325デフォルトの名無しさん (ワッチョイ bfda-bvUB)
2021/04/20(火) 22:48:16.53ID:wpz1WDBF0 メモリリークの温床だがな。。
326デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/20(火) 23:13:15.40ID:oW++joyya327デフォルトの名無しさん (ワッチョイ 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を超えています。これ以上書き込みはできません。
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【速報】高市首相 青森震度6強地震で負傷者30人 [蚤の市★]
- 【高市悲報】日経が議員削減法案を痛烈批判「これほど党利党略を優先した法案も珍しい」 [663382246]
- まんが賞選評「男らしい骨太な作品で~」
- 【画像】TOKIO山口達也に「いいべ」された当時のJK、性加害の反動であたしこグラドルにwww [779857986]
- 声優・矢尾一樹の妻「治療の影響で思う様に話せない彼に、近くで仕事をしてきた人が、かっこ悪い!もう辞めなよと言った。私は許さない」 [594040874]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- AIが仕事を奪うフェーズ、ガチでスタートしてしまう、世界はこの先どうなってしまうのか [604928783]
