タグ

side_effectに関するimyutaroのブックマーク (4)

  • 副作用 – プログラミング用語解説|Unity高校&ゲームスクールのG学院

    副作用とは、コンピュータプログラミングにおける意味合いとしては、ある機能がプログラム上のデータを変化させ、それ以降の演算の結果に影響を与えることを指します。噛み砕いて言えば、数学的関数は来計算結果を返すことが目的ですが、その過程で周囲の状態を変化させてしまうことを指します。このような状態の変化はバグに繋がる可能性があるため、副作用という名で呼ばれています。 一般的な例では、プログラミングにおける関数の利用です。まず副作用の無い関数とは、「演算内容が引数にのみ依存し、演算結果は戻り値のみ影響する」というものです。そのため、関数の引数として変数を指定する時、その値のみを渡すこと(値渡し)が理想的です。ところが、引数の参照(アドレス)を渡した場合(参照渡し)、関数は引数の内容を変更することができてしまい、演算の過程で引数の値が変わってしまう可能性があります。この場合、関数の処理前後で引数となる

  • 4:副作用のない関数にまとめる

    4:副作用のない関数にまとめる¶ プログラミングにおいて「 副作用 」を意識することはとても大切です。 副作用とは、プログラムが実行された結果に何かしらの状態が変更されることを言います。 関数が外部にある変数や状態に影響されない場合、同じ入力を与えると常に同じ出力をするはずです。 テストがしやすく、状態に影響されない関数ができます。 副作用のある関数はどんなもので、どういう注意点があるのでしょうか? 具体的な失敗¶ def is_valid(article): if article.title in INVALID_TITLES: return False # is_valid関数が article.valid の値を書き換えている article.valid = True # .save()を呼び出すことで、外部にデータを保存している article.save() return True

    4:副作用のない関数にまとめる
  • 副作用ってなんだ? 〜楽に小さく単体テストをしよう〜 - Qiita

    プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、 それ以降で得られる結果に影響を与えることをいう。代表的な例は変数への値の代入である。 wikipedia より つまり? (ざっくり言うと)同じ様に呼び出しても同じ結果が返ってくるとは限らない処理のことです 何が悪いの? 単体テストがしづらい!! (以後、この記事ではJUnitの様なテストフレームワークによるソースコードの自動テストを単体テストと言います) 他にも色々面倒を引き起こします テスト環境で評価するのが面倒だったり出来なかったりすることが多い 開発コストがかさむ 改修範囲の特定が難しかったり、切り分けが出来なかったりする サンプル見せてよ このクラスを単体テストしたいと思ったけど無理っぽいぞどうしよう、という想定です @AllArgsConstructor public clas

    副作用ってなんだ? 〜楽に小さく単体テストをしよう〜 - Qiita
  • 副作用のあるコードはなぜいけないのか - 滅入るんるん

    副作用のあるコードは書かないほうがいいというものは経験上わかっていたのですが、今まではなぜ書いてはいけないのかのいい例が思いつかずあまり説明できていなかったのですが、いい例を思いついたので書いておきます。 副作用のあるコードとはなんぞや 副作用のあるコードとはを語るうえで副作用のあるコードとはなんなのかを決めておかないといけませんよね。 ここではメソッド名から推測できない作用のあるコードとしておきます。 たとえばのコードを挙げましょう: public class Repository { private IList<string> messages; public string GetTitle() { if(messages == null) { messages = new List<String> { "Hello", "World" }; } return "Title"; } }

    副作用のあるコードはなぜいけないのか - 滅入るんるん
  • 1