teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問文への回答を追加

2017/09/22 01:31

投稿

miyabi-sun
miyabi-sun

スコア21461

answer CHANGED
@@ -3,21 +3,28 @@
3
3
 
4
4
  ---
5
5
 
6
+ 表題の件はグローバルに近い概念の共通変数を使ってどうのこうのやってるから、
6
- 再代入禁止ってのは関数型プログラミグかやってきた概念で、
7
+ これ代替Observerパターを使うくいしか無い。
8
+
9
+ Redux、MobX、EventEmitterあたりが参考になるかな。
10
+ でも実態は共通のグローバル変数(連想配列)を1個作って、ここに全ての副作用を凝縮するという解決法だから表題とやってる事は一緒。
11
+ JavaScriptである以上、グローバル変数を作らずスマートに解決する方法は多分ない。
12
+
13
+ ---
14
+
7
15
  関数型プログラミング言語は手続き型プログラミング言語とは違って、
8
16
  単純に状態変数作らなくても綺麗に設計して作れますよってだけの話。
9
17
 
10
- JavaScriptはオブジェクト指向言語あるけれど
18
+ その関数型の考え方の一つである、参照透過があるかつ副作用のない関数を作るようにしたら手続き型でもバグが少なくプログラミング出来るじゃんすげー!!…という風に密かに盛り上がってる。
11
- 手続き型 -> 宣言型(関数型) パラダイムで考えると上から順次実行されるので手続き型に分類される。
19
+ constで再代入禁止ってのは関数型の考え手続き型へ輸入してく際の制約
12
- (この辺は気になったらWikipediaなんかで軽く調べてみてね)
13
20
 
14
- その関数型の考え方の一つである、参照透過があるかつ副作用のない関数を作るようにしたら手続き型でもバグが少なくプログラミング出来るじゃんすげー!!…という風に密かに盛り上がってるのが現状
15
- constで再代入禁止ってのは関数型の考えやメリットを手続き型へ輸入してくる際の制約。
16
-
17
21
  参照透過で副作用のない関数を作る一貫で、constで再代入しませんよ宣言した変数を使っておくと、
18
22
  後から見たエンジニアが「ああ、この関数の中身は関数型プログラミングの思想で作られているんだね、使い勝手が良いね」って思ってくれる。
19
23
  これがメリット。
20
24
 
25
+ 要するに関数型プログラミングとはなんぞやってのを勉強していかないと、
26
+ 何故constを使うべきか、constを活用したコードが美しいか理解できないし説明できない。
27
+
21
28
  ---
22
29
 
23
30
  [JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶ](https://www.amazon.co.jp/JavaScript%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E8%A4%87%E9%9B%91%E6%80%A7%E3%82%92%E6%8A%91%E3%81%88%E3%82%8B%E7%99%BA%E6%83%B3%E3%81%A8%E5%AE%9F%E8%B7%B5%E6%B3%95%E3%82%92%E5%AD%A6%E3%81%B6-impress-top-gear/dp/4295001139)という書籍がとても勉強になった。