Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録
< すぐキレたり横柄な態... |anond:20250204125816 >

2025-02-04

for文を使いたくないのはletを使いたくないか

https://gakuzzzz.github.io/slides/for_loop_to_higher_order_functions/#1

久々にアホな記事を見たので反論しておく

そもそも関数型にする大きな動機は「バグを減らすため」

これはオブジェクト指向でも同じでみんな「バグを減らすため」にいろんなパラダイムに挑戦してる

それ以外のHowだとかWhatだとかオブジェクト世界を表すだとかどうでもいい

結果的バグが減るならそれでいい

for文よりmapとかfilterの方がなぜバグが少ないか、というと「余計な操作が入りにくいから」

特にletで宣言してるような書き換え可能変数っていうのはバグの温床

例でも挙がってるようなProductのpriceの書き換えでもfor文にするとどこかにletな変数を置かないといけない

そんでletな変数っていうのはうっかり消してしまったりうっかり書き換えてしまっても気付くことができない

からconstで固めて何かしらのリスト処理をするときmapなりfilterなりを使ってconstに固め直す(か、そのまま使う)

逆に言うとそういう処理がないならfor文使っても全然構わない

本当に繰り返し処理をするんだから何も問題無い

この書き換え不可能変数を作るっていうのはCだとかC++だとかJavaだとかの頃からずーっと一緒でとにかく固めておきたい変数final宣言して書き換えさせない

そうしないと、めちゃくちゃ分かりづらいバグが混入して無意味に1週間とか過ごすことになる

Product.priceを直接書き換えるのはいいの?っていう疑問があるかもしれないが

これもしっかり規制するってのがオブジェクト指向的考え方で

「そこまでせんでも致命的にはならん」

っていう感じで型のチェックだけするのがTypeScript

まぁTSでもClass作れるから好きにすればいいんだけど

とにかくプログラミングに関する規則でHowだとかWhatだとかそういうフワフワしたこと言い出したら要注意

たぶん大学とかでフワフワしたプログラミングだけしてて碌なプロダクト作ったことない

ちゃんとしたプログラマーは

「これでバグが減ります(そして生産性が上がります)」

と言ってくれるから、そういうやつだけ重宝しろ

Permalink |記事への反応(14) | 22:55

このエントリーをはてなブックマークに追加ツイートシェア

記事への反応 -
  • JSにif式、switch式(文じゃなくて)ほしい!! ボロクソ言われてんのにわざわざ三項演算子の連続書くのもおそらくおんなじ理由で、 switch式さえあればおおよそ代替できるはず

  • ほぅ・・・

  • letにしたくらいでバグ作り込んで1週間も無駄にするのは流石にマヌケで能力が足りないとしか言いようがないんだが そんなやつがプロジェクトに入り込むのを避けるにはどうしたらい...

  • バグが減るっていうか半年後とかに見返したときの読みやすさの問題が大きい

  • 業務システムずっとやっているが、静的型信者が言うような型違いを代入してしまうバグや、関数型信者が言うような変数再代入によるバグってあんまり頻繁に出会った記憶がないんだ...

    • 最近のIDEであればmapだろうと変数の中身を全部確認できるので文に分解しておこうという動機は以前と比べると激減した データを走査するのであればmapやfilterならばデータ構造を意識す...

    • プログラミングパラダイムは原理的にどうだろうと人間の認知能力にマッチしないとまともに読めない。 人間の認知能力に沿って人間の感覚で読みやすいプログラミングパラダイムを構...

      • 最近はIDEが賢いので助かる

      • Rubyは、大きくて複雑なシステムでも、ひとつひとつの処理は小さなプログラムのように書けるっていう感触がある。 具体的にどの言語機能がというわけではないけれど、標準ライブラリ...

      • 静的型で先に型を決めてしまう言語が本流だったのに、最近になって型を定義しない言語が広まって混乱してるという認識なのだが

    • 文字列に数値を入れたらバグりましたって   って問題は 静的型付けの導入コストをかけてまで改善すべき問題か?   ってのはわりとまじで思ってる テストの段階で潰せるじゃんそん...

      • 最初から入れとけば導入コストほとんどゼロなんだから、最初から入れとけばいいじゃん 途中から入れると面倒臭いのは同意する

        • 動的だからって別に楽になってないから 動的のメリットが要らんのよな

      • それよりも、prefcobeとprefcodeの違いのせいでなんか動いてるんだけどなんかおかしいい?ってのを確認して修正するのに30分とかかかる みたいなのが毎日繰り返されるのが地味に嫌だ

    • 動的型言語はバグというよりも、開発途中で「あ、これフィールド名間違ってるじゃん。対応入れとこ」みたいな「バグ未満の対応」が多々発生して開発速度が上がらないというのはあ...

  • ChatGPT 4o この文章の主張は、「バグを減らすために for 文を避け、map や filter を使うべきだ」というものだが、これは一面的な見方とも言える。 確かに、関数型プログラミングの恩恵...

  • 講釈垂れる前に、まずはもうちょっと分かりやすい日本語を勉強してから書いてくれよ

  • 副作用があるならfor、ないならmapを使え。以上。

  • というか、今どきの難しいバグって大体非同期関係でmapだろうがforだろうがあんまり関係なくね?僅差でmapが有利くらいなもんで

  • 匿名から記名へ誹謗中傷する滅多に見ないアホ「久々にアホな記事を見たので反論しておく」 碌なプログラムを書いたこともない社会性ないプログラマーがエビデンスもなしになんか言...

  • 流石にこれを反論と言われるのは厳しい…

  • バグの原因は見ず知らずの人間のコードを託されるから 一人でやればバグらない

  • C言語に無い構文は、単なるイキりで使われてるだけの紛い物。151匹以降のポケモンのようなものだ。

  • 馬鹿どもに関数型を与えるなっ!!

記事への反応(ブックマークコメント)

全てのコメントを見る

人気エントリ

注目エントリ

ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp