!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://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/index
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
探検
ふらっと C#,C♯,C#(初心者用) Part148
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ df89-moxv)
2020/05/27(水) 20:28:41.27ID:Pggemlyq0690デフォルトの名無しさん (ワッチョイ 3b02-cChY)
2020/11/21(土) 15:32:05.57ID:TFceIuuT0 誰も>>660の質問自体には答えてあげてないんだからスレチとしてスルーで良いのでは
691デフォルトの名無しさん (ワッチョイ c29b-b6az)
2020/11/21(土) 16:59:03.08ID:ZU3qCVhf0 ASP.NET Coreを勉強してみようと思うんだけど
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?
レンタルサーバの「使えるプログラム」のところに
PHP, Ruby, PyThon, Sh としか書かれてないところはダメですよね?
692デフォルトの名無しさん (ワッチョイ 8bad-p2Dd)
2020/11/21(土) 18:32:27.77ID:+zQLxjm30 勉強ならローカルで動かせばよろし。
693デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/21(土) 19:15:26.59ID:pEQG3awY0694デフォルトの名無しさん (ワッチョイ e201-MoyO)
2020/11/21(土) 20:16:31.79ID:WQW9Bpg70 >>668
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう
編集してるXXX.csファイルを読み込んで
NameValueCollection vals = new NameValueCollection行の次の
{行からそのあとの};行の間の行に先頭スペースを揃えて挿入して
ファイルを上書き保存するミニアプリを作って実行すればいい
テキストの平文ファイルだから編集は簡単
VSで編集中にそのような外部エディタで編集がされると
編集を反映しますかって即座に聞いてくるからはいすれば位置がそろう
695デフォルトの名無しさん (ワッチョイ 3b33-b6az)
2020/11/21(土) 23:02:14.09ID:eXf0RCq40 >>688 全世界で行われてる円周率演算がすべて世界記録出すために動いてると思ってる馬鹿
696デフォルトの名無しさん (ワッチョイ ab1a-7G0V)
2020/11/22(日) 02:05:01.90ID:eyJ/0uPg0697デフォルトの名無しさん (ワッチョイ 06f2-HYev)
2020/11/22(日) 02:09:21.16ID:r7dn6Jzr0 >>695
何のためにやってるの?自己満オナニー?
何のためにやってるの?自己満オナニー?
698デフォルトの名無しさん (アウアウエー Sa3a-VuZ6)
2020/11/22(日) 02:37:39.25ID:XfbnXwSba699デフォルトの名無しさん (ワッチョイ e224-08mV)
2020/11/22(日) 08:48:28.54ID:VTf/cbNB0 >>696
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう
マジレスすると今のところはヘッダオンリーならぬ単ソースオンリーで済ませたいのであんまり外部ライブラリには乗り気じゃないというのもあるが
とは言えZStringを拝見したところu8stringをC#で実装出来てる凄いライブラリであるようなのでtext系ファイルやらwebやらdbのクエリやらで利用したい構想立ちまくったのでありがたくスターポチって記憶させていただく
確かにただのバッファとして作ったものの実態はstringに違いないので何かの拍子にstring.Internしてしまうと結構不味いことになるね
とりあえずGCに影響ないと教えてくれて大分スッキリしたのでありがとう
700デフォルトの名無しさん (ワッチョイ 3b33-b6az)
2020/11/22(日) 09:03:29.09ID:0zyBqMyr0 >>698
「円周率の桁数を追求する」ってのは結局そういうこと
「円周率の桁数を追求する」ってのは結局そういうこと
701デフォルトの名無しさん (ワッチョイ 06a7-KMSj)
2020/11/22(日) 09:27:31.41ID:7FLAKb9y0 一番じゃないと駄目なんですか?
702デフォルトの名無しさん (ワッチョイ 5f01-FFKJ)
2020/11/22(日) 13:34:50.51ID:vJ51qgrt0 superPIじゃ駄目なんですか?
703デフォルトの名無しさん (ワッチョイ 977d-P4WK)
2020/11/25(水) 08:28:57.90ID:5XzEVJhy0 COMインターフェイスをstructに付けてboxing発生させずに使用する方法って皆無でしょうか?
704デフォルトの名無しさん (ワッチョイ 9f07-78y3)
2020/11/28(土) 16:25:59.35ID:Msb6oswN0 c# プログラマは goto でコロナを拡散してるから、ウィルス作成罪とかで刑務所にぶちこむべき。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。
もちろん、実質的に goto と同じ if文 、swich case とか使ってるc# プログラマも有罪。
swift や Pythonプログラマは goto 使ってないから無罪。
705デフォルトの名無しさん (ワッチョイ 1793-zmjO)
2020/11/28(土) 17:07:38.54ID:goyIH8CW0 面白いと思って書いたの?
706デフォルトの名無しさん (ブーイモ MMdb-bcw7)
2020/11/28(土) 17:18:49.30ID:qYAW4hVUM 705は死刑
707デフォルトの名無しさん (ワッチョイ ffb5-W+Es)
2020/11/28(土) 17:53:33.87ID:yGy7muY00 >>704
Go To Hell
Go To Hell
708デフォルトの名無しさん (ブーイモ MMdb-bcw7)
2020/11/28(土) 17:57:32.34ID:qYAW4hVUM >>707
このハゲェ!
このハゲェ!
709デフォルトの名無しさん (ワッチョイ d776-OOND)
2020/11/28(土) 18:38:36.41ID:pMGwV9fR0 Windowsの ini ファイルの内容を Section, Key, Value の順で
List<Dictionary<string, List<Dictionary<string, string>>>> ini;
ini = new List<Dictionary<string, List<Dictionary<string, string>>>>();
として取り込んだものから Section の一覧(Delphi の ReadSections 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。
List<Dictionary<string, List<Dictionary<string, string>>>> ini;
ini = new List<Dictionary<string, List<Dictionary<string, string>>>>();
として取り込んだものから Section の一覧(Delphi の ReadSections 相当)を
得たいのですが方法がわかりません。
教えていただけませんでしょうか。
710デフォルトの名無しさん (ワッチョイ ff2c-wz4o)
2020/11/28(土) 18:43:14.08ID:YkgqIE2E0 それのどこが分からないのか分からん
あとListはいらなくない?
あとListはいらなくない?
711デフォルトの名無しさん (ワッチョイ bfad-P4WK)
2020/11/28(土) 18:54:47.55ID:v3rIW/CF0712デフォルトの名無しさん (ワッチョイ d776-OOND)
2020/11/28(土) 19:14:35.24ID:pMGwV9fR0 >>710
説明が下手ですいません。
セクション名の一覧が下記のような考え方で取得できないかと考えていました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
sections[i] = セクション名
i++;
}
}
書き込んだ後、下記のようにしたら希望の動作をしました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
dic1.Keys.CopyTo(sections, i);
i++;
}
}
説明が下手ですいません。
セクション名の一覧が下記のような考え方で取得できないかと考えていました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
sections[i] = セクション名
i++;
}
}
書き込んだ後、下記のようにしたら希望の動作をしました。
public void ReadSections(ref string[] sections)
{
Array.Resize(ref sections, ini.Count);
var i = 0;
foreach (var dic1 in ini)
{
dic1.Keys.CopyTo(sections, i);
i++;
}
}
713デフォルトの名無しさん (ワッチョイ 1745-C0hB)
2020/11/28(土) 19:41:10.86ID:7NcH7NyO0 >>709
自分もList使う意味が見いだせない
var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの?
これならvar value = ini["セクション名"]["キー名"]で取り出せる
if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが
代入はini["セクション名"]["キー名"] = value;
自分もList使う意味が見いだせない
var ini = Dictionary<string, Dictionary<string, string>>とかで良いんじゃないの?
これならvar value = ini["セクション名"]["キー名"]で取り出せる
if (ini.TryGetValue("セクション名", out var keys) && keys.TryGetValue("キー名", out var value)) とやったほうが良いと思うが
代入はini["セクション名"]["キー名"] = value;
714デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 20:02:20.04ID:M3lV8yHm0 Sectionの配列を得たいなら>>713にLinqのini.Keys.ToArray()
715デフォルトの名無しさん (ワッチョイ d776-OOND)
2020/11/28(土) 20:33:03.95ID:pMGwV9fR0 >>713,714
.NET 5 が出たのを機に c# を始めたところなのでよくわかっていません。
勉強がてら自作の Delphi7(Lazarus) の自作ライブラリと同じ物の作成に挑戦中です。
ini ファイルの読み込みもネットからダウンロードしたものをベースに
改造して動きを勉強しているところです。
ですので List になっている理由もまだ理解できていませんし、Dictionary も
今日初めて見た状態です。一応 List を外してみると
foreach (var dic1 in ini)
{
if (dic1.ContainsKey(section))
{
foreach (var dic2 in dic1[section])
{
if (dic2.ContainsKey(key))
{
return dic2[key];
}
}
}
}
のような場面で ContainsKey がエラーとなりました。
とりあえず Delphi の TMemIniFile と同じ程度までできました。
.NET 5 が出たのを機に c# を始めたところなのでよくわかっていません。
勉強がてら自作の Delphi7(Lazarus) の自作ライブラリと同じ物の作成に挑戦中です。
ini ファイルの読み込みもネットからダウンロードしたものをベースに
改造して動きを勉強しているところです。
ですので List になっている理由もまだ理解できていませんし、Dictionary も
今日初めて見た状態です。一応 List を外してみると
foreach (var dic1 in ini)
{
if (dic1.ContainsKey(section))
{
foreach (var dic2 in dic1[section])
{
if (dic2.ContainsKey(key))
{
return dic2[key];
}
}
}
}
のような場面で ContainsKey がエラーとなりました。
とりあえず Delphi の TMemIniFile と同じ程度までできました。
716デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 21:13:18.17ID:M3lV8yHm0717デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 21:20:41.11ID:M3lV8yHm0 pascalのiniなんてもう遥か昔に使ったきりだからあんまり覚えてないがそれっぽいの作るとしたらこんな感じか
Dictionary<string, Dictionary<string, string>> ini = Dictionary<string, Dictionary<string, string>>();
string ReadString(string section, string key)
{
if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;
else return null;
}
これだとnullチェックが必要になるから、Tryメソッドの方が便利だったりする
bool TryReadString(string section, string key, out string value)
{
value = null;
return ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out value);
}
Dictionary<string, Dictionary<string, string>> ini = Dictionary<string, Dictionary<string, string>>();
string ReadString(string section, string key)
{
if (ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out var value)) return value;
else return null;
}
これだとnullチェックが必要になるから、Tryメソッドの方が便利だったりする
bool TryReadString(string section, string key, out string value)
{
value = null;
return ini.TryGetValue(section, out var keys) && keys.TryGetValue(key, out value);
}
718デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/28(土) 21:27:31.90ID:M3lV8yHm0 そういえばiniは無かった場合の規定値を第3引数に入れておけばいいだけか
それならTryメソッドいらんね
それならTryメソッドいらんね
719デフォルトの名無しさん (ワッチョイ d733-xdSs)
2020/11/28(土) 23:40:53.47ID:xlHMBUaz0 sectionの一覧が欲しいって言ってるのに、valueを取り出す説明を延々してる奴何なの?
720デフォルトの名無しさん (ワッチョイ 5701-xdSs)
2020/11/29(日) 00:02:00.65ID:agHPEKHb0 string GetValue(Dictionary<string, Dictionary<string, string >> ini, string section, string key){
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
}
c#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
}
c#に限った事ではないが、何をしたいのか分かりやすいコードを目指そうな。
721デフォルトの名無しさん (ワッチョイ 7778-P4WK)
2020/11/29(日) 00:10:23.95ID:eEpZgXkU0 だから質問者が欲しいのはvalueじゃなくてsection一覧だっての
722デフォルトの名無しさん (ワッチョイ 1f3e-++yk)
2020/11/29(日) 06:31:38.45ID:kNuJF9Ar0 datagridviewにユーザーコントロールを埋め込みたいんですけどどうすればいいですか?
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい
windowsformアプリです
ていうかdatagridviewじゃなくてもユーザーコントロールをリストで表示できれば何でもいいです
どなたか教えて下さい
723デフォルトの名無しさん (ワッチョイ 7754-FP8+)
2020/11/29(日) 08:16:40.50ID:+pk7xniq0 >>722
TableLayoutPanel とか FlowLayoutPanel はどう?
TableLayoutPanel とか FlowLayoutPanel はどう?
724デフォルトの名無しさん (ワッチョイ 7754-FP8+)
2020/11/29(日) 08:16:40.50ID:+pk7xniq0 >>722
TableLayoutPanel とか FlowLayoutPanel はどう?
TableLayoutPanel とか FlowLayoutPanel はどう?
725デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 09:35:53.03ID:yrxBBFH+0 >>719
それは一番上に書いたんだが
それは一番上に書いたんだが
726デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 09:40:01.71ID:yrxBBFH+0 >>720
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが
section取り出す説明は昨日一番最初のレスで書いたからもう脱線して話すけどなんでここまでTryGet使わない奴って多いんだろうな
どうせ後々インデクサアクセスするならTryGetValueの方がよっぽど分かりやすいと思うんだが
727デフォルトの名無しさん (ワッチョイ 1f3e-++yk)
2020/11/29(日) 12:22:24.94ID:kNuJF9Ar0728デフォルトの名無しさん (ワッチョイ 9f2f-OOND)
2020/11/29(日) 17:19:06.82ID:b9LXd7l70 >>722
DataGridViewCellとDataGridViewColumnを継承して自作
DataGridViewCellとDataGridViewColumnを継承して自作
729デフォルトの名無しさん (ワッチョイ d740-qZd/)
2020/11/29(日) 17:32:18.08ID:MpNpLm4W0 >>720>>726
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが
ConstainsKey → []は、まずContainsKeyの内部でFindEntry走らせて存在確認し、存在したらインデクサアクセスして再度内部でFindEntry走らせて取り出すという2度手間してるIQ低いコード
TryGetValueは存在確認時にFindEntryしたついでに値も取り出すというスマートな関数
そもそも前者で済むならTryGetValueは存在意義ないから、上記の仕組みを想像できずとも「なんでTryGetValueってあるんだろう?」と疑問に思わなければいけない
ま、C#は多様性受け入れてる言語だから個人開発なら好きに書いたらいいが
730デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 18:14:07.88ID:o/YPVzQP0 そういう値をローカル変数に代入するのを無駄と言い張って勝手にワンライナーに書き直すような地雷プログラマの振りをするのはやめろよ……初心者が本気にしたらどうするんだよ
731デフォルトの名無しさん (ワッチョイ d740-qZd/)
2020/11/29(日) 18:23:09.50ID:MpNpLm4W0 >>730
今の話でローカル変数やワンライナーが出てくる余地あるか?
今の話でローカル変数やワンライナーが出てくる余地あるか?
732デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 18:52:20.22ID:o/YPVzQP0 >>731
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ
明確にガード節で判定が切り分けられているのに、
「TryGetValueなら判定と取得を同時に行える」と言い出すのはまさしくワンライナー君の物言いだぞ
ifをあえて二つ用意してContainsKeyを使ってる時点で
「ははーん、論理重視のコーディングスタイルか」と察してやるのが有能なプログラマってもんだ
733デフォルトの名無しさん (ワッチョイ d740-qZd/)
2020/11/29(日) 18:58:47.11ID:MpNpLm4W0 >>732
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話
???
2連続で全く不必要に同じ処理を挟むような奴がとても論理重視とは思えないんだが、ContainsKey + []とTryGetValueじゃ2倍以上パフォーマンス変わってくるって知ってる?
さっきも言ったけどContainsKeyでも内部的にFindEntryが走り、インデクサアクセスでも再度FindEntryが走るという無駄がある
再度言うがMSがなんでTryGetValueというメソッドを公式でわざわざ用意したかって疑問に思わない?
簡潔さ全振りならそもそもLinq使えばいい話
734デフォルトの名無しさん (スフッ Sdbf-a5dV)
2020/11/29(日) 19:01:28.82ID:tRrXGfded メソッドの戻り値を一回判定するだけなら
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな
一行で書かないほうが変じゃね?
それをわざわざ一旦保存とか逆になんの意図があるのかと
たまにはデバッグやらログで出したいからと言うのはあるがそれは2回利用に当たるから入れて当然やしな
735デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 19:41:11.64ID:o/YPVzQP0736デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 20:16:26.39ID:EVjNfLc/0 判定と取得を行いたいんじゃなくて取得を行いたい
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い
なのに判定しないとプログラム上まずいことになるので判定機能付きの取得メソッドを使う
読む上でわざわざ判定と取得を別に書いてるならそこにあえての理由があるんだろうな、と推測しないといけない
今回のケースならあえてのケースなど無いので可読性を下げる要因でしか無い
737デフォルトの名無しさん (ワッチョイ f77c-FP8+)
2020/11/29(日) 20:17:12.32ID:3Ka2HmX40738デフォルトの名無しさん (ワッチョイ b7da-ZcDd)
2020/11/29(日) 20:28:09.84ID:HJnVnweF0 >>735
それは廓然大悟かね?
それは廓然大悟かね?
739デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 20:31:48.44ID:yrxBBFH+0 >>736
これのどっちが可読性良いかなんて個人の感想レベルだろ
実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな
そして>>733が言うように実行効率は下の方が2倍近く良いので下を選択すべき理由はある
一方で上を選択すべき理由は見当たらない
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
if (!ini.TryGetValue(section, out var keys)) return null;
if (!keys.TryGetValue(key, out var value)) return null;
return value;
これのどっちが可読性良いかなんて個人の感想レベルだろ
実際俺は100%下のほうで書いてるけど一度もコードレビューで指摘されたことないしな
そして>>733が言うように実行効率は下の方が2倍近く良いので下を選択すべき理由はある
一方で上を選択すべき理由は見当たらない
if(! ini.ContainsKey(section)) return null;
if(! ini[section].ContainsKey(key)) return null;
return ini[section][key];
if (!ini.TryGetValue(section, out var keys)) return null;
if (!keys.TryGetValue(key, out var value)) return null;
return value;
740デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 20:43:57.67ID:yrxBBFH+0 一応言っておくけどここでは713や720に合わせて書いてるだけで実際には1行で書いたりこんなに複数retは使わない
returnは一つにしろというレビューは受けたことあるんでな
returnは一つにしろというレビューは受けたことあるんでな
741デフォルトの名無しさん (ワッチョイ f77c-FP8+)
2020/11/29(日) 20:51:31.28ID:3Ka2HmX40742デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/29(日) 20:54:18.24ID:YUoXGIHl0743デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 20:56:55.50ID:EVjNfLc/0 無理に一行にするな、が通るならreturnを1つにしなくていいのでは?
数十行あるメソッドのいろんな箇所でreturnしてると気持ち悪いと思うが、こういうタイプなら複数returnで良い
可読性が個人レベルなのはそのとおり
文字の並びが似通っている、ではなくどういう機能を呼んでいるか?という意味
判定付き取得メソッドが標準で用意され、しかもメジャーな内容でパフォーマンスも良い
それでもあえてそれを呼ばないのは特殊な事情があるのでは?と読み手の思考を止めることにつながるという意味
数十行あるメソッドのいろんな箇所でreturnしてると気持ち悪いと思うが、こういうタイプなら複数returnで良い
可読性が個人レベルなのはそのとおり
文字の並びが似通っている、ではなくどういう機能を呼んでいるか?という意味
判定付き取得メソッドが標準で用意され、しかもメジャーな内容でパフォーマンスも良い
それでもあえてそれを呼ばないのは特殊な事情があるのでは?と読み手の思考を止めることにつながるという意味
744デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 21:06:40.39ID:o/YPVzQP0 >>739
上のコードを採用する理由は何の値を戻しているか即座に分かるところ、と俺は判断した
return ini[section][key];
この一文で読解に要する数秒を削る為だけに2倍程度のパフォーマンスを許容するのは普通にありだよ
上のコードを採用する理由は何の値を戻しているか即座に分かるところ、と俺は判断した
return ini[section][key];
この一文で読解に要する数秒を削る為だけに2倍程度のパフォーマンスを許容するのは普通にありだよ
745デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 21:23:27.82ID:EVjNfLc/0 メソッド名見りゃそれはわかんじゃん
return文にそういう責務を与える意味は?
どうしても必要というならコメントでも書いとけば良い
return文にそういう責務を与える意味は?
どうしても必要というならコメントでも書いとけば良い
746デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 21:36:16.22ID:yrxBBFH+0 >>743
returnについては可読性に関わる納得できた理由はちゃんとあるんだが自分やチームが使わないというだけで別にうちのコーディング規約を議題に上げるつもりはない(ツッコんでくる人いそうだったから一応書いただけ)
まぁもう好きにしたらええんやない
C#メインで使っていきたいなら言語として用意されてるものは出来る限り利用すべきと思うけど
そこまで学習コスト払いたくないってことなら一つの方法を出来る限り使いまわすというのも利に適ってるしな
returnについては可読性に関わる納得できた理由はちゃんとあるんだが自分やチームが使わないというだけで別にうちのコーディング規約を議題に上げるつもりはない(ツッコんでくる人いそうだったから一応書いただけ)
まぁもう好きにしたらええんやない
C#メインで使っていきたいなら言語として用意されてるものは出来る限り利用すべきと思うけど
そこまで学習コスト払いたくないってことなら一つの方法を出来る限り使いまわすというのも利に適ってるしな
747デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 21:49:34.68ID:EVjNfLc/0 チーム内でのローカルルールがどうなってるかはどうでも良いんですよ
そのチームで合意が取れてるならなんの問題もない
ローカルルールを隠した状態で突っ込まれてローカルルールなんです!って言われても知るかよ、という感想しか出ない
ローカルなものでないなら、基本的には標準に準拠すべきで標準がわざわざtryメソッドを回避している書き方をしていない限り公の場でもそれに準じたほうが良いのでは?というだけ
そのチームで合意が取れてるならなんの問題もない
ローカルルールを隠した状態で突っ込まれてローカルルールなんです!って言われても知るかよ、という感想しか出ない
ローカルなものでないなら、基本的には標準に準拠すべきで標準がわざわざtryメソッドを回避している書き方をしていない限り公の場でもそれに準じたほうが良いのでは?というだけ
748デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 21:53:07.17ID:yrxBBFH+0749デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 21:58:49.11ID:EVjNfLc/0 >>748
なんで突っかかってくるかわからんけど747の前半は複数retの話、後半はtryの話
わざわざローカルの話である複数retのことなんざ話題に上げんで良いよ、try使うのが標準なんだからそれに習ったほうがよくね、
後半は君と同意見なんだよ
なんで突っかかってくるかわからんけど747の前半は複数retの話、後半はtryの話
わざわざローカルの話である複数retのことなんざ話題に上げんで良いよ、try使うのが標準なんだからそれに習ったほうがよくね、
後半は君と同意見なんだよ
750デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 22:01:07.98ID:yrxBBFH+0751デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 22:11:12.12ID:EVjNfLc/0 >>750
前提として標準に準拠したほうが良いよね、という主張がある
標準では複数retなんて当たり前に使ってる
それをなぜか否定しているので突っ込んだらローカルルールだ!と言われる
そういうローカルルールがあるのは構わんが、それならそう明記しなきゃ標準に準拠しようという主張とズレてブレブレなだけでは?
まさかレビューを受けたことがある、がうちにはそういうコーディング規約があるんです、の意味だったの?
前提として標準に準拠したほうが良いよね、という主張がある
標準では複数retなんて当たり前に使ってる
それをなぜか否定しているので突っ込んだらローカルルールだ!と言われる
そういうローカルルールがあるのは構わんが、それならそう明記しなきゃ標準に準拠しようという主張とズレてブレブレなだけでは?
まさかレビューを受けたことがある、がうちにはそういうコーディング規約があるんです、の意味だったの?
752デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 22:16:38.50ID:yrxBBFH+0 >>751
だから本気で否定したいなら739でもそうやって書いてるって言ってるやん
740で書いたのは「沢山return書いてる時点で可読性低い」みたいなツッコミが入るかなーと予測して"一応"と前置きして書いたと言っただろ
そこを議論するつもりはないと書いたのに異様に拘るんだな
だから本気で否定したいなら739でもそうやって書いてるって言ってるやん
740で書いたのは「沢山return書いてる時点で可読性低い」みたいなツッコミが入るかなーと予測して"一応"と前置きして書いたと言っただろ
そこを議論するつもりはないと書いたのに異様に拘るんだな
753デフォルトの名無しさん (ワッチョイ 9fad-Hr3R)
2020/11/29(日) 22:22:25.03ID:kxXRvhGP0 複数リターン禁止www
754デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/29(日) 22:22:55.87ID:o/YPVzQP0755デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/29(日) 22:26:49.20ID:EVjNfLc/0756デフォルトの名無しさん (ワッチョイ 1702-C0hB)
2020/11/29(日) 22:38:58.86ID:5TTB8+bC0 チャゲアスASUKAのギフハブに監視されてるネタに掛けてGitHubをギフハブと呼ぶのは5chの標準語だと俺も思ってたがそこまで浸透してないのか
757デフォルトの名無しさん (アウアウイー Sacb-VDAt)
2020/11/29(日) 22:42:09.42ID:T9vV3uABa なんとも不思議な世界があるんだなあ・・・・
TryGetValueを使うのが今どきの常識的なコーディングだと思ってた自分としては
老害(あるいは悪意があって不適切なコーディングを押し付けようとしてる人)が世迷言をほざいてるだけにしか見えないや
TryGetValueを使うのが今どきの常識的なコーディングだと思ってた自分としては
老害(あるいは悪意があって不適切なコーディングを押し付けようとしてる人)が世迷言をほざいてるだけにしか見えないや
758デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 22:53:33.81ID:yrxBBFH+0 >>754
その理屈で行くとコードレビューなんて出来なくなるな
(これ明らかに意味のない文だけど何かスピリチュアル的な深い意味があるのだろうか…?配慮して指摘すべきではないか…?)なんて一々考察しなきゃいけないのかよ
その理屈で行くとコードレビューなんて出来なくなるな
(これ明らかに意味のない文だけど何かスピリチュアル的な深い意味があるのだろうか…?配慮して指摘すべきではないか…?)なんて一々考察しなきゃいけないのかよ
759デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/29(日) 23:00:13.09ID:YUoXGIHl0 了解
760デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/29(日) 23:03:55.81ID:YUoXGIHl0 >>753
MISRAにもあるし高信頼性を要求される場面ではそれなりにありがちな話だよ
MISRAにもあるし高信頼性を要求される場面ではそれなりにありがちな話だよ
761デフォルトの名無しさん (ワッチョイ b7e4-nc77)
2020/11/29(日) 23:14:22.90ID:iy3zNsHi0 >>758
レビュー受けてるような新人はそんなこと考えなくていいと思うよ
多次元辞書でアクセスそのまま返す利点が分からないならまだお勉強段階なんだから、そういうやり方もあると素直に学んでおけば良い
とりあえずチューニングはベテランがもっと後でやる仕事だから、パフォーマンスがーとか言い出すのは十年早い
レビュー受けてるような新人はそんなこと考えなくていいと思うよ
多次元辞書でアクセスそのまま返す利点が分からないならまだお勉強段階なんだから、そういうやり方もあると素直に学んでおけば良い
とりあえずチューニングはベテランがもっと後でやる仕事だから、パフォーマンスがーとか言い出すのは十年早い
762デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/29(日) 23:30:20.42ID:yrxBBFH+0 そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
763デフォルトの名無しさん (ワッチョイ 9fad-Hr3R)
2020/11/29(日) 23:51:14.64ID:kxXRvhGP0 >>760
ねーよ
ねーよ
764デフォルトの名無しさん (ワッチョイ d733-xdSs)
2020/11/29(日) 23:59:15.56ID:AAs5LLYH0 宗教論争オモロイなw
765デフォルトの名無しさん (ワッチョイ b7e4-nc77)
2020/11/30(月) 00:00:33.52ID:n5NKB6GR0 >>762
しょうがないな
こういうケースは極端化すれば明確になる
dic.TryGetValue(a, out var dic2)
dic2.TryGetValue(b, out var dic3)
dic3.TryGetValue(c, out var dic4)
dic4.TryGetValue(d, out var dic5)
dic5.TryGetValue(e, out var value)
vs
var value = dic[a][b][c][d][e]
とりあえず値の取得を比較した場合こうなる
非常に馬鹿げたコードだが後者の方が察しやすくバグりにくいのは分かるはず
これは分岐を差し込んでも同じこと
こんなコードは現実にあり得ないから無効と言い張るなら、所詮はその程度のレベルなんだから黙るべき
しょうがないな
こういうケースは極端化すれば明確になる
dic.TryGetValue(a, out var dic2)
dic2.TryGetValue(b, out var dic3)
dic3.TryGetValue(c, out var dic4)
dic4.TryGetValue(d, out var dic5)
dic5.TryGetValue(e, out var value)
vs
var value = dic[a][b][c][d][e]
とりあえず値の取得を比較した場合こうなる
非常に馬鹿げたコードだが後者の方が察しやすくバグりにくいのは分かるはず
これは分岐を差し込んでも同じこと
こんなコードは現実にあり得ないから無効と言い張るなら、所詮はその程度のレベルなんだから黙るべき
766デフォルトの名無しさん (ワッチョイ d742-P4WK)
2020/11/30(月) 00:20:59.97ID:9x2/PpIx0 TryGetValue vs ContainsKey+[]の争いでしょ?
なら下はちゃんと一つ一つにContainsKey挟むべき
そして後者の方がバグりにくい理由が全く分からない。まず何のバグを対象としているのか明確に
なら下はちゃんと一つ一つにContainsKey挟むべき
そして後者の方がバグりにくい理由が全く分からない。まず何のバグを対象としているのか明確に
767デフォルトの名無しさん (ワッチョイ ff63-ykbH)
2020/11/30(月) 00:25:39.57ID:G1P0/YpK0 レビューを受けるのが新人とか言ってる時点でまともじゃないでしょ
いつの時代のエンジニア思想よw
いつの時代のエンジニア思想よw
768デフォルトの名無しさん (アウアウイー Sacb-VDAt)
2020/11/30(月) 00:26:29.87ID:E5czHbG2a なんというかb7e4-nc77みたいなのがレビュアーやったら地獄だな
自分が新人だったらたまったもんじゃない
自分が新人だったらたまったもんじゃない
769デフォルトの名無しさん (ワッチョイ b7e4-nc77)
2020/11/30(月) 00:36:41.15ID:EEdVS6ls0770デフォルトの名無しさん (アウアウエー Sadf-WCF9)
2020/11/30(月) 00:39:46.85ID:qXuQLmTVa どうせ過疎スレだからスレ消費するのは問題ないと思うけど
あまりに下らな過ぎる論争で萎えるねw
よく読んでないので素っ頓狂なこと言ってるかもしれないけど、
iniファイルぐらいなら馬鹿正直にDictionaryをネストなんかしなくても
section+keyをキーにして平坦化しても良いような気もする
あまりに下らな過ぎる論争で萎えるねw
よく読んでないので素っ頓狂なこと言ってるかもしれないけど、
iniファイルぐらいなら馬鹿正直にDictionaryをネストなんかしなくても
section+keyをキーにして平坦化しても良いような気もする
771デフォルトの名無しさん (ワッチョイ d742-P4WK)
2020/11/30(月) 00:45:42.05ID:9x2/PpIx0 >>769
答えられないんだね
答えられないんだね
772デフォルトの名無しさん (ワッチョイ 9f01-1+jW)
2020/11/30(月) 01:29:55.64ID:a85534SW0 ini parserの中身を見たらContainsKey + インデクサだった
https://github.com/rickyah/ini-parser/blob/development/src/IniParser/Model/SectionCollection.cs#L62-L77
自分なら使う側のコードがシンプルになるようにini[section][key]かini[section]?[key]の形で
sectionかkeyがnullならnullを返すようにDictionaryを少し拡張するかな
https://github.com/rickyah/ini-parser/blob/development/src/IniParser/Model/SectionCollection.cs#L62-L77
自分なら使う側のコードがシンプルになるようにini[section][key]かini[section]?[key]の形で
sectionかkeyがnullならnullを返すようにDictionaryを少し拡張するかな
773デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/30(月) 05:30:56.15ID:lgcZd+iw0 >>763
お前がそういう世界を知らんだけ
お前がそういう世界を知らんだけ
774デフォルトの名無しさん (ワッチョイ 7778-P4WK)
2020/11/30(月) 08:23:44.56ID:gN60+pZv0 相変わらず質問者無視で議論してるのウケる
テンプレ読めない人多すぎでしょw
テンプレ読めない人多すぎでしょw
775デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/30(月) 08:57:23.41ID:8S8hZPx60776デフォルトの名無しさん (ワッチョイ 9f24-GtYN)
2020/11/30(月) 09:04:32.51ID:8S8hZPx60 >>772
そのプロジェクト見た感じTryGetValueを一度も使ってないから恐らくJavaか何か出身で存在知らないんだろうな
ContainsKeyは割と色んな言語にあるからこっちの方が認知度高いのは間違いない
なので昨日も言ったが一々C#に学習コスト払いたくないって人もいるだろうからそういう場合は好きにしたらいい
そのプロジェクト見た感じTryGetValueを一度も使ってないから恐らくJavaか何か出身で存在知らないんだろうな
ContainsKeyは割と色んな言語にあるからこっちの方が認知度高いのは間違いない
なので昨日も言ったが一々C#に学習コスト払いたくないって人もいるだろうからそういう場合は好きにしたらいい
777デフォルトの名無しさん (ワッチョイ d78c-P4WK)
2020/11/30(月) 10:07:26.68ID:3MSQwEh40778デフォルトの名無しさん (ワッチョイ 977c-zmjO)
2020/11/30(月) 10:12:11.16ID:I8/NWgIp0 テンプレ読めないって事はレスも読めないんだから言っても無駄
粛々とNG
粛々とNG
779デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/30(月) 10:29:32.82ID:lgcZd+iw0780デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/30(月) 10:45:42.20ID:0LXXOsdO0 >>776
お、ようやく自分の間違いを認めたか
まあContainsKeyの方が可読性高いのは当たり前なんだが
762 名前:デフォルトの名無しさん (ワッチョイ 9f24-GtYN) [sage] :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
お、ようやく自分の間違いを認めたか
まあContainsKeyの方が可読性高いのは当たり前なんだが
762 名前:デフォルトの名無しさん (ワッチョイ 9f24-GtYN) [sage] :2020/11/29(日) 23:30:20.42 ID:yrxBBFH+0
そう主張するのであれば具体的な利点を述べろよ
TryGetValue派は俺以外にもメリット述べてる奴いるけどContainsKey派は「そのほうが見やすい」程度の個人の感想以上は出てきてない
勿論それもメリットではあるがTryGetValueの方が見やすいと言う人もいるのでそこでは差は付かない
781デフォルトの名無しさん (ワッチョイ 9749-R9ZN)
2020/11/30(月) 11:16:43.36ID:o8riI3080782デフォルトの名無しさん (ワッチョイ 9fad-Hr3R)
2020/11/30(月) 11:55:30.78ID:tpJ2df0N0 >>773
ちょっとはググれよ
ちょっとはググれよ
783デフォルトの名無しさん (アウアウカー Sa2b-u/yY)
2020/11/30(月) 11:58:06.51ID:UK/ABAdxa 認知度と可読性が別物か
職場で宇宙人って呼ばれてそう
職場で宇宙人って呼ばれてそう
784デフォルトの名無しさん (スフッ Sdbf-a5dV)
2020/11/30(月) 12:11:19.73ID:zbjAWIZjd785デフォルトの名無しさん (ワッチョイ 9f01-hU1l)
2020/11/30(月) 12:13:44.19ID:lgcZd+iw0786デフォルトの名無しさん (ワッチョイ 771a-nc77)
2020/11/30(月) 12:15:09.00ID:0LXXOsdO0 TryGetValueを使うことに拘りすぎててアスペ臭しか感じない
好きにしろと言いながら必死で反論してんのが特にな
多様性を許容するっていうのは>>754みたいなスタンスなんだよ
ここまで言われて「何言ってんのか分かんない」と騒ぎ続けるのは感情で理解を拒んでるだけの地雷君
「そういうの嫌われるからやめよ?」って指摘されてるのに「なんで? 俺が正しいじゃん?」って返すのは馬鹿を通り越した何かだわ
好きにしろと言いながら必死で反論してんのが特にな
多様性を許容するっていうのは>>754みたいなスタンスなんだよ
ここまで言われて「何言ってんのか分かんない」と騒ぎ続けるのは感情で理解を拒んでるだけの地雷君
「そういうの嫌われるからやめよ?」って指摘されてるのに「なんで? 俺が正しいじゃん?」って返すのは馬鹿を通り越した何かだわ
787デフォルトの名無しさん (ワッチョイ ffa7-kyUo)
2020/11/30(月) 12:26:00.27ID:tnWbc17e0 こういうレスちんぽバトルやめねぇ?
788デフォルトの名無しさん (ワッチョイ 9fad-Hr3R)
2020/11/30(月) 12:51:21.50ID:tpJ2df0N0 >>785
MISRAって名前まで分かってるのに?
MISRAって名前まで分かってるのに?
789デフォルトの名無しさん (スッップ Sdbf-Hr3R)
2020/11/30(月) 12:52:22.17ID:PPubPKASd いまだに複数リターン禁止なんて言ってる時代錯誤なやつがいるのかよ…
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 俺もジョジョみたいな愛称欲しかった…
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- かしこいワンコっていうVtuberの子知ってる?
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
