X



C#, C♯, C#相談室 Part93©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 1e06-m8Mb)垢版2017/04/22(土) 08:52:00.93ID:iVvswOrb0
■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
0416デフォルトの名無しさん (アウアウウー Sad5-rZS7)垢版2018/06/09(土) 21:07:34.76ID:4W3gH+0Ua
そもそも書けない奴は論外として、使うなってのは同意できる
簡潔に判りやすいラムダ書いてくれりゃいいが、わざとやってんじゃねってぐらい難読化する奴いるからな
正規表現、SQ、掲示板の長文も同じだな
0417デフォルトの名無しさん (ブーイモ MMeb-OWkY)垢版2018/06/09(土) 21:12:52.02ID:0oARoVrcM
Linqに限らず最近のソフトウェア技術は高度で生産性も高くなってる。
昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。
理由出来ない人は辞めればいい。
生産性が飛躍的に上がってるので理解出来る奴だけで間に合うよ。
0418デフォルトの名無しさん (アウアウカー Sa2d-SmnY)垢版2018/06/09(土) 21:17:22.22ID:ekScYlKMa
自称プログラマー(趣味)ならともかく職業プログラマーでLinqすら理解出来ないやついんの?
0425デフォルトの名無しさん (スップ Sd33-YtUU)垢版2018/06/09(土) 21:35:27.62ID:ZDY9COOVd
業務でいじるレベルのコードなんて知らないものでもグーグル先生いりゃ大抵なんとかならない?
linqも初めて見たときはとっつきにくくてわかりづらかったけど使ってりゃ嫌でも覚えちゃうよ
つっても当然すべてを使いこなしてるわけじゃなくて自分に必要な範囲のみ理解してる程度
業界によってだいぶ差はありそうだけど
0429デフォルトの名無しさん (ワッチョイ d19f-NuDx)垢版2018/06/09(土) 22:13:44.82ID:MhKfyDgC0
>>415
イテレータの起源なら、C++(1983)は最初から持ってた。
C++のOOPはSimula発で、そっちが持ってたかは知らん。

いずれにしても、Java発の技術は存在しないぞ。
C#はLinqと、多分asyncもか?頑張ってる方だと思うが。
(あとちょっと違うがIDEのインテリセンスもC#が初のはず)
0432デフォルトの名無しさん (ワッチョイ d19f-NuDx)垢版2018/06/09(土) 22:41:24.00ID:MhKfyDgC0
>>425
> 自分に必要な範囲のみ理解してる程度
多分これくらいが適正で、これなら大して問題にならないんだよ。

問題は、意識高い系馬鹿の>>417
> 昔も人によって生産性に差が出たが、最近だと理解出来るか出来ないか?ぐらいの圧倒的な格差だ。
みたいな、おかしな奴がいることだよ。

Linq自体でそんなに格差が出来るはずもない。
仮に、Linq部分を関数呼び出しに変えたところで、本体のコード構造は全く変わらないだろ。
便利機能だが、その程度でしかないんだよ。
逆に言うと、制御構造の違いで勝負出来ない、
新文法が読めることしか威張れない馬鹿がそこに無駄に拘っている気がする。
0433デフォルトの名無しさん (ワッチョイ 497f-LHz9)垢版2018/06/09(土) 23:00:28.94ID:0BGOlb7W0
linq で Where と OrderBy 使ったところをチームリーダーから For と List<T>.Sort() に書き換えられたことはある。理由は「他と違うから」
他と書き方を合わせておくのが大事なのはわかるけど…
0435デフォルトの名無しさん (ワッチョイ 0b9f-SAfv)垢版2018/06/09(土) 23:45:05.02ID:v7FNkyrH0
>>433
他と違うからって理由で直すのは良くないと思うな
本来関係ないはずのクラスの間に存在しないはずの関係性を作りこんでしまう
その結果、必要ない作業や、縛りを生み出して生産性を下げることになる
俺が経験したものだと
すでに書き終えたforeachをすべてforに統一
テスト済のDAO、DTOのsnake_caseを他レイヤに合わせてCamelCaseに統一
この2つが最高にバカバカしかった
0436デフォルトの名無しさん (ワントンキン MM53-7qxP)垢版2018/06/09(土) 23:56:36.61ID:wFjp4I59M
カプセル化を知らない人が少なくないのかな
「publicメンバーはクラス間のコミュニケーション円滑化のために規約として形式化しましょう」ぐらいならまあ理解できるが
「Linqはやめてループにしてくれ」なんて内部実装の形式にまで踏み込んでくるなよな
クラススコープで違和感なければそれでいいだろ
0437デフォルトの名無しさん (ワッチョイ 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もその局面で使われているとは思うので、全面書き直しだと余計に読みにくくなるとも思うが。
0439デフォルトの名無しさん (アウアウエー Sa23-SCrG)垢版2018/06/10(日) 00:11:20.35ID:FNJYuW1ra
>>436
どうでもいい議論だけど、一言。
カプセル化っていうのは「メソッドの中は可読性考えなくてよい」って意味じゃないよw

LINQ(というかクエリ式)嫌いの大半は批判してる人間がそもそも理解してないだけだと思うが一理はある。
それは使い方によっては複数の処理が有機的につながった、適切に分割統治されてない、
可読性の低いコードになるからだ

実際、筋の悪いプログラマが好む100行オーバーのメソッドに近い物になりうる
0440デフォルトの名無しさん (ワントンキン MM53-7qxP)垢版2018/06/10(日) 00:20:43.11ID:kZ6+r7gZM
>>439
どう読んだら「メソッドの中の可読性は考えなくていいよ」になるんだろ
外部の都合を内部実装にまで持ち込むな
クラス内での可読性が十分ならそれでいいだろ
って主張な
正しく動いて綺麗なコードを他のクラスの都合で書き直す
俺はこれある意味カプセル化破壊と言っていいと思う
もちろん本来の意味でのカプセル化とは違うのはわかってる
0441デフォルトの名無しさん (アウアウエー Sa23-SCrG)垢版2018/06/10(日) 02:00:10.36ID:gGHljlXMa
>>440
どう読んでもそうとしか読めません
自分で自分の書いてあることが理解できないのかw

「メソッドの中は可読性考えなくてよい」と言っているのでなければ
>>436の1行目と4行目はつながらない。

カプセル化を理解していてもメソッドの中の可読性、例えば
「Linqはやめてループにしてくれ」と言うことはあり得る。

なぜなら、カプセル化とは「メソッドの中の可読性は考えなくていいよ」という意味ではないからだ
0450デフォルトの名無しさん (ワッチョイ 13e3-LHz9)垢版2018/06/10(日) 09:35:53.15ID:0WF1gq+N0
スレにも規約作って変な奴は矯正しないといかんな。
0451デフォルトの名無しさん (ワントンキン MM53-7qxP)垢版2018/06/10(日) 09:58:39.22ID:kZ6+r7gZM
変数を関数の先頭に書く
returnは1つまで
変数名の先頭に型の略字を書く
varは使ってはいけない

こういうひと昔前まで大衆が信じてたバカ規約
システム全体で統一感のあるコードを書くって規約もいずれその仲間入りするとおもう
いまはまだIT業界全体が未熟だからみんな気付いてないだけ
0452デフォルトの名無しさん (ブーイモ MMeb-OWkY)垢版2018/06/10(日) 10:22:35.79ID:YCs8n+CmM
ちょっといいですか、この関数100行超えてます。
規約違反で可読性なくなります!
レビューで積極的に発言するサル、何も知らないで自分は立派なプログラム書いてると思っている。
ちなみににLinqの方が可読性上がるよ。
Linqはやりたいことをズバッと書ける。
古いやり方だと、このforループなに?ってなる。
forループは実装手段であって目的じゃないから。
単に慣れ、新しいこと勉強したくない連中が可読性だの規約だの持ち出す。
0462デフォルトの名無しさん (ブーイモ MM15-LHz9)垢版2018/06/10(日) 18:55:50.21ID:FyF+mujLM
クエリ式を使ったのは単純なのはわかりやすいけど複雑になるとお手上げ
メソッド形式で使ったとしても逆にクエリ式のfromを二重の使ったほうがいいのにSelectManyを使ってるやつは非常に醜い
JoinやAggregateも可読性が以上に低い
0463デフォルトの名無しさん (アウアウエー 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じゃなくてクエリ式の話をしてるんじゃないのかと
0465デフォルトの名無しさん (ワッチョイ 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;

基礎的なものだけで構築されていて何をやっているか一目瞭然じゃん
0470デフォルトの名無しさん (ワッチョイ e12b-x2t7)垢版2018/06/10(日) 21:47:34.28ID:WVhS1nfV0
分からないなら勉強するなり聞くなりすればいいじゃんとは思うけどな
可読性あげるのは理解できるが便利な関数を規制するのはおかしいくない?
いつまでたっても個人の技術力上がらなくなるけどいいの?とは思う
0471デフォルトの名無しさん (ブーイモ MM15-LHz9)垢版2018/06/10(日) 21:54:10.88ID:FyF+mujLM
わからないって意味を誤解してるだろ

var queryDupNames = fileList.Groupby(f=>略, f=>略).Where(g=>g.Count>1);

メソッドだとほぼ一瞬で何をやってるかわかるだろ
わざわざ行数を割いて理解に時間のかかるクエリ式を使う意味はねえよ
0478デフォルトの名無しさん (ワッチョイ 9396-DGJA)垢版2018/06/11(月) 14:37:15.67ID:dC6OTsii0
リファクタリングをリファクタ言うの非常に気持ち悪い
refactor は refactoring から派生した単語
refactor という動詞は使われだして日も浅く、まだ技術系のスラングの域でしかない

VS には「リファクター」としてリファクタリングを行うメニューが提供されているが
小洒落た動詞として使用される分には気にならないが、
日本人が「リファクタする」とか使ってると「カンパニーのコンプライアンスをガバナンスする」とかと同様に見える
いやもっとあれか「コンプラをガバーンする」とかと同じレベルかな? (govern は正しい動詞)

https://english.stackexchange.com/questions/57750/is-there-a-verb-refactor-meaning-doing-refactoring-in-english

……MSのスペルチェッカで引っかかってたのか(現在は知らんが)
0485デフォルトの名無しさん (ブーイモ MM05-dEMp)垢版2018/06/12(火) 13:31:08.41ID:l5O6ZBmRM
もとの言葉がfactor、factoringで、factorは動詞としても使われているのだから、
英語圏ならrefactoringという言葉が登場した時点でrefactorという言葉も同時発生的に生まれていると思うが…
0486デフォルトの名無しさん (アウアウエー Sa23-SCrG)垢版2018/06/12(火) 14:20:48.56ID:O2DKnY7ra
どうでもいい話だけど、派生した順番はたぶん

factor(名)→ factoring → re-factoring

なんだろう。

完全に想像で何の根拠もないけど、computingが動詞のcomputeの動名詞ではない(たぶん...)
ように、factoringも動詞のfactorの動名詞ではないような気がする
0491デフォルトの名無しさん (ワッチョイ 81b3-eEtL)垢版2018/06/13(水) 17:13:37.26ID:LyYtEKg40
こういうやつってC#に向いてるんだろうか
https://i.imgur.com/XbewmEQ.jpg
でもUnityとかでゲーム作りたいね思ってるのってこのタイプだろうなと思うし。
0494デフォルトの名無しさん (ワッチョイ 81b3-eEtL)垢版2018/06/13(水) 17:22:01.32ID:LyYtEKg40
3DCGはうまいけどなw
0495デフォルトの名無しさん (ワッチョイ 81b3-eEtL)垢版2018/06/13(水) 17:24:47.33ID:LyYtEKg40
図面はやってたけど、なんでもアバウトで絵をかいてるんじゃないからとかボロカス言われた。
0500デフォルトの名無しさん (ワッチョイ c21b-U+xr)垢版2018/06/14(木) 12:02:14.52ID:ZrVl35qK0
自分、ブックオフで買ってきたOS無しのPCにUbuntu入れてるんですが、
Pythonとか面白いので、C#もやってみたいと思っているんですが、

Mono入れれば、書店で売ってるVisualC#の本とか出来ますか・・?
0501デフォルトの名無しさん (アウアウカー Sa69-qcd4)垢版2018/06/14(木) 12:26:43.19ID:ZNAi3suja
C#やるなら普通にWindows機でやったほうがいいと思うけど
0504500 (ワッチョイ c21b-CUAo)垢版2018/06/14(木) 17:14:29.50ID:ZrVl35qK0
>>501
どうもありがとうございます。Windows機は父親のしかありません・・。強奪してこようかな・・。父親全然使っとらん。。

>>502
本のプログラムを打ち込んでみたいです。Pythonとか面白かったのでC#も挑戦してみたいという感じです。なんかいけそうっぽい
0509デフォルトの名無しさん (ワッチョイ 2e9a-gvEZ)垢版2018/06/14(木) 18:19:58.04ID:T0JMmz9y0
>>506
猫でもわかるシリーズならそんな心配はないな!
>>504
お父さんのPCで間違ってエロコレクションとか見つけたら鬱になるのでやめたほうがいい
ただVisual Studio(VScodeでもいいかも)使えない環境でC#やるのはめんどくさいと思うよ
■ このスレッドは過去ログ倉庫に格納されています

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