- ベストアンサー
C#メソッド命名について
- C#のメソッドの命名について初心者が質問しています。特に、戻り値の有無で異なるメソッドを区別する場合の命名方法に悩んでいるようです。
- 初心者は、戻り値を持つメソッドと戻り値を持たないメソッドの命名についてアドバイスが欲しいと思っています。
- C#初心者が、戻り値の有無で異なるメソッドを命名する方法について質問しています。オーバーロードせずに、分かりやすい命名方法について詳しい方の意見を求めています。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
> このタイプの自己規約はすでに"仮"決定済みで、プロジェクト(?)を問わず全てのメソッドで統一しています。 また、(こんなやり方でよいのかわかりませんが)このような事例の場合、全ての自己規約は(一応は動く自作ソフトで)ソースコードの概要・履歴とともに保管・管理しております。 今回の場合、なしで戻り地を持つタイプ、「2」で「out」のタイプです。 そこまでちゃんとやってんならそれでいいんじゃないかしら。 気に入らなくなって改名するにしてもさほどに面倒ではなさそうだし。
その他の回答 (7)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 数値を自己規約に沿って付けるだけなので手間はかからないと思うのですが 命名するのに手間はかからんです。 数日後/数年後にこのコード読んで、GetXValue2(...) の "2"に込められた意味が読み取れますか? GetYValue2(...) の"2"の意味と同じですか? GetXValue3(...) の"3"はどうですか? 「そんなの気にしない」ならそもそもこんな質問ナンセンスですけどね。
お礼
ご意見ありがとうございます。 念のため補足しておきますと、このタイプの自己規約はすでに"仮"決定済みで、プロジェクト(?)を問わず全てのメソッドで統一しています。 また、(こんなやり方でよいのかわかりませんが)このような事例の場合、全ての自己規約は(一応は動く自作ソフトで)ソースコードの概要・履歴とともに保管・管理しております。 今回の場合、なしで戻り地を持つタイプ、「2」で「out」のタイプです。 …と、こんな感じに初心者なりに努力はしていますが、やっぱり脆いでしょうか?
- Tacosan
- ベストアンサー率23% (3656/15482)
ん~, 私も「わざわざ名前を変える」理由が分からん (例として「検索」をあげているんだけど「どう」役立つのかが見えない) のだけど, #4 のようにするなり, アンダースコアを使いたくないなら全部キャメルケースで SampleMethodOut とかにするなりでいいんじゃないだろうか. まあ「なんちゃらOut」って名前のメソッドだと「なんちゃらOutOut」とか間抜けなことになるけど, それはそれ「そんな名前のメソッドは認めない」ってすればいいだけだし.
お礼
ご意見ありがとうございます。 確かに、最初は「~Out」にしようと思っていたのですが、場合によっては「Get~Out」となる場合も十分にあり(というよりは4割近くそうなってしまう)、別の意味に捉えられる可能性があるため避けています。
補足
今日、気になってもう一度測定してみた結果、戻り値をもつタイプのメソッドの方が何度やっても速くなるという結果になりました。マシンを変えても結果は変わらず、以前の結果の真逆になりました。 無論、メソッドの内容や基本環境はは何一つ変えていません。多分何らかの原因があったのだと思います。 結局、メソッドは元のだけを残すことにします。 今回は皆さんをお騒がせして申し訳ありませんでした。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 後々、至る所でメソッドを使用する事になった場合、名前分けをしておいた方が検索などで困らなくて良いのではないかと思ったのですが、どうなのでしょうか? 「検索など」の必要性/利便性/頻度はどれほどのものなんですか? たいして役に立たんもののために手間かけるのは無駄ですよ?
お礼
ご意見ありがとうございます。 まあ、確かに検索を使う頻度は少なめだと思います。 ただ、数値を自己規約に沿って付けるだけなので手間はかからないと思うのですが、この時間すらプログラミングの世界では十分な時間の無駄になるのでしょうか? 初歩的な質問ですみません。 あと、可読性を向上するつもりでやってみたところ、読みやすくなったのは偽薬効果でしょうか? また、質問ばかりで申し訳ないのですが、皆さんはこういった場合、可読性などを向上するためにどのような工夫をされるのでしょうか?
- Gotthold
- ベストアンサー率47% (396/832)
0とか2とかマジックナンバー使うくらいだったら 同名メソッドでオーバーロードしたほうがまし。 Callする側でoutとかrefとかつけなきゃいけないんだから 引数リスト見ればどれ呼んでるかは分かるし。 どうしても違う名前つけたいなせめてSampleMethod_outとか安直でもいいから意味のある言葉で…
お礼
今日、気になってもう一度測定してみた結果、戻り値をもつタイプのメソッドの方が何度やっても速くなるという結果になりました。マシンを変えても結果は変わらず、以前の結果の真逆になりました。 無論、メソッドの内容や基本環境はは何一つ変えていません。多分何らかの原因があったのだと思います。 結局、メソッドは元のだけを残すことにします。 今回は皆さんをお騒がせして申し訳ありませんでした。
補足
アンダースコアはイベントハンドラ以外には推奨されていませんがよろしいのでしょうか? そこの辺り、初心者なのでよくわかりません。 また、名前を変えるのは検索などに用いるためで、後々の役に立つと考えています。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
引数の数/型が異なる同名メソッドは許されてますが。 using System; class Sample { public static void f(int n) { Console.WriteLine("f(int)"); } public static void f(out int n) { Console.WriteLine("f(out int)"); n = 1; } public static void Main() { int i = 0; f(i); f(out i); } }
お礼
今日、気になってもう一度測定してみた結果、戻り値をもつタイプのメソッドの方が何度やっても速くなるという結果になりました。マシンを変えても結果は変わらず、以前の結果の真逆になりました。 無論、メソッドの内容や基本環境はは何一つ変えていません。多分何らかの原因があったのだと思います。 結局、メソッドは元のだけを残すことにします。 今回は皆さんをお騒がせして申し訳ありませんでした。
補足
それは知っているのですが、後々、至る所でメソッドを使用する事になった場合、名前分けをしておいた方が検索などで困らなくて良いのではないかと思ったのですが、どうなのでしょうか? まだ規模が大きめのプログラムを書いたことがないので良かったらその辺りも教えていただけませんか?
- TooManyBugs
- ベストアンサー率27% (1472/5321)
命名規約が無ければ予約後や重複しなければ何でも良いわけですが。 一般論からすればそのメソッドの動作を示す名称にするのが一般的なので SampleMethodそのものが良くない命名の見本、それに番号を付けるのはさらに良くない。 例えばSampleMethod1からSampleMethod1000まで有ったら何をしてどう違うのか解らなくなりますね。
お礼
今日、気になってもう一度測定してみた結果、戻り値をもつタイプのメソッドの方が何度やっても速くなるという結果になりました。マシンを変えても結果は変わらず、以前の結果の真逆になりました。 無論、メソッドの内容や基本環境はは何一つ変えていません。多分何らかの原因があったのだと思います。 結局、メソッドは元のだけを残すことにします。 今回は皆さんをお騒がせして申し訳ありませんでした。
補足
察してください、実名はしっかりとしたものですが、上記の追加を行う対象となっているメソッド数が20を超えるため代表として「SampleMethod」としたのです。 その上、現在では戻り値を持つものは番号なし、「out」を使えば「2」、「ref」を使えば「0」とするように決めています。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
"ほぼ同じ動作"なら追加しなくていいんじゃないかと。
お礼
今日、気になってもう一度測定してみた結果、戻り値をもつタイプのメソッドの方が何度やっても速くなるという結果になりました。マシンを変えても結果は変わらず、以前の結果の真逆になりました。 無論、メソッドの内容や基本環境はは何一つ変えていません。多分何らかの原因があったのだと思います。 結局、メソッドは元のだけを残すことにします。 今回は皆さんをお騒がせして申し訳ありませんでした。
補足
ご存知かと思いますが、戻り値を使うとコードが簡潔になる代わりに、「out」で取得するよりも2.2~2.4倍ほど時間がかかります(メソッド内の処理が十分に軽い場合)。 そのため、2乗のループになったりするような場合は積極的に「out」を使おうとしているところです。
お礼
そうなのですか。 少々不安も残りますが、問題が発生するまではしばらくこのままでやっていきます。 こんな初心者に付き合って回答してくださった皆さん方、ありがとうございました。
補足
今日、気になってもう一度測定してみた結果、戻り値をもつタイプのメソッドの方が何度やっても速くなるという結果になりました。マシンを変えても結果は変わらず、以前の結果の真逆になりました。 無論、メソッドの内容や基本環境はは何一つ変えていません。多分何らかの原因があったのだと思います。 結局、メソッドは元のだけを残すことにします。 今回は皆さんをお騒がせして申し訳ありませんでした。