C#, C♯, C#相談室 Part94

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 935f-5Uxj)2019/03/20(水) 18:57:36.47ID:ZZcTomnN0
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

0952デフォルトの名無しさん (ワッチョイ a701-4A0X)2021/12/13(月) 09:12:51.67ID:7pnzZ4JB0
>>937
条件式をネストしたり&でつないだりと複雑にするのは難読性が高くなるから分けたほうがいいだろ
どういう条件ならMthod()を呼ぶのか明確に

if(Input){
//事前処理
judge=(A==null) ? true: //Aがnullのとき
A.Bool==false ? true: //Aの子要素がfalseのとき
false; //それ以外
if(judge) Method();
//共通処理
...
}

0953デフォルトの名無しさん (ワッチョイ 477c-Xngn)2021/12/13(月) 09:51:11.81ID:g+jxvcxo0
>>952が分かりやすく見えない…
>>940が誰が見ても一目瞭然でいいと思うわ
シンプルな条件分岐なんだからこだわる必要ない

0954デフォルトの名無しさん (ワッチョイ df01-c3Ov)2021/12/13(月) 11:44:51.75ID:zykNHKxZ0
skipするほうが例外的処理だろうからskip条件を明確にしてearly returnしたほうがいいと思う
論理式の細かい書き方よりも意図が伝わるかどうかのほうが大事

if (ShouldSkip(a)) {
return;
}
Method();

bool ShouldSkip(A a) {
return a?.Bool ?? false;
}

0955デフォルトの名無しさん (ワッチョイ bf62-Trcr)2021/12/13(月) 14:01:49.98ID:z2L+bKXw0
メソッドにすんのはいいけど、>>937 が入力を検知したときメソッドを実行したいって言ってんだからその通りに書けばいい
設計書通りに条件分岐すりゃいいのに無駄に置き換えて実装する人多いけどなんなんだろうね

if(入力検知(input, A)){
Method();
}

bool 入力検知(bool input, A a){
return input && a != null && a.Bool;
}

0956デフォルトの名無しさん (アウアウウー Sa6b-p36F)2021/12/13(月) 14:22:24.69ID:6wRfW5vFa
昼飯食いながら適当だから何か勘違いしてるかもしれないけど、>>937って要は
ある条件を満たした時だけMethodを実行したい、それだけでしょ?

だったら四の五の言わずに素直にそう書くのが一番じゃないの。
if( input && (!A?.Bool ?? false)) Method();

0957デフォルトの名無しさん (アウアウウー Sa6b-5lnE)2021/12/13(月) 14:29:51.31ID:KmNdaGVTa
求めてるのは「もっとスマートな書き方」だからな
主観的な問題だから、俺らが言えるのは「こういう書き方もある」ってのだけ
正解(どれが一番か)を決めれるのは本人だけ

0958デフォルトの名無しさん (アウアウウー Sa6b-p36F)2021/12/13(月) 14:47:42.73ID:6wRfW5vFa
コードでも文章でも読み手に「要するにそれってどういうこと?」って思わせないのが一番。
これもコードでも文章でもそうだけど、読みにくいものは書いた本人がそこをよく理解せずに書いている。

0959デフォルトの名無しさん (ワッチョイ 87ad-jwmr)2021/12/13(月) 15:06:50.29ID:WUjUV8JM0
ReSharperが薦めるように書き換えたら、何をしてるのかわからなくなった。

0960デフォルトの名無しさん (ブーイモ MM8b-+2Rn)2021/12/13(月) 15:10:10.54ID:pxTkbBAYM
最近のc#はマルチパラダイムで構文が増えてカオスだ

0961デフォルトの名無しさん (ワッチョイ df01-c3Ov)2021/12/13(月) 16:35:33.81ID:zykNHKxZ0
>>955,956
>>937を読む限りでは入力を検知する処理と
検知した後に特定の処理をスキップするかどうかを判断する処理は別じゃないのかな?

「A.Boolがtrueなら入力を検知しない(or 入力を無視する)」ってことなら
入力よりも先にA.Boolを確認するよね

0962デフォルトの名無しさん (アウアウウー Sa6b-5lnE)2021/12/13(月) 16:52:41.40ID:KmNdaGVTa
ちなみに回答ざっと見てこんなだな
こういうのはコードが長くなっても動作が分かりやすい方がいいと思う

>>939,940,952
おk

>>954,955
バグあり

0963デフォルトの名無しさん (ワッチョイ 7f33-1tZa)2021/12/13(月) 22:23:58.46ID:s0FccnDO0
>>960
それ。言語の表現力が豊かでも、自分やチームで一貫性を担保するのが面倒ξ

0964デフォルトの名無しさん (ブーイモ MM8f-+2Rn)2021/12/14(火) 09:16:58.78ID:cLXTODpXM
>>963
そして、コーディング規約が底辺プログラマーに合わせられて生産性が低下する

0965デフォルトの名無しさん (ワッチョイ 67b0-zDwW)2021/12/14(火) 20:46:07.43ID:4rMew3mV0
どうせ好き勝手に言語機能使って上がる生産性なんて微々たるもん

0966デフォルトの名無しさん (ワッチョイ c778-xLgN)2021/12/14(火) 23:18:34.83ID:gu+YKYdX0
.net の 1.1 で書くとめちゃくちゃ不便で絶望するぞ

0967デフォルトの名無しさん (ワッチョイ a787-3oVZ)2021/12/14(火) 23:43:50.97ID:5qKKFixV0
linqがある.NET Framework3.5ですら今これでやれって言われたら不便に感じるしなぁ
使えるものは使わせてもらった方が全然楽だわ

0968デフォルトの名無しさん (ワッチョイ 67b0-zDwW)2021/12/15(水) 08:20:32.57ID:YtxEX99t0
色々使えた方が個人的に楽だと思うのは否定しないが、もっともらしく「生産性が上がる」とか言っちゃうと
意外とそうでもなかったり。

0969デフォルトの名無しさん (ワッチョイ df42-8/hI)2021/12/15(水) 09:41:14.43ID:flSodCtX0
>>966
特にList<T>が無いのはキツイわ

0970デフォルトの名無しさん (ワッチョイ e701-zKou)2021/12/15(水) 12:10:36.77ID:KtX6zlRp0
心配しなくても今どき1.1で書いたり書かされたりすることはないでしょ

0971デフォルトの名無しさん (ワッチョイ a790-wtFG)2021/12/15(水) 16:03:58.38ID:w2vh5jVl0
1.1とか極端すぎるやろ

0972デフォルトの名無しさん (ブーイモ MM8f-+2Rn)2021/12/15(水) 16:14:56.34ID:Jy+USlABM
2.0の知識で止まってるヤツも多いよね

0973デフォルトの名無しさん (ワッチョイ 7f33-1bVk)2021/12/15(水) 16:57:55.56ID:RMHVQ2YW0
さすがに今どきvar使うなとかLINQ使うなとか言われないよね?

0974デフォルトの名無しさん (ワッチョイ 67e3-xLgN)2021/12/15(水) 17:25:02.67ID:ik5KT4gs0
>>973
var使うとわからなくなるというのは名称が明示的になってないだけだと思うわ

0975デフォルトの名無しさん (ブーイモ MM8f-+2Rn)2021/12/15(水) 17:31:22.22ID:KBNxuXv0M
>>974
ハンガリアン記法?

0976デフォルトの名無しさん (ワッチョイ a701-hqAP)2021/12/15(水) 18:19:16.59ID:UGnWEqDI0
MS公式はvar推奨してるけどさすがにintとかstringとか基本的な型はvarにはしないな

0977デフォルトの名無しさん (ワッチョイ 87da-YqIs)2021/12/15(水) 21:30:02.16ID:lA94GyTo0
明示的に型を書かないとダメなところ以外全部varで書くよ

0978デフォルトの名無しさん (ワッチョイ bfda-0QWB)2021/12/15(水) 21:44:12.20ID:M2QFYQSl0
最近はnew()で書けるようになったから、極力varはやめてる
Hoge hoge = new();

実装当初の想定通りlinqの戻りくらいかなvar、使うの。

0979デフォルトの名無しさん (ワッチョイ df5b-xLgN)2021/12/15(水) 23:22:27.06ID:l+MEhncN0
new()使えるのってc#いくつからだっけ

0980デフォルトの名無しさん (ワッチョイ 7fbb-Nxno)2021/12/15(水) 23:43:54.17ID:NZjG441V0
はやくおれのレベルまで上がって来い
上で待ってるぞ

0981デフォルトの名無しさん (ワッチョイ a787-3oVZ)2021/12/16(木) 00:21:19.35ID:R2Peltay0
new()で書けるようになったけど、コンストラクタで初期設定値渡すようにしちゃうから全然使わんなぁ。
セッター潰してコンストラクタで設定するのが好き

0982デフォルトの名無しさん (ワッチョイ df01-JVtf)2021/12/16(木) 07:48:14.53ID:Ymr34XoE0
>>979
C# 9.0

0983デフォルトの名無しさん (ワッチョイ df10-4iyA)2021/12/16(木) 09:44:30.84ID:P4pOcLuS0
C#がどんどんボクのしらないものになっていってる
いっそC##やDと名乗っていただきたい
(Dは既にある、は受け付けない)

0984デフォルトの名無しさん (ワッチョイ a701-4A0X)2021/12/16(木) 10:15:25.85ID:80W3ywqF0
C#に毛が生えた程度だろ
C丼でええがな

0985デフォルトの名無しさん (ブーイモ MMff-gtpG)2021/12/16(木) 10:54:52.18ID:Ni3FtdydM
c井

0986デフォルトの名無しさん (ワッチョイ 7f63-N/e5)2021/12/16(木) 11:01:26.24ID:DM4zUQcN0
C⛩

0987デフォルトの名無しさん (ワッチョイ 87ad-jwmr)2021/12/16(木) 11:42:40.19ID:plhBUTFD0
C升

0988デフォルトの名無しさん (ブーイモ MM8f-+2Rn)2021/12/16(木) 11:47:41.44ID:e2PzMi3oM
>>983
ほんと、氷川きよしくらい変わってしまった

0989デフォルトの名無しさん (ワッチョイ 7f33-1tZa)2021/12/16(木) 23:46:42.90ID:vtDDQtO+0
if(item is {} a){
...
}
null判定でこんな書き方あるんだな。Resharperさんに提案されて初めて知ったわ。
個人的にはあまり使いたくないけど。

0990デフォルトの名無しさん (ワッチョイ 7b24-8o0J)2021/12/17(金) 00:40:01.77ID:fAwtu2PR0
>>989
それやるとaの色がローカル変数色にならず白のままになるのが不満なんだけど俺の環境だけか?

0991デフォルトの名無しさん (ワッチョイ 535f-3/1D)2021/12/17(金) 02:39:12.84ID:KpFo6Hw/0
C林

0992デフォルトの名無しさん (ワッチョイ ca2c-TeJl)2021/12/17(金) 11:21:38.48ID:b89m5ifd0
>>989
C#9なら
if (item is not null)
って実に直感的に書けるから早くこっちにこいよ…

ところでその式でaで受ける意味なくね?

0993デフォルトの名無しさん (ワッチョイ 535f-3/1D)2021/12/17(金) 13:42:40.65ID:KpFo6Hw/0
C極

0994デフォルトの名無しさん (ワッチョイ ff6e-n/si)2021/12/19(日) 09:44:58.73ID:QHfeHH9E0
WinFormsを独学でやっているのですが教えて下さい
そこそこの規模のソフトは作れるようになってますが
VSで開発していくうえで、フォルダ構成ってどう考えればいいですかね
いままではDB関連をDBフォルダ
フォームはFormにまとめてさらにその中に機能別にフォルダを
細かいクラスファイルはClassというフォルダに
DBとの受け渡し(sql書いてFormとの受け渡しModelみたいなもの?)は
Modelというフォルダにまとめています

プロの皆様はチームで作っていかれる際に
会社によりけりかもしれませんが一般的なフォルダ構成の考え方ってあるんでしょうか

0995デフォルトの名無しさん (ワッチョイ 5f78-kSWT)2021/12/19(日) 09:58:37.55ID:eMi6YEPC0
そんなもの存在しないから適当でいいよ
まぁあえて口出しするならFormフォルダはFormクラスと名前が被るからやめとけって位かな

0996デフォルトの名無しさん (アウアウウー Sa9f-f5lq)2021/12/19(日) 10:00:48.95ID:n0pWJPWXa
なんのフォルダなのか理解できない
プロジェクト(visual studio上でのプロジェクト)内じゃフォルダ切ることはないな
プロジェクトがある程度大きくなったらクラスライブラリに分ける

0997デフォルトの名無しさん (ワッチョイ aa89-YeYq)2021/12/19(日) 10:16:13.92ID:UEQjoSys0
シングルアセンブリ構造なのかな

0998デフォルトの名無しさん (ワッチョイ ff6e-n/si)2021/12/19(日) 10:33:08.48ID:QHfeHH9E0
>>995
そうなんですね、気をつけます

>>996
たとえば画面数でも100超えて、機能部分のClassファイルも100越えてくると
いちいち該当ファイル探すのが面倒でフォルダに分けたって感じです
前はPHPのフレームワークとか触ったときは
たとえばcontroller model viewとフォルダも階層構造みたいになっていて
そういう感覚もあります
チームでやられていると、どこに何のファイルが散らばっているか
わからなくなったりしないのですか? きちんと仕様書があるから関係ないのですかね

やっぱりクラスライブラリ(DLL化?)もちゃんと理解しないと駄目ですよね
一人で作ってるので、DLL化するほうが手間な気がして避けてました

0999デフォルトの名無しさん (アウアウウー Sa9f-f5lq)2021/12/19(日) 10:44:47.17ID:n0pWJPWXa
どこに何がは命名の問題もあるんじゃないかな
classも変数も先頭、末尾にそれが何か分かるように名前つけてるから名前順にソートされてればすぐわかる

1000デフォルトの名無しさん (ワッチョイ aa89-YeYq)2021/12/19(日) 10:53:09.81ID:UEQjoSys0
>>998
機能ごとにProjectを作るんだよ。

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1004日 15時間 55分 34秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。