■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C#, C♯, C#相談室 Part93©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 1e06-m8Mb)
2017/04/22(土) 08:52:00.93ID:iVvswOrb0377デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 14:07:54.32ID:VOfp/P7BM もともと関数がオブジェクトである言語はデリゲートを導入するメリットは少ない
c#にデリゲートが無かったらjavaの様に専用のインターフェイスを継承した無駄なクラスを作らなければならなかった
ActionやFuncやラムダがあればデリゲートが必要なかったと言ってるのは何かを誤解してる
c#にデリゲートが無かったらjavaの様に専用のインターフェイスを継承した無駄なクラスを作らなければならなかった
ActionやFuncやラムダがあればデリゲートが必要なかったと言ってるのは何かを誤解してる
378デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 14:19:40.58ID:MhKfyDgC0 >>376
理解してなくても使えれば問題ないんだよ。
お前だってPCの起動方法(BIOSとか)知らなくてもPC使ってるだろ。
MSIL読めなくてもC#使えるだろ。
CPUの例外/割り込み機構を知らなくてもtry/catch使えるだろ。
一般プログラマにとってはプログラミング言語は道具であって、それ以上でも以下でもない。
新言語を作りたいのなら学術的に正確に理解することが必要だが、普通の人はそうではない。
それ以前にC#が死ぬ可能性を考えた方がいい。
C#専用の「デリゲート」の理解はつぶしが利かない。
他言語にもある「ラムダ」の理解のほうが重要だ。
デリゲートは「クラス」と「関数ポインタ+バインド」で対応した方が良かったと思う。
C#には未だに「バインド」がない=デリゲートでの対応になるが、
実際、後付でバインドすることが出来ないだけ不便だろ。
>>377
Javaみたいなそもそも「関数ポインタ」がなかった糞言語と比較したら駄目だよ。
Cには関数ポインタはあった。
C#はそれを「デリゲート」として拡張した。
他言語は「第一級オブジェクト」として拡張した。
今のところ、後者の方が正解っぽいだろ。
(俺自身にはイマイチ「第一級オブジェクト」である利点/必然性は見えないのだが)
理解してなくても使えれば問題ないんだよ。
お前だってPCの起動方法(BIOSとか)知らなくてもPC使ってるだろ。
MSIL読めなくてもC#使えるだろ。
CPUの例外/割り込み機構を知らなくてもtry/catch使えるだろ。
一般プログラマにとってはプログラミング言語は道具であって、それ以上でも以下でもない。
新言語を作りたいのなら学術的に正確に理解することが必要だが、普通の人はそうではない。
それ以前にC#が死ぬ可能性を考えた方がいい。
C#専用の「デリゲート」の理解はつぶしが利かない。
他言語にもある「ラムダ」の理解のほうが重要だ。
デリゲートは「クラス」と「関数ポインタ+バインド」で対応した方が良かったと思う。
C#には未だに「バインド」がない=デリゲートでの対応になるが、
実際、後付でバインドすることが出来ないだけ不便だろ。
>>377
Javaみたいなそもそも「関数ポインタ」がなかった糞言語と比較したら駄目だよ。
Cには関数ポインタはあった。
C#はそれを「デリゲート」として拡張した。
他言語は「第一級オブジェクト」として拡張した。
今のところ、後者の方が正解っぽいだろ。
(俺自身にはイマイチ「第一級オブジェクト」である利点/必然性は見えないのだが)
379デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 14:24:48.97ID:VOfp/P7BM 関数がもしobjectクラスから派生したオブジェクトになるとメンバーを持てることになるんだけど
A.B().ToString()のToStringが
B()というメソッド自体に係ってるのか
B()の返した戻り値にかかってるのかがよくわからないことになる
A.B().ToString()のToStringが
B()というメソッド自体に係ってるのか
B()の返した戻り値にかかってるのかがよくわからないことになる
380デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 14:25:53.62ID:54mp5fzVM Javaってstaticメソッドを関数インターフェースに渡すときは最適化してくれんの?
381デフォルトの名無しさん (アウアウウー Sad5-rZS7)
2018/06/09(土) 14:30:26.04ID:AO7Grx3Qa 1+2*3
こんな計算式があったときに1+2をしてから3かけて答えは9
こうはならないだろ。それは優先順位を定めてるから。(1+2)*3のようにかけば期待通りになる
それと同じで関数がオブジェクトでメンバー持ててもそれに合わせた処理の優先順位を定めればいいだけ
こんな計算式があったときに1+2をしてから3かけて答えは9
こうはならないだろ。それは優先順位を定めてるから。(1+2)*3のようにかけば期待通りになる
それと同じで関数がオブジェクトでメンバー持ててもそれに合わせた処理の優先順位を定めればいいだけ
382デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 14:32:21.62ID:VOfp/P7BM 理解しないのと誤解してるのではわかっていないという点では同じだけど
理解してない場合は理解していない前提で行動できる
一方の誤解してる場合は悲惨だ
理解してない場合は理解していない前提で行動できる
一方の誤解してる場合は悲惨だ
383デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 14:33:21.85ID:MhKfyDgC0 >>379
お前は右結合と左結合を勉強しろ
お前は右結合と左結合を勉強しろ
384デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 14:35:46.47ID:VOfp/P7BM >>383
じゃあどういう風に記述したらオブジェクトである関数のプロパティやメソッドにアクセスできるかここに書いてもらいたいが
じゃあどういう風に記述したらオブジェクトである関数のプロパティやメソッドにアクセスできるかここに書いてもらいたいが
385デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 14:36:40.18ID:MhKfyDgC0 >>382
お前は日本語を勉強しろ。
俺達は「理解しなくていい」=「完全に理解してはいないという自覚の元で使え」と言っているのであって、
それは「誤解」には繋がらない。
「誤解」ってのは、「理解してない馬鹿が理解しているつもりになっている」事を言う。
例えば、右結合と左結合を知らないお前みたいな馬鹿のことだ。
お前は日本語を勉強しろ。
俺達は「理解しなくていい」=「完全に理解してはいないという自覚の元で使え」と言っているのであって、
それは「誤解」には繋がらない。
「誤解」ってのは、「理解してない馬鹿が理解しているつもりになっている」事を言う。
例えば、右結合と左結合を知らないお前みたいな馬鹿のことだ。
386デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 14:39:35.51ID:MhKfyDgC0 >>384
意味不明。何を書いて欲しいのか分からん。
> A.B().ToString()
これはAのメソッドB()を呼んでその戻り値に対してToString()を呼ぶ。
少なくともJavaScriptではそう。
で、何をしたい場合の記述が欲しいんだ?
意味不明。何を書いて欲しいのか分からん。
> A.B().ToString()
これはAのメソッドB()を呼んでその戻り値に対してToString()を呼ぶ。
少なくともJavaScriptではそう。
で、何をしたい場合の記述が欲しいんだ?
387デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 14:48:14.18ID:VOfp/P7BM >>386
思い違いをしていた
A.B().ToString()とA.B.ToString()で区別できる
クラスにフィールドとメソッドを同名にできないから区別できる
右結合と左結合は関係なかったけど
思い違いをしていた
A.B().ToString()とA.B.ToString()で区別できる
クラスにフィールドとメソッドを同名にできないから区別できる
右結合と左結合は関係なかったけど
388デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 14:54:44.86ID:MhKfyDgC0389デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 15:04:32.47ID:VOfp/P7BM390デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 15:06:54.66ID:VOfp/P7BM 本当にC#からdelegateを削除しろって言ってるんだったらどこかおかしい
何にも理解してない
何にも理解してない
391デフォルトの名無しさん (アウアウウー Sad5-rZS7)
2018/06/09(土) 15:06:56.64ID:AO7Grx3Qa プロパティなんて関数オブジェクトみたいなもんだな
プロパティに引数渡してぇ
プロパティに引数渡してぇ
392デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 15:07:41.71ID:VOfp/P7BM >>391
っVB.net
っVB.net
393デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 15:18:29.92ID:MhKfyDgC0394デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 15:25:50.19ID:MhKfyDgC0 >>391
JavaScriptではオーバーライドすれば出来る。
フィールド/メソッドの区別がなく、名前だけだから。
C#的には派生クラスで「プロパティ」「を同名の「メソッド」でオーバーライドだが、
これが型チェック的に無理なのか?
しかし名前の重複を許していないのだから、今後の拡張は可能のはずだが。
JavaScriptのデタラメ文法はどうかという奴もいるが、慣れてしまうと、
型あり言語の「型が違うだけ」で色々制約されるのも相当な糞だと気づけるぞ。
型検査はエラーではなく警告に留めるべきで、
プログラマがOKすれば型が不一致でも通してくれた方がマジで楽。
一番近いのはCってことになってしまうが。
JavaScriptではオーバーライドすれば出来る。
フィールド/メソッドの区別がなく、名前だけだから。
C#的には派生クラスで「プロパティ」「を同名の「メソッド」でオーバーライドだが、
これが型チェック的に無理なのか?
しかし名前の重複を許していないのだから、今後の拡張は可能のはずだが。
JavaScriptのデタラメ文法はどうかという奴もいるが、慣れてしまうと、
型あり言語の「型が違うだけ」で色々制約されるのも相当な糞だと気づけるぞ。
型検査はエラーではなく警告に留めるべきで、
プログラマがOKすれば型が不一致でも通してくれた方がマジで楽。
一番近いのはCってことになってしまうが。
395デフォルトの名無しさん (ワッチョイ eb81-XZeD)
2018/06/09(土) 15:29:15.96ID:a58WBe6r0 ア土曜の昼間からウアウアーの見本市
396デフォルトの名無しさん (ワッチョイ eb81-XZeD)
2018/06/09(土) 15:29:59.09ID:a58WBe6r0 友人ゼロのキモオタオッサンは他にやることないのかい
397デフォルトの名無しさん (ワッチョイ e181-fzvG)
2018/06/09(土) 16:02:02.79ID:kvLDmgw/0 他の言語はともかくC#はGUIのイベントの管理にデリゲートのマルチキャスト使ってるんだから無かったら困るだろ
398デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/09(土) 16:54:07.78ID:DBY1R4Jva だからメソッドがオブジェクトかどうかなんて話はただの衒学趣味的な無益な話w
そんな話は「ではオブジェクトって何?」って不毛な議論になるだけでしょw
初心者がデリゲートを理解して使えるようになるための屁の役にも立たないよw
>>397
素直に考えればデリゲート自身にマルチキャストの機能を持たせるんじゃなく、
シングルキャストのデリゲートのリストとして実装する方法もあったはず
なんか理由があって「こういう」風になってるんだろうが俺には積極的理由はよくわからんね。
ジェネリックをデリゲートで制約できないことと関係があるのかもしれないが
なまじマルチキャストなんて機能があるせいで何だかわかりづらくなってる面は否定できないと思う
そんな話は「ではオブジェクトって何?」って不毛な議論になるだけでしょw
初心者がデリゲートを理解して使えるようになるための屁の役にも立たないよw
>>397
素直に考えればデリゲート自身にマルチキャストの機能を持たせるんじゃなく、
シングルキャストのデリゲートのリストとして実装する方法もあったはず
なんか理由があって「こういう」風になってるんだろうが俺には積極的理由はよくわからんね。
ジェネリックをデリゲートで制約できないことと関係があるのかもしれないが
なまじマルチキャストなんて機能があるせいで何だかわかりづらくなってる面は否定できないと思う
399デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 17:08:52.90ID:MhKfyDgC0 >>397
GUIに関してはdelegateの導入は不要だったで決着してる。
GUIにはOOPよりMVCの方が数段マシで、WPFもそうなってるだろ。
onclickにthisがバインドされている意味がそもそも無いんだよ。
決着が付いてないのはデータフロープログラミングをするときだ。
JavaScriptではObject.observeの導入が計画され、一部フィーバーしていたが、ポシャった。
https://www.html5rocks.com/ja/tutorials/es7/observe/
以下によると、非同期なのが使えなかったらしい。
http://tech.nitoyon.com/ja/blog/2015/11/18/death-of-oo/
JavaScriptの非同期は最早宗教だが、
はっきり言って無駄に非同期すぎて、余計にやりにくくなっているケースもある。これもそう。
C#は独自eventを実装出来るし、そのためにdelegateが用意されているから、
「データフロープログラミング」を文法的にサポートしているとは言える。
ただ、それ以前に、「データフロープログラミング」が主流ではないが。
お前らも実際、やってないだろ。
関数型の次に来るって事もなさそうだし。
とはいえ、上記の通り、今のJavaScriptではデータフロープログラミングは面倒だし、
getter/setterを頑なに拒むC++ではものすごくウザくなって事実上無理だ。
次の波が来ればevent/delegateも再評価されるかもしれん。
GUIに関してはdelegateの導入は不要だったで決着してる。
GUIにはOOPよりMVCの方が数段マシで、WPFもそうなってるだろ。
onclickにthisがバインドされている意味がそもそも無いんだよ。
決着が付いてないのはデータフロープログラミングをするときだ。
JavaScriptではObject.observeの導入が計画され、一部フィーバーしていたが、ポシャった。
https://www.html5rocks.com/ja/tutorials/es7/observe/
以下によると、非同期なのが使えなかったらしい。
http://tech.nitoyon.com/ja/blog/2015/11/18/death-of-oo/
JavaScriptの非同期は最早宗教だが、
はっきり言って無駄に非同期すぎて、余計にやりにくくなっているケースもある。これもそう。
C#は独自eventを実装出来るし、そのためにdelegateが用意されているから、
「データフロープログラミング」を文法的にサポートしているとは言える。
ただ、それ以前に、「データフロープログラミング」が主流ではないが。
お前らも実際、やってないだろ。
関数型の次に来るって事もなさそうだし。
とはいえ、上記の通り、今のJavaScriptではデータフロープログラミングは面倒だし、
getter/setterを頑なに拒むC++ではものすごくウザくなって事実上無理だ。
次の波が来ればevent/delegateも再評価されるかもしれん。
400デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 17:12:21.10ID:MhKfyDgC0401デフォルトの名無しさん (ワッチョイ 139d-yf7r)
2018/06/09(土) 17:15:16.30ID:bMpGWGQ30 理解してなくても問題なく使えるからって、それを理解しようとするのは悪い事じゃないけど
もとの発端はなんだったんだこれ
もとの発端はなんだったんだこれ
402デフォルトの名無しさん (アウアウウー Sad5-rZS7)
2018/06/09(土) 17:28:51.92ID:AO7Grx3Qa デリケートじゃないか?w
403デフォルトの名無しさん (ワッチョイ 8917-LHz9)
2018/06/09(土) 17:32:16.71ID:1jan2CXL0404デフォルトの名無しさん (ブーイモ MM33-EqDK)
2018/06/09(土) 17:43:13.42ID:VOfp/P7BM 誰かさんの大好きなLinqはdelegateの塊なんだけどdelegateなくなっていいのかな
他の実装ではdelegate使ってないけど今の.netではデリゲートで実装されている
他の実装ではdelegate使ってないけど今の.netではデリゲートで実装されている
405デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/09(土) 18:48:11.73ID:0oARoVrcM デリゲートにラムダ式にLinq大好きだ!
これ無くして生きてけない!
チームの誰も読めないから放置されて我が道を歩んでいる。
生産性と品質が高いから客には好評です。
これ無くして生きてけない!
チームの誰も読めないから放置されて我が道を歩んでいる。
生産性と品質が高いから客には好評です。
406デフォルトの名無しさん (ワッチョイ e1cc-G+KY)
2018/06/09(土) 20:25:40.95ID:7jH+OfQ/0 >>405
チームの誰もが読めないという事は保守性に欠けると言う事ですね
チームの誰もが読めないという事は保守性に欠けると言う事ですね
407デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/09(土) 20:33:41.95ID:0oARoVrcM そうだね。
でも、Linqバリバリ使ったらそうなるよね。
みんなの勉強しろよってこと。
でも、Linqバリバリ使ったらそうなるよね。
みんなの勉強しろよってこと。
408デフォルトの名無しさん (ワッチョイ 2923-29AL)
2018/06/09(土) 20:39:16.25ID:h8CnrujR0 Linqが分からないってのはラムダ式を理解できないってことなの?
409デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 20:43:00.38ID:54mp5fzVM 行列計算ライブラリ書いてるときに
おれ掛け算わからんからおれに合わせて全部足し算で実装して
おれはいまお前の案件に関わってないけど将来そのライブラリメンテするかもしれんからヨロシクな
とか言う同僚がいたらこいち頭おかしいのかなって思うじゃん
いやいや掛け算を勉強してからっていうか最低限の単位を取ってからメンテしろよってなるじゃん普通
これがLinqやλやデザインパターンになると当たり前のように底辺至上主義がまかり通る不思議な業界
おれ掛け算わからんからおれに合わせて全部足し算で実装して
おれはいまお前の案件に関わってないけど将来そのライブラリメンテするかもしれんからヨロシクな
とか言う同僚がいたらこいち頭おかしいのかなって思うじゃん
いやいや掛け算を勉強してからっていうか最低限の単位を取ってからメンテしろよってなるじゃん普通
これがLinqやλやデザインパターンになると当たり前のように底辺至上主義がまかり通る不思議な業界
410デフォルトの名無しさん (ワッチョイ e181-fzvG)
2018/06/09(土) 20:47:26.87ID:kvLDmgw/0 LINQはC#にしかないからまだわかるけどラムダ式はいまどきの言語ならほぼ実装してるから知ってないとまずいよね
411デフォルトの名無しさん (ワッチョイ d19f-5xV6)
2018/06/09(土) 20:50:03.81ID:2splWvty0 linqてC#にしかないのか
412デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 20:52:58.46ID:54mp5fzVM Linqにも類似品あるよ
Javaのstreamやpythonのリスト内包表記など
というかそもそも単なるiterator patternでしかないからC#が起源ってわけでもない
Javaのstreamやpythonのリスト内包表記など
というかそもそも単なるiterator patternでしかないからC#が起源ってわけでもない
413デフォルトの名無しさん (ワッチョイ ebc9-LHz9)
2018/06/09(土) 21:00:28.55ID:4y2IVpvw0 Linq以前にIEnumerableの意味が解らない人がいるからどうしようもない
.NET2.0から順に教えろってことかよ・・・
.NET2.0から順に教えろってことかよ・・・
414デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 21:03:28.98ID:MhKfyDgC0415デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 21:07:24.39ID:54mp5fzVM >>414
クエリ形式の文法はSQLが起源かもしれんが
実装はSQLとは全く関係がないよ
C#などの実装はまさしくiterator patternだけど
SQLの実装をiterator patternでやろうとしたら遅すぎる
クエリ形式の文法はSQLが起源かもしれんが
実装はSQLとは全く関係がないよ
C#などの実装はまさしくiterator patternだけど
SQLの実装をiterator patternでやろうとしたら遅すぎる
416デフォルトの名無しさん (アウアウウー Sad5-rZS7)
2018/06/09(土) 21:07:34.76ID:4W3gH+0Ua そもそも書けない奴は論外として、使うなってのは同意できる
簡潔に判りやすいラムダ書いてくれりゃいいが、わざとやってんじゃねってぐらい難読化する奴いるからな
正規表現、SQ、掲示板の長文も同じだな
簡潔に判りやすいラムダ書いてくれりゃいいが、わざとやってんじゃねってぐらい難読化する奴いるからな
正規表現、SQ、掲示板の長文も同じだな
417デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/09(土) 21:12:52.02ID:0oARoVrcM Linqに限らず最近のソフトウェア技術は高度で生産性も高くなってる。
昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。
理由出来ない人は辞めればいい。
生産性が飛躍的に上がってるので理解出来る奴だけで間に合うよ。
昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。
理由出来ない人は辞めればいい。
生産性が飛躍的に上がってるので理解出来る奴だけで間に合うよ。
418デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
2018/06/09(土) 21:17:22.22ID:ekScYlKMa 自称プログラマー(趣味)ならともかく職業プログラマーでLinqすら理解出来ないやついんの?
419デフォルトの名無しさん (ワッチョイ e1cc-G+KY)
2018/06/09(土) 21:23:52.36ID:7jH+OfQ/0 Linqを十分に理解できても、可読性や保守性を大事にする人は
多少冗長でも他人が理解しやすい易しいコードを書くんじゃないの?
多少冗長でも他人が理解しやすい易しいコードを書くんじゃないの?
420デフォルトの名無しさん (ワッチョイ d19f-5xV6)
2018/06/09(土) 21:25:54.76ID:2splWvty0 Linqてそんな可読性悪くないと思うけどなぁ
コメント書いときゃ何となくわかるべ
コメント書いときゃ何となくわかるべ
421デフォルトの名無しさん (ワッチョイ 0b9f-SAfv)
2018/06/09(土) 21:26:49.03ID:v7FNkyrH0422デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/09(土) 21:30:02.70ID:0oARoVrcM423デフォルトの名無しさん (ラクッペ MM7d-XZeD)
2018/06/09(土) 21:32:37.20ID:VrCE6n6GM ゴミのようなやりとり
いや、ゴミに失礼だな
いや、ゴミに失礼だな
424デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/09(土) 21:33:12.66ID:0oARoVrcM LinqよりSQLの方が難しいぞ。
SQLは難しいから使うなって言うのか?
SQLは難しいから使うなって言うのか?
425デフォルトの名無しさん (スップ Sd33-YtUU)
2018/06/09(土) 21:35:27.62ID:ZDY9COOVd 業務でいじるレベルのコードなんて知らないものでもグーグル先生いりゃ大抵なんとかならない?
linqも初めて見たときはとっつきにくくてわかりづらかったけど使ってりゃ嫌でも覚えちゃうよ
つっても当然すべてを使いこなしてるわけじゃなくて自分に必要な範囲のみ理解してる程度
業界によってだいぶ差はありそうだけど
linqも初めて見たときはとっつきにくくてわかりづらかったけど使ってりゃ嫌でも覚えちゃうよ
つっても当然すべてを使いこなしてるわけじゃなくて自分に必要な範囲のみ理解してる程度
業界によってだいぶ差はありそうだけど
426デフォルトの名無しさん (ワッチョイ e1cc-G+KY)
2018/06/09(土) 21:35:56.65ID:7jH+OfQ/0 生産性は保守運用まで含めてトータルで考えるべきで
保守性が損なわれればトータルコストも引き上がる
保守性が損なわれればトータルコストも引き上がる
427デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/09(土) 21:36:22.73ID:0oARoVrcM428デフォルトの名無しさん (ワッチョイ d1d2-m221)
2018/06/09(土) 21:51:21.02ID:lCnNI9uz0 保守性の低い Linq のコードってたとえばどんなの?
自分は他人のを読む場合でも特に困ったことないけどな〜。
自分は他人のを読む場合でも特に困ったことないけどな〜。
429デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 22:13:44.82ID:MhKfyDgC0 >>415
イテレータの起源なら、C++(1983)は最初から持ってた。
C++のOOPはSimula発で、そっちが持ってたかは知らん。
いずれにしても、Java発の技術は存在しないぞ。
C#はLinqと、多分asyncもか?頑張ってる方だと思うが。
(あとちょっと違うがIDEのインテリセンスもC#が初のはず)
イテレータの起源なら、C++(1983)は最初から持ってた。
C++のOOPはSimula発で、そっちが持ってたかは知らん。
いずれにしても、Java発の技術は存在しないぞ。
C#はLinqと、多分asyncもか?頑張ってる方だと思うが。
(あとちょっと違うがIDEのインテリセンスもC#が初のはず)
430デフォルトの名無しさん (ワッチョイ eb81-XZeD)
2018/06/09(土) 22:18:01.39ID:a58WBe6r0 クソカスの分際で人間様に話しかけてくるな
クソカスが引っ付くわ
クソカスが引っ付くわ
431デフォルトの名無しさん (ワッチョイ 13b3-Chll)
2018/06/09(土) 22:36:24.46ID:d5fCz/GJ0432デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 22:41:24.00ID:MhKfyDgC0433デフォルトの名無しさん (ワッチョイ 497f-LHz9)
2018/06/09(土) 23:00:28.94ID:0BGOlb7W0 linq で Where と OrderBy 使ったところをチームリーダーから For と List<T>.Sort() に書き換えられたことはある。理由は「他と違うから」
他と書き方を合わせておくのが大事なのはわかるけど…
他と書き方を合わせておくのが大事なのはわかるけど…
434デフォルトの名無しさん (ワッチョイ 8917-LHz9)
2018/06/09(土) 23:10:59.82ID:1jan2CXL0 コーディング規約があるのならそれに合わせろよ
435デフォルトの名無しさん (ワッチョイ 0b9f-SAfv)
2018/06/09(土) 23:45:05.02ID:v7FNkyrH0 >>433
他と違うからって理由で直すのは良くないと思うな
本来関係ないはずのクラスの間に存在しないはずの関係性を作りこんでしまう
その結果、必要ない作業や、縛りを生み出して生産性を下げることになる
俺が経験したものだと
すでに書き終えたforeachをすべてforに統一
テスト済のDAO、DTOのsnake_caseを他レイヤに合わせてCamelCaseに統一
この2つが最高にバカバカしかった
他と違うからって理由で直すのは良くないと思うな
本来関係ないはずのクラスの間に存在しないはずの関係性を作りこんでしまう
その結果、必要ない作業や、縛りを生み出して生産性を下げることになる
俺が経験したものだと
すでに書き終えたforeachをすべてforに統一
テスト済のDAO、DTOのsnake_caseを他レイヤに合わせてCamelCaseに統一
この2つが最高にバカバカしかった
436デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/09(土) 23:56:36.61ID:wFjp4I59M カプセル化を知らない人が少なくないのかな
「publicメンバーはクラス間のコミュニケーション円滑化のために規約として形式化しましょう」ぐらいならまあ理解できるが
「Linqはやめてループにしてくれ」なんて内部実装の形式にまで踏み込んでくるなよな
クラススコープで違和感なければそれでいいだろ
「publicメンバーはクラス間のコミュニケーション円滑化のために規約として形式化しましょう」ぐらいならまあ理解できるが
「Linqはやめてループにしてくれ」なんて内部実装の形式にまで踏み込んでくるなよな
クラススコープで違和感なければそれでいいだろ
437デフォルトの名無しさん (ワッチョイ d19f-NuDx)
2018/06/09(土) 23:59:33.29ID:MhKfyDgC0 >>433
俺はC#erではないが…。
単発のLinqも認めてもらえないのならご愁傷様。あれは普通に読める範囲だ。
見た目、Linq自体にはサブクエリ無しか?ならそんな酷いことにはならないはずだが、
例えばSQLでは再帰呼び出しが出来たりして、
マンデルブロだパズル解くだとか、おかしな事になってる。
https://www.sqlite.org/lang_with.html
Linqでどこまで出来るか知らんが、こんなん書かれたら殴りたくもなるだろ。
基本的には関数呼び出しにしてその先は隠蔽、
つまりLinq実装かFor/List/Sort実装かは上位からは見えない、ってことにすれば関係ないはずだ。
ただ、その場にベタで「何を選択しているか」が書かれている方が読みやすいことは多々あり、
Linqもその局面で使われているとは思うので、全面書き直しだと余計に読みにくくなるとも思うが。
俺はC#erではないが…。
単発のLinqも認めてもらえないのならご愁傷様。あれは普通に読める範囲だ。
見た目、Linq自体にはサブクエリ無しか?ならそんな酷いことにはならないはずだが、
例えばSQLでは再帰呼び出しが出来たりして、
マンデルブロだパズル解くだとか、おかしな事になってる。
https://www.sqlite.org/lang_with.html
Linqでどこまで出来るか知らんが、こんなん書かれたら殴りたくもなるだろ。
基本的には関数呼び出しにしてその先は隠蔽、
つまりLinq実装かFor/List/Sort実装かは上位からは見えない、ってことにすれば関係ないはずだ。
ただ、その場にベタで「何を選択しているか」が書かれている方が読みやすいことは多々あり、
Linqもその局面で使われているとは思うので、全面書き直しだと余計に読みにくくなるとも思うが。
438デフォルトの名無しさん (ワッチョイ a98a-Duqg)
2018/06/10(日) 00:07:12.73ID:wNo6w9bX0 LINQってCube扱えるんだっけ?
439デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/10(日) 00:11:20.35ID:FNJYuW1ra >>436
どうでもいい議論だけど、一言。
カプセル化っていうのは「メソッドの中は可読性考えなくてよい」って意味じゃないよw
LINQ(というかクエリ式)嫌いの大半は批判してる人間がそもそも理解してないだけだと思うが一理はある。
それは使い方によっては複数の処理が有機的につながった、適切に分割統治されてない、
可読性の低いコードになるからだ
実際、筋の悪いプログラマが好む100行オーバーのメソッドに近い物になりうる
どうでもいい議論だけど、一言。
カプセル化っていうのは「メソッドの中は可読性考えなくてよい」って意味じゃないよw
LINQ(というかクエリ式)嫌いの大半は批判してる人間がそもそも理解してないだけだと思うが一理はある。
それは使い方によっては複数の処理が有機的につながった、適切に分割統治されてない、
可読性の低いコードになるからだ
実際、筋の悪いプログラマが好む100行オーバーのメソッドに近い物になりうる
440デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/10(日) 00:20:43.11ID:kZ6+r7gZM >>439
どう読んだら「メソッドの中の可読性は考えなくていいよ」になるんだろ
外部の都合を内部実装にまで持ち込むな
クラス内での可読性が十分ならそれでいいだろ
って主張な
正しく動いて綺麗なコードを他のクラスの都合で書き直す
俺はこれある意味カプセル化破壊と言っていいと思う
もちろん本来の意味でのカプセル化とは違うのはわかってる
どう読んだら「メソッドの中の可読性は考えなくていいよ」になるんだろ
外部の都合を内部実装にまで持ち込むな
クラス内での可読性が十分ならそれでいいだろ
って主張な
正しく動いて綺麗なコードを他のクラスの都合で書き直す
俺はこれある意味カプセル化破壊と言っていいと思う
もちろん本来の意味でのカプセル化とは違うのはわかってる
441デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/10(日) 02:00:10.36ID:gGHljlXMa442デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/10(日) 02:01:02.37ID:gGHljlXMa443デフォルトの名無しさん (ワッチョイ 09c3-Ihiv)
2018/06/10(日) 05:17:43.99ID:4PiVyKtW0 ランダムな指定回数オブジェクトを作成する方法ないですか
7時まで待つ
7時まで待つ
444デフォルトの名無しさん (ワッチョイ 2923-29AL)
2018/06/10(日) 06:46:45.50ID:Kj8YEAmO0 >>441
横からだけど、そう思えるのはお前さんがLinq使ったら可読性悪くなるって決めつけてるからじゃないの?
横からだけど、そう思えるのはお前さんがLinq使ったら可読性悪くなるって決めつけてるからじゃないの?
445デフォルトの名無しさん (ワッチョイ 13d2-fSec)
2018/06/10(日) 06:46:55.66ID:CFkipoua0 Random
446デフォルトの名無しさん (ワッチョイ 13b3-Chll)
2018/06/10(日) 08:32:28.14ID:RI4Vnlqm0447デフォルトの名無しさん (ワッチョイ e181-fzvG)
2018/06/10(日) 08:41:39.38ID:HMOXZXoS0 この話いつまでやるの?
448デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/10(日) 08:43:37.52ID:kZ6+r7gZM >>446
コーディング規約がバカなんだよ
コーディング規約がバカなんだよ
449デフォルトの名無しさん (ドコグロ MMad-Chll)
2018/06/10(日) 09:22:16.29ID:z8uYskXvM 就職できるように頑張れ
450デフォルトの名無しさん (ワッチョイ 13e3-LHz9)
2018/06/10(日) 09:35:53.15ID:0WF1gq+N0 スレにも規約作って変な奴は矯正しないといかんな。
451デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/10(日) 09:58:39.22ID:kZ6+r7gZM 変数を関数の先頭に書く
returnは1つまで
変数名の先頭に型の略字を書く
varは使ってはいけない
こういうひと昔前まで大衆が信じてたバカ規約
システム全体で統一感のあるコードを書くって規約もいずれその仲間入りするとおもう
いまはまだIT業界全体が未熟だからみんな気付いてないだけ
returnは1つまで
変数名の先頭に型の略字を書く
varは使ってはいけない
こういうひと昔前まで大衆が信じてたバカ規約
システム全体で統一感のあるコードを書くって規約もいずれその仲間入りするとおもう
いまはまだIT業界全体が未熟だからみんな気付いてないだけ
452デフォルトの名無しさん (ブーイモ MMeb-OWkY)
2018/06/10(日) 10:22:35.79ID:YCs8n+CmM ちょっといいですか、この関数100行超えてます。
規約違反で可読性なくなります!
レビューで積極的に発言するサル、何も知らないで自分は立派なプログラム書いてると思っている。
ちなみににLinqの方が可読性上がるよ。
Linqはやりたいことをズバッと書ける。
古いやり方だと、このforループなに?ってなる。
forループは実装手段であって目的じゃないから。
単に慣れ、新しいこと勉強したくない連中が可読性だの規約だの持ち出す。
規約違反で可読性なくなります!
レビューで積極的に発言するサル、何も知らないで自分は立派なプログラム書いてると思っている。
ちなみににLinqの方が可読性上がるよ。
Linqはやりたいことをズバッと書ける。
古いやり方だと、このforループなに?ってなる。
forループは実装手段であって目的じゃないから。
単に慣れ、新しいこと勉強したくない連中が可読性だの規約だの持ち出す。
453デフォルトの名無しさん (ワッチョイ 8917-LHz9)
2018/06/10(日) 10:39:02.74ID:0nkwjY0q0 分割すれば良いじゃん
それが出来ないことを相手のせいにするな
それが出来ないことを相手のせいにするな
454デフォルトの名無しさん (ワッチョイ a98a-Duqg)
2018/06/10(日) 11:01:43.43ID:wNo6w9bX0 魔板でやれや
455デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/10(日) 12:09:56.40ID:ycwHE1rSa456デフォルトの名無しさん (ブーイモ MM05-UL3Q)
2018/06/10(日) 13:05:02.68ID:fXHYwG6AM C#のLinqを使っているのならPythonの方が2倍速くなる
https://qiita.com/yniji/items/6585011633289a257888
C# の Linq が python の2倍遅い、は嘘
https://qiita.com/Akira_Kido_N/items/d9519b05ccee6a67158f
https://qiita.com/yniji/items/6585011633289a257888
C# の Linq が python の2倍遅い、は嘘
https://qiita.com/Akira_Kido_N/items/d9519b05ccee6a67158f
457デフォルトの名無しさん (ドコグロ MM7d-7RkH)
2018/06/10(日) 13:22:36.14ID:8jSf3er6M 俺が知りたいのは、オブジェクトをx回作るやり方なんだよ
458デフォルトの名無しさん (ブーイモ MM15-EqDK)
2018/06/10(日) 13:47:05.85ID:FyF+mujLM for(var i=0;i<n;i++)Days[i]=new Day(i);
459デフォルトの名無しさん (ワッチョイ 0b33-maCT)
2018/06/10(日) 14:27:51.17ID:A9qrJ+Er0 linqで発狂してるジジイはSQL絡みでよくわからないエラーに出くわして理解できなかったんじゃないの
460デフォルトの名無しさん (ブーイモ MMeb-lRLg)
2018/06/10(日) 17:59:54.77ID:Nj3/us+lM もう全部varでええやろ
461デフォルトの名無しさん (ワッチョイ d1d2-m221)
2018/06/10(日) 18:16:30.94ID:Ve8EHXbu0 保守性の低い Linq を使ったコードの実例を見たいんだけど。
462デフォルトの名無しさん (ブーイモ MM15-LHz9)
2018/06/10(日) 18:55:50.21ID:FyF+mujLM クエリ式を使ったのは単純なのはわかりやすいけど複雑になるとお手上げ
メソッド形式で使ったとしても逆にクエリ式のfromを二重の使ったほうがいいのにSelectManyを使ってるやつは非常に醜い
JoinやAggregateも可読性が以上に低い
メソッド形式で使ったとしても逆にクエリ式のfromを二重の使ったほうがいいのにSelectManyを使ってるやつは非常に醜い
JoinやAggregateも可読性が以上に低い
463デフォルトの名無しさん (アウアウエー Sa23-SCrG)
2018/06/10(日) 18:58:38.79ID:0FFsGNUEa 意見は分かれると思うが、川俣大先生が連載記事で引用してた
このサンプルあたりがボーダーラインかね
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/linq/how-to-query-for-duplicate-files-in-a-directory-tree-linq
個人的にはこれも読みづらい
実にどうでもいい話だが、LINQは頭字語のはずなのでLinqって表記には違和感しか感じない。
あと、これもくどいが、LINQじゃなくてクエリ式の話をしてるんじゃないのかと
このサンプルあたりがボーダーラインかね
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/linq/how-to-query-for-duplicate-files-in-a-directory-tree-linq
個人的にはこれも読みづらい
実にどうでもいい話だが、LINQは頭字語のはずなのでLinqって表記には違和感しか感じない。
あと、これもくどいが、LINQじゃなくてクエリ式の話をしてるんじゃないのかと
464デフォルトの名無しさん (ブーイモ MM15-LHz9)
2018/06/10(日) 19:04:29.50ID:FyF+mujLM465デフォルトの名無しさん (ワッチョイ 8917-LHz9)
2018/06/10(日) 19:22:31.41ID:0nkwjY0q0 これの事?
var queryDupNames =
from file in fileList
group file.FullName.Substring(charsToSkip) by file.Name into fileGroup
where fileGroup.Count() > 1
select fileGroup;
基礎的なものだけで構築されていて何をやっているか一目瞭然じゃん
var queryDupNames =
from file in fileList
group file.FullName.Substring(charsToSkip) by file.Name into fileGroup
where fileGroup.Count() > 1
select fileGroup;
基礎的なものだけで構築されていて何をやっているか一目瞭然じゃん
466デフォルトの名無しさん (ワッチョイ eb81-YtUU)
2018/06/10(日) 19:59:10.70ID:7XGbwrsW0 これがわかんないって言うならもうlinq禁止しか無いね
そんな人間がいるプロジェクトには関わりたくないけど
そんな人間がいるプロジェクトには関わりたくないけど
467デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/10(日) 20:06:35.03ID:kZ6+r7gZM 全員linq読めても将来読めない人がメンテするかもしれないから禁止
実際にあった話
実際にあった話
468デフォルトの名無しさん (ワッチョイ d1d2-m221)
2018/06/10(日) 20:19:14.72ID:Ve8EHXbu0 ああこれが分からないってんなら確かに LINQ 禁止だわ。w
でもそんなのに付き合ってやる義理はないんじゃね? あとは規約の問題だな。
でもそんなのに付き合ってやる義理はないんじゃね? あとは規約の問題だな。
469デフォルトの名無しさん (ブーイモ MM15-LHz9)
2018/06/10(日) 20:29:40.62ID:FyF+mujLM 自分ならメソッド構文で書く
470デフォルトの名無しさん (ワッチョイ e12b-x2t7)
2018/06/10(日) 21:47:34.28ID:WVhS1nfV0 分からないなら勉強するなり聞くなりすればいいじゃんとは思うけどな
可読性あげるのは理解できるが便利な関数を規制するのはおかしいくない?
いつまでたっても個人の技術力上がらなくなるけどいいの?とは思う
可読性あげるのは理解できるが便利な関数を規制するのはおかしいくない?
いつまでたっても個人の技術力上がらなくなるけどいいの?とは思う
471デフォルトの名無しさん (ブーイモ MM15-LHz9)
2018/06/10(日) 21:54:10.88ID:FyF+mujLM わからないって意味を誤解してるだろ
var queryDupNames = fileList.Groupby(f=>略, f=>略).Where(g=>g.Count>1);
メソッドだとほぼ一瞬で何をやってるかわかるだろ
わざわざ行数を割いて理解に時間のかかるクエリ式を使う意味はねえよ
var queryDupNames = fileList.Groupby(f=>略, f=>略).Where(g=>g.Count>1);
メソッドだとほぼ一瞬で何をやってるかわかるだろ
わざわざ行数を割いて理解に時間のかかるクエリ式を使う意味はねえよ
472デフォルトの名無しさん (ワッチョイ e12b-x2t7)
2018/06/10(日) 22:13:28.91ID:WVhS1nfV0 あークエリ式じゃなくてラムダで書いた方が見やすいって話?
それなら同意
それなら同意
473デフォルトの名無しさん (ワッチョイ eb81-YtUU)
2018/06/10(日) 22:39:32.51ID:7XGbwrsW0 そんなんリファクタすりゃ済む話じゃん
474デフォルトの名無しさん (ワッチョイ ebc9-LHz9)
2018/06/10(日) 22:43:36.88ID:mLmPdblh0 リファクタリングするにもユニットテストで担保取れないレベルの酷いプログラム沢山あるからなあ
475デフォルトの名無しさん (ワントンキン MM53-7qxP)
2018/06/10(日) 22:53:21.31ID:kZ6+r7gZM 低レベルなプログラマに合わせたコードはテストしにくいひどいコードになりがち
インターフェース禁止だとか当たり前のように言ってくるからねあいつら
インターフェース禁止だとか当たり前のように言ってくるからねあいつら
476デフォルトの名無しさん (ワッチョイ eb81-XZeD)
2018/06/10(日) 22:54:32.29ID:SjjA9sVt0 今日も自閉症の見本市
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- お前らインターネット大規模障害起きてたとき何してた
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
