回答編集履歴
5
関数を再流用しやすいように修正
answer
CHANGED
@@ -6,10 +6,9 @@
|
|
6
6
|
apple: \red
|
7
7
|
strawberry: \red
|
8
8
|
orange: \orange
|
9
|
-
to-color = -> fruits-colors.(
|
9
|
+
to-color = (name)-> fruits-colors.(name) or \nothing
|
10
|
-
output-
|
10
|
+
output-color = (fluits)-> fluits |> to-color |> -> console.log "color is #it"
|
11
|
-
|
12
|
-
<[apple strawberry orange]> |> output-
|
11
|
+
<[apple strawberry orange]> |> each output-color
|
13
12
|
```
|
14
13
|
|
15
14
|
私は英語力がないのであまり良い書き方は出来ませんが、
|
@@ -17,5 +16,5 @@
|
|
17
16
|
[How to write a code like English(英文のようにプログラミングをする方法)](http://futurismo.biz/archives/2326)
|
18
17
|
|
19
18
|
C#に応用出来るかはわかりませんが、
|
20
|
-
私
|
19
|
+
私はPHPのみでしたが、LiveScirtを業務で触るようになってからPHPのソースコードも影響うけてカラフルに書けるようになりました。
|
21
20
|
LiveScriptはマイナー過ぎるので、RubyやElixir、Haskellが良いかもしれません。。。
|
4
魔改造
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
apple: \red
|
7
7
|
strawberry: \red
|
8
8
|
orange: \orange
|
9
|
-
to-color = -> fruits-colors.(it)
|
9
|
+
to-color = -> fruits-colors.(it) or \nothing
|
10
10
|
output-colors = (fluits)-> fluits |> each to-color >> -> console.log "color is #it"
|
11
11
|
|
12
12
|
<[apple strawberry orange]> |> output-colors
|
3
取り違えてたので全消し!
answer
CHANGED
@@ -1,61 +1,21 @@
|
|
1
|
-
|
1
|
+
[LiveScript](http://livescript.net/)で書いてみました。
|
2
|
-
|
2
|
+
遷移先の画面で下記のコードを張り付けてrunボタンを押してみてくだしあ
|
3
3
|
|
4
|
+
```
|
5
|
+
fruits-colors =
|
6
|
+
apple: \red
|
7
|
+
strawberry: \red
|
4
|
-
|
8
|
+
orange: \orange
|
9
|
+
to-color = -> fruits-colors.(it)
|
10
|
+
output-colors = (fluits)-> fluits |> each to-color >> -> console.log "color is #it"
|
5
11
|
|
6
|
-
if, else は子供のお使いだと思ってください。
|
7
|
-
もし財布の中に3000円入ってた場合は、八百屋であれ買って、肉屋であれ買って、余ったお金で200円分のお菓子を
|
8
|
-
でも、もし財布の中に1000円以上3000円未満の場合は…八百屋ではあれをそれにして…
|
9
|
-
|
10
|
-
こんな指示出す親がいたらどう思いますか?
|
11
|
-
傍から見れば覚えられるわけねーだろ、この親アホちゃうか?と思うわけですよ。
|
12
|
-
プログラマの場合人事じゃないんですよ…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
|
13
|
-
|
14
|
-
子供には「このメモに書かれているものを買ってきて」と財布の中身に応じたメモを持たせるのが正解です。
|
15
|
-
このときのメモに値するものが適切なクラスになるわけです。
|
16
|
-
|
17
|
-
「もし牛肉がなければ代わりに豚肉でいいよ」程度の命令ならば覚えていられます。
|
18
|
-
このように、if文の中身は1〜2行であっさり終わるシンプルな命令であればあるほど好ましいです。
|
19
|
-
|
20
|
-
この原則ですが、コンピュータは正確に覚えて指示通りに動作してくれますので忘れがちです。
|
21
|
-
その結果ソースコードをメンテする段階になって思い知るわけです。
|
22
|
-
if文はすくなければすくないほど良い・・・と。
|
23
|
-
|
24
|
-
> switch
|
25
|
-
|
26
|
-
ソースコードを読む人はswitch文をユーザー目線で見えるべきです。
|
27
|
-
ユーザー目線っていうのは、スイッチを入れるとONにすると明かりがつく、
|
28
|
-
レバーを倒すとレールが切り替わる程度の認識です。
|
29
|
-
|
30
|
-
つまり、ifより更にシビアです。
|
31
|
-
1項目が3行以上になるようなら思いとどまりましょう。
|
32
|
-
ここに書くべきなのはピタゴラスイッチではなく結果です。
|
33
|
-
結果が推測出来るメソッドを叩いてすぐに逃げましょう。
|
34
|
-
|
35
|
-
> for, while
|
36
|
-
|
37
|
-
基本的に状態変数がネックとなります。
|
38
|
-
私の得意なJavaScriptで九九を画面表示するサンプルをだします。
|
39
|
-
|
40
|
-
```JavaScript
|
41
|
-
var i, j;
|
42
|
-
for (i = 0; i < 10; i++) {
|
43
|
-
for (j = 0; j < 10; j++) {
|
44
|
-
// 画面上に「例:3 × 4 = 12」と表示する
|
45
|
-
|
12
|
+
<[apple strawberry orange]> |> output-colors
|
46
|
-
}
|
47
|
-
}
|
48
13
|
```
|
49
14
|
|
50
|
-
さて問題です。
|
51
|
-
|
15
|
+
私は英語力がないのであまり良い書き方は出来ませんが、
|
52
|
-
|
16
|
+
英語っぽく書いてみたり、関数型プログラミングを覚えると応用が効きやすいかとおもいます。
|
17
|
+
[How to write a code like English(英文のようにプログラミングをする方法)](http://futurismo.biz/archives/2326)
|
53
18
|
|
54
|
-
今回はたかが5〜6行の九九なので気をつけろくらいの気持ちで十分でしょうけど、
|
55
|
-
|
19
|
+
C#に応用出来るかはわかりませんが、
|
56
|
-
|
20
|
+
私がPHP→LiveScirtを業務で触るようになってからPHPのソースコードも影響けてカラフルに書けるようになりました。
|
57
|
-
|
21
|
+
LiveScriptはマイナー過ぎるので、RubyやElixir、Haskellが良いかもしれません。。。
|
58
|
-
何故なら状態変数の管理にコストを掛ける必要があるから。
|
59
|
-
|
60
|
-
普段はforeachや[map](http://akisute.com/2012/05/c-map-reduce.html)等を使うと良いでしょう。
|
61
|
-
ただし、for, while は原始的な分基本的に高速に動作しますので、悪とは決めつけられませんが、使う場合は相応の責任と覚悟をもって使いましょう
|
2
言い訳削除
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
言語問わず同じ問題にぶち当たると思うので、共通の概念で説明します。
|
2
2
|
ちょっと蛇足気味ですかね?分かりやすくなるよう頑張りました。
|
3
3
|
|
4
4
|
> if, else
|
@@ -8,8 +8,8 @@
|
|
8
8
|
でも、もし財布の中に1000円以上3000円未満の場合は…八百屋ではあれをそれにして…
|
9
9
|
|
10
10
|
こんな指示出す親がいたらどう思いますか?
|
11
|
-
あえて子供の記憶力を鍛える訓練としてやってるような理由があれば別ですけど、
|
12
11
|
傍から見れば覚えられるわけねーだろ、この親アホちゃうか?と思うわけですよ。
|
12
|
+
プログラマの場合人事じゃないんですよ…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
|
13
13
|
|
14
14
|
子供には「このメモに書かれているものを買ってきて」と財布の中身に応じたメモを持たせるのが正解です。
|
15
15
|
このときのメモに値するものが適切なクラスになるわけです。
|
@@ -18,8 +18,8 @@
|
|
18
18
|
このように、if文の中身は1〜2行であっさり終わるシンプルな命令であればあるほど好ましいです。
|
19
19
|
|
20
20
|
この原則ですが、コンピュータは正確に覚えて指示通りに動作してくれますので忘れがちです。
|
21
|
-
その結果ソースコードをメンテする段階になって
|
21
|
+
その結果ソースコードをメンテする段階になって思い知るわけです。
|
22
|
-
|
22
|
+
if文はすくなければすくないほど良い・・・と。
|
23
23
|
|
24
24
|
> switch
|
25
25
|
|
1
追記
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
C#はあまり詳しくないので、言語問わず共通の概念で説明します。
|
2
2
|
ちょっと蛇足気味ですかね?分かりやすくなるよう頑張りました。
|
3
3
|
|
4
|
-
> if, else
|
4
|
+
> if, else
|
5
5
|
|
6
6
|
if, else は子供のお使いだと思ってください。
|
7
7
|
もし財布の中に3000円入ってた場合は、八百屋であれ買って、肉屋であれ買って、余ったお金で200円分のお菓子を
|
@@ -21,6 +21,17 @@
|
|
21
21
|
その結果ソースコードをメンテする段階になって気がつくわけです…親も同じ命令を覚え続けないと指示が正しい事を保証出来ないって
|
22
22
|
要約するとこうなります…if文はすくなければすくないほど良い。
|
23
23
|
|
24
|
+
> switch
|
25
|
+
|
26
|
+
ソースコードを読む人はswitch文をユーザー目線で見えるべきです。
|
27
|
+
ユーザー目線っていうのは、スイッチを入れるとONにすると明かりがつく、
|
28
|
+
レバーを倒すとレールが切り替わる程度の認識です。
|
29
|
+
|
30
|
+
つまり、ifより更にシビアです。
|
31
|
+
1項目が3行以上になるようなら思いとどまりましょう。
|
32
|
+
ここに書くべきなのはピタゴラスイッチではなく結果です。
|
33
|
+
結果が推測出来るメソッドを叩いてすぐに逃げましょう。
|
34
|
+
|
24
35
|
> for, while
|
25
36
|
|
26
37
|
基本的に状態変数がネックとなります。
|