MapとforEachはどちらでもいい? Mapの方がスマート?

エンジニアちゃんたちがコードレビューで喧嘩してるから何かと思ったら、「オブジェクトの変換処理をforEachで愚直に書くよりMapで書いた方がスマートだ」とかそんなような話で、、、 「どっちでもいいわい!!」 スタイルガイドに明文化してないんだから、コードとして正しいのに趣味を押し付けるな
2023-01-25 16:56:36
個人的には最低限のスタイルはフォーマッターとLintで保証してるので、それ以上の細かいところはロジックとして正しいのであればレビュワーが個人の好みを押し付けるべきではないと思ってるんだけど、、、 「こっちの方がスマートだ!!」みたいな不毛な議論に時間使うのやめよ。。。
2023-01-25 16:58:55
val list = MutableList<String>() data.forEach { list.add(it.toFOo) } 僕はこのコードを見るたびに怒ってるw twitter.com/ayu_littlewing…
2023-01-25 17:17:10
スマートかどうかじゃなくて意図が見づらい。 なんでmapの方が意図が明確なのにそっち?ってなる。 あとはforEachの中端折ってるけど大体コードとして見にくいんよ。
2023-01-25 17:20:39
コードとして正しいのに趣味を押し付けるなというのも、「スマートだから」と言う理由で無駄に時間を奪うなというのも同意するんだけれど、forEachとmapという特殊な例では待ったをかけたくなってしまうなぁ この例だと副作用に起因する複雑さへの問題意識が足りないと思われても仕方ない twitter.com/ayu_littlewing…
2023-01-25 18:48:19
@ayu_littlewing その謎レビューに体力を使うのが馬鹿らしくて、読みやすくて素直なら何でも良いでしょと答えています。
2023-01-25 18:49:58
forEachとmapは結果的に良くない例だったんだけれど、それはそれとして「スマート」っていう主観的な基準でレビューされるとつらいよね
2023-01-25 18:58:45
言われる側の立場だったとして、修正を強要されたら嫌だけど、こっちの方がこういう風にも書けるよって教えてくれた方が次書くときにも選択肢増えるからありがたいな 自分はこっちの方がスマートだと思うけどあなたはどう思う?と委ねてくれれば良い レビューする側でもそう気をつける twitter.com/ayu_littlewing…
2023-01-25 22:39:22
mutable state を特に必要性のないところで使っていた場合はレビューで弾くのは当然だと思うが… twitter.com/ayu_littlewing…
2023-01-26 00:35:42
メンテナンス効率と可読性を秤にかけて最適解を探しているだけで、「趣味を押し付けて」いるわけではないのよ。それがわかって、ようやくエンジニアとしてはよちよち歩きレベル。頑張りましょうね。( ^∀^) twitter.com/ayu_littlewing…
2023-01-26 00:45:58
言語によって速度がそれなりに違うからしゃあなしと思うけど、割と差のある言語かつ数十から数百msで勝負してる現場でnが百万超えてくるなら マジで死ねよってなる案件 twitter.com/ayu_littlewing…
2023-01-26 01:20:53
こういうのは「実はこういう書き方もありまっせ」っていうコメントで済まして終わり twitter.com/ayu_littlewing…
2023-01-26 01:43:21
論点違うけど、map使って書けるものをforEachを使うのは謎 なるべく副作用は起こしたくない twitter.com/ayu_littlewing…
2023-01-26 02:50:44
値を返すならmap、返さないならforEachじゃないかな? twitter.com/ayu_littlewing…
2023-01-26 06:03:45
@ayu_littlewing なんの言語かわかりませんが、map だとインスタンスを作り直しますし、foreach だと使い回す可能性がありますよね。 immutable で使い捨てインスタンスみたいなことも考慮しての「map の方がいい」という意見であれば、なかなかやるなお主、的にも聞こえますが、わかりやすければ何でもいいですw
2023-01-26 06:49:48
@ayu_littlewing 過去に似たような経験があり、その議論のおかげで現実逃避を兼ね、進捗に役立っていると勝手に思いました。こだわりって他人にはわからないですから。。。
2023-01-26 07:34:08
@ayu_littlewing forとの使い分けでforeachは繰り返し処理をする場合で使い、 mapはmap内で処理を行って新しく配列を作り直して配列を返すものだと捉えて使っていますね。
2023-01-26 07:39:40
どっちでもいいから決めてくれた方でかくわ。 そういうレビューがあるだけいいよね。 (実質自己マージの現場から逃げてきたばかりなので) twitter.com/ayu_littlewing…
2023-01-26 08:30:54
@ayu_littlewing mapとかselectを一度味わってしまうと絶対eachやらないマンになってしまう…。実際each each each if if if が連なるよりかはかっこよくなりますし。
2023-01-26 09:12:33
map なら見た瞬間に新しい配列を計算したいという意図が伝わるし、forEach だと逆に map ではできないような処理が入っているんだろうな、と思って読むので、スマートかどうかではなく、可読性の点で分けた方が良いと思った! twitter.com/ayu_littlewing…
2023-01-26 09:30:41
何の言語かはわからないけどmap vs forEachについてはどっちでも良いことはないんじゃないかな 挙動が期待するものであればどんなコード書いてもいいわけじゃないし(パフォーマンスに差が出る) 単に書き方の違い、かつプロジェクトでルールが決められていないのであれば確かにそれはどっちでも良いけど twitter.com/ayu_littlewing…
2023-01-26 09:35:43
どっちでも良い派 vs 高階関数派 vs 負荷重視でforEachも検討派 宗教戦争ではあるけれど… twitter.com/ayu_littlewing…
2023-01-26 09:45:22
@ayu_littlewing 自分ならPRのレビュー書くときに冒頭に[nits]と書いてmapのが変数スコープ短くなって良い書き方ですみたいなコメント書きます 最後にnitsやimoは修正しなくて大丈夫な指摘です🙆♂️と書きます
2023-01-26 10:05:18