■ このスレッドは過去ログ倉庫に格納されています
C#, C♯, C#相談室 Part94
- 1 :デフォルトの名無しさん :2019/03/20(水) 18:57:36.47 ID:ZZcTomnN0.net
- !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
- 960 :デフォルトの名無しさん :2021/12/13(月) 09:12:51.67 ID:7pnzZ4JB0.net
- >>945
条件式をネストしたり&でつないだりと複雑にするのは難読性が高くなるから分けたほうがいいだろ
どういう条件ならMthod()を呼ぶのか明確に
if(Input){
//事前処理
judge=(A==null) ? true: //Aがnullのとき
A.Bool==false ? true: //Aの子要素がfalseのとき
false; //それ以外
if(judge) Method();
//共通処理
...
}
- 961 :デフォルトの名無しさん :2021/12/13(月) 09:51:11.81 ID:g+jxvcxo0.net
- >>960が分かりやすく見えない…
>>948が誰が見ても一目瞭然でいいと思うわ
シンプルな条件分岐なんだからこだわる必要ない
- 962 :デフォルトの名無しさん :2021/12/13(月) 11:44:51.75 ID:zykNHKxZ0.net
- skipするほうが例外的処理だろうからskip条件を明確にしてearly returnしたほうがいいと思う
論理式の細かい書き方よりも意図が伝わるかどうかのほうが大事
if (ShouldSkip(a)) {
return;
}
Method();
bool ShouldSkip(A a) {
return a?.Bool ?? false;
}
- 963 :デフォルトの名無しさん :2021/12/13(月) 14:01:49.98 ID:z2L+bKXw0.net
- メソッドにすんのはいいけど、>>945 が入力を検知したときメソッドを実行したいって言ってんだからその通りに書けばいい
設計書通りに条件分岐すりゃいいのに無駄に置き換えて実装する人多いけどなんなんだろうね
if(入力検知(input, A)){
Method();
}
bool 入力検知(bool input, A a){
return input && a != null && a.Bool;
}
- 964 :デフォルトの名無しさん :2021/12/13(月) 14:22:24.69 ID:6wRfW5vFa.net
- 昼飯食いながら適当だから何か勘違いしてるかもしれないけど、>>945って要は
ある条件を満たした時だけMethodを実行したい、それだけでしょ?
だったら四の五の言わずに素直にそう書くのが一番じゃないの。
if( input && (!A?.Bool ?? false)) Method();
- 965 :デフォルトの名無しさん :2021/12/13(月) 14:29:51.31 ID:KmNdaGVTa.net
- 求めてるのは「もっとスマートな書き方」だからな
主観的な問題だから、俺らが言えるのは「こういう書き方もある」ってのだけ
正解(どれが一番か)を決めれるのは本人だけ
- 966 :デフォルトの名無しさん :2021/12/13(月) 14:47:42.73 ID:6wRfW5vFa.net
- コードでも文章でも読み手に「要するにそれってどういうこと?」って思わせないのが一番。
これもコードでも文章でもそうだけど、読みにくいものは書いた本人がそこをよく理解せずに書いている。
- 967 :デフォルトの名無しさん :2021/12/13(月) 15:06:50.29 ID:WUjUV8JM0.net
- ReSharperが薦めるように書き換えたら、何をしてるのかわからなくなった。
- 968 :デフォルトの名無しさん :2021/12/13(月) 15:10:10.54 ID:pxTkbBAYM.net
- 最近のc#はマルチパラダイムで構文が増えてカオスだ
- 969 :デフォルトの名無しさん :2021/12/13(月) 16:35:33.81 ID:zykNHKxZ0.net
- >>963,964
>>945を読む限りでは入力を検知する処理と
検知した後に特定の処理をスキップするかどうかを判断する処理は別じゃないのかな?
「A.Boolがtrueなら入力を検知しない(or 入力を無視する)」ってことなら
入力よりも先にA.Boolを確認するよね
- 970 :デフォルトの名無しさん :2021/12/13(月) 16:52:41.40 ID:KmNdaGVTa.net
- ちなみに回答ざっと見てこんなだな
こういうのはコードが長くなっても動作が分かりやすい方がいいと思う
>>947,948,960
おk
>>962,963
バグあり
- 971 :デフォルトの名無しさん :2021/12/13(月) 22:23:58.46 ID:s0FccnDO0.net
- >>968
それ。言語の表現力が豊かでも、自分やチームで一貫性を担保するのが面倒ξ
- 972 :デフォルトの名無しさん :2021/12/14(火) 09:16:58.78 ID:cLXTODpXM.net
- >>971
そして、コーディング規約が底辺プログラマーに合わせられて生産性が低下する
- 973 :デフォルトの名無しさん :2021/12/14(火) 20:46:07.43 ID:4rMew3mV0.net
- どうせ好き勝手に言語機能使って上がる生産性なんて微々たるもん
- 974 :デフォルトの名無しさん :2021/12/14(火) 23:18:34.83 ID:gu+YKYdX0.net
- .net の 1.1 で書くとめちゃくちゃ不便で絶望するぞ
- 975 :デフォルトの名無しさん :2021/12/14(火) 23:43:50.97 ID:5qKKFixV0.net
- linqがある.NET Framework3.5ですら今これでやれって言われたら不便に感じるしなぁ
使えるものは使わせてもらった方が全然楽だわ
- 976 :デフォルトの名無しさん :2021/12/15(水) 08:20:32.57 ID:YtxEX99t0.net
- 色々使えた方が個人的に楽だと思うのは否定しないが、もっともらしく「生産性が上がる」とか言っちゃうと
意外とそうでもなかったり。
- 977 :デフォルトの名無しさん :2021/12/15(水) 09:41:14.43 ID:flSodCtX0.net
- >>974
特にList<T>が無いのはキツイわ
- 978 :デフォルトの名無しさん :2021/12/15(水) 12:10:36.77 ID:KtX6zlRp0.net
- 心配しなくても今どき1.1で書いたり書かされたりすることはないでしょ
- 979 :デフォルトの名無しさん :2021/12/15(水) 16:03:58.38 ID:w2vh5jVl0.net
- 1.1とか極端すぎるやろ
- 980 :デフォルトの名無しさん :2021/12/15(水) 16:14:56.34 ID:Jy+USlABM.net
- 2.0の知識で止まってるヤツも多いよね
- 981 :デフォルトの名無しさん :2021/12/15(水) 16:57:55.56 ID:RMHVQ2YW0.net
- さすがに今どきvar使うなとかLINQ使うなとか言われないよね?
- 982 :デフォルトの名無しさん :2021/12/15(水) 17:25:02.67 ID:ik5KT4gs0.net
- >>981
var使うとわからなくなるというのは名称が明示的になってないだけだと思うわ
- 983 :デフォルトの名無しさん :2021/12/15(水) 17:31:22.22 ID:KBNxuXv0M.net
- >>982
ハンガリアン記法?
- 984 :デフォルトの名無しさん :2021/12/15(水) 18:19:16.59 ID:UGnWEqDI0.net
- MS公式はvar推奨してるけどさすがにintとかstringとか基本的な型はvarにはしないな
- 985 :デフォルトの名無しさん :2021/12/15(水) 21:30:02.16 ID:lA94GyTo0.net
- 明示的に型を書かないとダメなところ以外全部varで書くよ
- 986 :デフォルトの名無しさん :2021/12/15(水) 21:44:12.20 ID:M2QFYQSl0.net
- 最近はnew()で書けるようになったから、極力varはやめてる
Hoge hoge = new();
実装当初の想定通りlinqの戻りくらいかなvar、使うの。
- 987 :デフォルトの名無しさん :2021/12/15(水) 23:22:27.06 ID:l+MEhncN0.net
- new()使えるのってc#いくつからだっけ
- 988 :デフォルトの名無しさん :2021/12/15(水) 23:43:54.17 ID:NZjG441V0.net
- はやくおれのレベルまで上がって来い
上で待ってるぞ
- 989 :デフォルトの名無しさん :2021/12/16(木) 00:21:19.35 ID:R2Peltay0.net
- new()で書けるようになったけど、コンストラクタで初期設定値渡すようにしちゃうから全然使わんなぁ。
セッター潰してコンストラクタで設定するのが好き
- 990 :デフォルトの名無しさん :2021/12/16(木) 07:48:14.53 ID:Ymr34XoE0.net
- >>987
C# 9.0
- 991 :デフォルトの名無しさん :2021/12/16(木) 09:44:30.84 ID:P4pOcLuS0.net
- C#がどんどんボクのしらないものになっていってる
いっそC##やDと名乗っていただきたい
(Dは既にある、は受け付けない)
- 992 :デフォルトの名無しさん :2021/12/16(木) 10:15:25.85 ID:80W3ywqF0.net
- C#に毛が生えた程度だろ
C丼でええがな
- 993 :デフォルトの名無しさん :2021/12/16(木) 10:54:52.18 ID:Ni3FtdydM.net
- c井
- 994 :デフォルトの名無しさん :2021/12/16(木) 11:01:26.24 ID:DM4zUQcN0.net
- C⛩
- 995 :デフォルトの名無しさん :2021/12/16(木) 11:42:40.19 ID:plhBUTFD0.net
- C升
- 996 :デフォルトの名無しさん :2021/12/16(木) 11:47:41.44 ID:e2PzMi3oM.net
- >>991
ほんと、氷川きよしくらい変わってしまった
- 997 :デフォルトの名無しさん :2021/12/16(木) 23:46:42.90 ID:vtDDQtO+0.net
- if(item is {} a){
...
}
null判定でこんな書き方あるんだな。Resharperさんに提案されて初めて知ったわ。
個人的にはあまり使いたくないけど。
- 998 :デフォルトの名無しさん :2021/12/17(金) 00:40:01.77 ID:fAwtu2PR0.net
- >>997
それやるとaの色がローカル変数色にならず白のままになるのが不満なんだけど俺の環境だけか?
- 999 :デフォルトの名無しさん :2021/12/17(金) 02:39:12.84 ID:KpFo6Hw/0.net
- C林
- 1000 :デフォルトの名無しさん :2021/12/17(金) 11:21:38.48 ID:b89m5ifd0.net
- >>997
C#9なら
if (item is not null)
って実に直感的に書けるから早くこっちにこいよ…
ところでその式でaで受ける意味なくね?
- 1001 :デフォルトの名無しさん :2021/12/17(金) 13:42:40.65 ID:KpFo6Hw/0.net
- C極
- 1002 :デフォルトの名無しさん :2021/12/19(日) 09:44:58.73 ID:QHfeHH9E0.net
- WinFormsを独学でやっているのですが教えて下さい
そこそこの規模のソフトは作れるようになってますが
VSで開発していくうえで、フォルダ構成ってどう考えればいいですかね
いままではDB関連をDBフォルダ
フォームはFormにまとめてさらにその中に機能別にフォルダを
細かいクラスファイルはClassというフォルダに
DBとの受け渡し(sql書いてFormとの受け渡しModelみたいなもの?)は
Modelというフォルダにまとめています
プロの皆様はチームで作っていかれる際に
会社によりけりかもしれませんが一般的なフォルダ構成の考え方ってあるんでしょうか
- 1003 :デフォルトの名無しさん :2021/12/19(日) 09:58:37.55 ID:eMi6YEPC0.net
- そんなもの存在しないから適当でいいよ
まぁあえて口出しするならFormフォルダはFormクラスと名前が被るからやめとけって位かな
- 1004 :デフォルトの名無しさん :2021/12/19(日) 10:00:48.95 ID:n0pWJPWXa.net
- なんのフォルダなのか理解できない
プロジェクト(visual studio上でのプロジェクト)内じゃフォルダ切ることはないな
プロジェクトがある程度大きくなったらクラスライブラリに分ける
- 1005 :デフォルトの名無しさん :2021/12/19(日) 10:16:13.92 ID:UEQjoSys0.net
- シングルアセンブリ構造なのかな
- 1006 :デフォルトの名無しさん :2021/12/19(日) 10:33:08.48 ID:QHfeHH9E0.net
- >>1003
そうなんですね、気をつけます
>>1004
たとえば画面数でも100超えて、機能部分のClassファイルも100越えてくると
いちいち該当ファイル探すのが面倒でフォルダに分けたって感じです
前はPHPのフレームワークとか触ったときは
たとえばcontroller model viewとフォルダも階層構造みたいになっていて
そういう感覚もあります
チームでやられていると、どこに何のファイルが散らばっているか
わからなくなったりしないのですか? きちんと仕様書があるから関係ないのですかね
やっぱりクラスライブラリ(DLL化?)もちゃんと理解しないと駄目ですよね
一人で作ってるので、DLL化するほうが手間な気がして避けてました
- 1007 :デフォルトの名無しさん :2021/12/19(日) 10:44:47.17 ID:n0pWJPWXa.net
- どこに何がは命名の問題もあるんじゃないかな
classも変数も先頭、末尾にそれが何か分かるように名前つけてるから名前順にソートされてればすぐわかる
- 1008 :デフォルトの名無しさん :2021/12/19(日) 10:53:09.81 ID:UEQjoSys0.net
- >>1006
機能ごとにProjectを作るんだよ。
- 1009 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1009
285 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★