回答編集履歴

5

関数を再流用しやすいように修正

2016/04/06 08:32

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -14,13 +14,11 @@
14
14
 
15
15
  orange: \orange
16
16
 
17
- to-color = -> fruits-colors.(it) or \nothing
17
+ to-color = (name)-> fruits-colors.(name) or \nothing
18
18
 
19
- output-colors = (fluits)-> fluits |> each to-color >> -> console.log "color is #it"
19
+ output-color = (fluits)-> fluits |> to-color |> -> console.log "color is #it"
20
20
 
21
-
22
-
23
- <[apple strawberry orange]> |> output-colors
21
+ <[apple strawberry orange]> |> each output-color
24
22
 
25
23
  ```
26
24
 
@@ -36,6 +34,6 @@
36
34
 
37
35
  C#に応用出来るかはわかりませんが、
38
36
 
39
- PHPLiveScirtを業務で触るようになってからPHPのソースコードも影響けてカラフルに書けるようになりました。
37
+ PHPのみでしたが、LiveScirtを業務で触るようになってからPHPのソースコードも影響けてカラフルに書けるようになりました。
40
38
 
41
39
  LiveScriptはマイナー過ぎるので、RubyやElixir、Haskellが良いかもしれません。。。

4

魔改造

2016/04/06 08:32

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  orange: \orange
16
16
 
17
- to-color = -> fruits-colors.(it)
17
+ to-color = -> fruits-colors.(it) or \nothing
18
18
 
19
19
  output-colors = (fluits)-> fluits |> each to-color >> -> console.log "color is #it"
20
20
 

3

取り違えてたので全消し!

2016/04/06 08:14

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,121 +1,41 @@
1
- 言語問わず同じ問題にぶち当たると思うの、共通の概念で説明ます
1
+ [LiveScript](http://livescript.net/)書いてみま
2
2
 
3
- ちょっと蛇足気味すかね?分かりやすくなるよう頑張りた。
3
+ 遷移先の画面下記のコードを張り付けてrunボタンを押てみてくだしあ
4
4
 
5
5
 
6
6
 
7
+ ```
8
+
9
+ fruits-colors =
10
+
11
+ apple: \red
12
+
13
+ strawberry: \red
14
+
7
- > if, else
15
+ orange: \orange
16
+
17
+ to-color = -> fruits-colors.(it)
18
+
19
+ output-colors = (fluits)-> fluits |> each to-color >> -> console.log "color is #it"
8
20
 
9
21
 
10
22
 
11
- if, else は子供のお使いだと思ってください。
12
-
13
- もし財布の中に3000円入ってた場合は、八百屋であれ買って、肉屋であれ買って、余ったお金で200円分のお菓子を
14
-
15
- でも、もし財布の中に1000円以上3000円未満の場合は…八百屋ではあれをそれにして…
16
-
17
-
18
-
19
- こんな指示出す親がいたらどう思いますか?
20
-
21
- 傍から見れば覚えられるわけねーだろ、この親アホちゃうか?と思うわけですよ。
22
-
23
- プログラマの場合人事じゃないんですよ…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
24
-
25
-
26
-
27
- 子供には「このメモに書かれているものを買ってきて」と財布の中身に応じたメモを持たせるのが正解です。
28
-
29
- このときのメモに値するものが適切なクラスになるわけです。
30
-
31
-
32
-
33
- 「もし牛肉がなければ代わりに豚肉でいいよ」程度の命令ならば覚えていられます。
34
-
35
- このように、if文の中身は1〜2行であっさり終わるシンプルな命令であればあるほど好ましいです。
36
-
37
-
38
-
39
- この原則ですが、コンピュータは正確に覚えて指示通りに動作してくれますので忘れがちです。
40
-
41
- その結果ソースコードをメンテする段階になって思い知るわけです。
42
-
43
- if文はすくなければすくないほど良い・・・と。
44
-
45
-
46
-
47
- > switch
48
-
49
-
50
-
51
- ソースコードを読む人はswitch文をユーザー目線で見えるべきです。
52
-
53
- ユーザー目線っていうのは、スイッチを入れるとONにすると明かりがつく、
54
-
55
- レバーを倒すとレールが切り替わる程度の認識です。
56
-
57
-
58
-
59
- つまり、ifより更にシビアです。
60
-
61
- 1項目が3行以上になるようなら思いとどまりましょう。
62
-
63
- ここに書くべきなのはピタゴラスイッチではなく結果です。
64
-
65
- 結果が推測出来るメソッドを叩いてすぐに逃げましょう。
66
-
67
-
68
-
69
- > for, while
70
-
71
-
72
-
73
- 基本的に状態変数がネックとなります。
74
-
75
- 私の得意なJavaScriptで九九を画面表示するサンプルをだします。
76
-
77
-
78
-
79
- ```JavaScript
80
-
81
- var i, j;
82
-
83
- for (i = 0; i < 10; i++) {
84
-
85
- for (j = 0; j < 10; j++) {
86
-
87
- // 画面上に「例:3 × 4 = 12」と表示する
88
-
89
- console.log(i+" × "+j+" = "+(i*j));
23
+ <[apple strawberry orange]> |> output-colors
90
-
91
- }
92
-
93
- }
94
24
 
95
25
  ```
96
26
 
97
27
 
98
28
 
99
- さて問題す。
29
+ 私は英語力がないのあまり良い書き方は出来ませんが、
100
30
 
101
- 上記のコードは九九として誤ってで、何秒かかりましたか?
31
+ 英語ぽく書いみたり、関数型プログラミングを覚えと応用効きやすいとおもいす。
102
32
 
103
- 実はfor文はiやj現在地がココロ変わるので、机上デバッが困難で
33
+ [How to write a code like English(英文のようにプログラミングをる方法)](http://futurismo.biz/archives/2326)
104
34
 
105
35
 
106
36
 
107
- 今回かが5〜6行の九九なので気をつけろくらいの気持ちで十分でしょうけど
37
+ C#に応用出来るかりませんが、
108
38
 
109
- 実践は正しいか誤りか瞬時は分からない業務ロジックです
39
+ PHP→LiveScirtを業務で触るようなってからPHPのソースコードも影響けてカラフルに書けるようにりました
110
40
 
111
-
112
-
113
- for, whileだけ時間もパワーもかかるし修正も毎回相応のコストがかかる
41
+ LiveScriptマイナー過ぎで、RubyやElixir、Haskell良いかもしれません。。
114
-
115
- 何故なら状態変数の管理にコストを掛ける必要があるから。
116
-
117
-
118
-
119
- 普段はforeachや[map](http://akisute.com/2012/05/c-map-reduce.html)等を使うと良いでしょう。
120
-
121
- ただし、for, while は原始的な分基本的に高速に動作しますので、悪とは決めつけられませんが、使う場合は相応の責任と覚悟をもって使いましょう

2

言い訳削除

2016/04/06 08:12

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,4 +1,4 @@
1
- C#はあまり詳しくないので、言語問わず共通の概念で説明します。
1
+ 言語問わず同じ問題にぶち当たると思うので、共通の概念で説明します。
2
2
 
3
3
  ちょっと蛇足気味ですかね?分かりやすくなるよう頑張りました。
4
4
 
@@ -18,9 +18,9 @@
18
18
 
19
19
  こんな指示出す親がいたらどう思いますか?
20
20
 
21
- て子供記憶力を鍛える訓練してやってるよな理由があれば別ですけど、
21
+ 傍から見れば覚られるわけねーだろ、こ親アホちゃうか?わけですよ。
22
22
 
23
- 傍から見れば覚えられるわけねーだろ、こ親アホちうか?と思うわけですよ
23
+ プログラマ場合人事じないんですよ…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
24
24
 
25
25
 
26
26
 
@@ -38,9 +38,9 @@
38
38
 
39
39
  この原則ですが、コンピュータは正確に覚えて指示通りに動作してくれますので忘れがちです。
40
40
 
41
- その結果ソースコードをメンテする段階になって気がつくわけです…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
41
+ その結果ソースコードをメンテする段階になって思い知るわけです
42
42
 
43
- 要約するとこうなります…if文はすくなければすくないほど良い。
43
+ if文はすくなければすくないほど良い・・・と
44
44
 
45
45
 
46
46
 

1

追記

2016/04/06 07:05

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- > if, else, switch
7
+ > if, else
8
8
 
9
9
 
10
10
 
@@ -41,6 +41,28 @@
41
41
  その結果ソースコードをメンテする段階になって気がつくわけです…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
42
42
 
43
43
  要約するとこうなります…if文はすくなければすくないほど良い。
44
+
45
+
46
+
47
+ > switch
48
+
49
+
50
+
51
+ ソースコードを読む人はswitch文をユーザー目線で見えるべきです。
52
+
53
+ ユーザー目線っていうのは、スイッチを入れるとONにすると明かりがつく、
54
+
55
+ レバーを倒すとレールが切り替わる程度の認識です。
56
+
57
+
58
+
59
+ つまり、ifより更にシビアです。
60
+
61
+ 1項目が3行以上になるようなら思いとどまりましょう。
62
+
63
+ ここに書くべきなのはピタゴラスイッチではなく結果です。
64
+
65
+ 結果が推測出来るメソッドを叩いてすぐに逃げましょう。
44
66
 
45
67
 
46
68