[過去ログ] スレ立てるまでもない質問はここで 159匹目 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
174(1): デフォルトの名無しさん [sage] 2022/02/24(木) 12:33:04 ID:2qhRGcQ8(1) AAS
>>168168(2): デフォルトの名無しさん [sage] 2022/02/24(木) 05:18:58 ID:jcAfJg3X(1/2) AAS
新卒2年目のプログラマです
ループ処理を行う場合、基本的にforeachを使っているのですが、カウントが必要な単純なループでforを使った所
先輩からカウント用の変数を用意するかselectメソッド(c#です)を使って全部foreachで統一してと言われました
(コーディング規約にあるわけではないです)
わざわざカウント用の変数を用意するのも、速度的にfor使用時より遅くなるselectメソッドを使用するのもなんだかスッキリしないなあと思っています
他の現場を知らないのですが、これは開発の現場では当たり前の事なのでしょうか?
ちなみに皆さんはどうされていますか?
頻出パターンだから拡張メソッドで一般化しておくのがいいと思う
foreachでカウント用の変数を都度用意してたらcontinueとかでバグる可能性もある
forの場合は将来的に要素へのindexアクセスが変な形で拡張されたりリファクタリングの妨げになる可能性がある
(メンテする技術者のレベル次第)
public static IEnumerable<KeyValuePair<int, T>> Enumerate<T>(this IEnumerable<T> collection){
int index=0;
foreach (var item in collection) {
yield return new KeyValuePair<int, T>(index++, item);
}
}
foreach (var (i, v) in foo.Enumerate()){
…
}
↑この拡張メソッドの場合はTがintの場合に(i, v)を(v, i)と勘違いしてバグる可能性はある
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s