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

回答編集履歴

5

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

2016/04/06 08:32

投稿

miyabi-sun
miyabi-sun

スコア21454

answer CHANGED
@@ -6,10 +6,9 @@
6
6
  apple: \red
7
7
  strawberry: \red
8
8
  orange: \orange
9
- to-color = -> fruits-colors.(it) or \nothing
9
+ to-color = (name)-> fruits-colors.(name) or \nothing
10
- output-colors = (fluits)-> fluits |> each to-color >> -> console.log "color is #it"
10
+ output-color = (fluits)-> fluits |> to-color |> -> console.log "color is #it"
11
-
12
- <[apple strawberry orange]> |> output-colors
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
- PHPLiveScirtを業務で触るようになってからPHPのソースコードも影響けてカラフルに書けるようになりました。
19
+ PHPのみでしたが、LiveScirtを業務で触るようになってからPHPのソースコードも影響けてカラフルに書けるようになりました。
21
20
  LiveScriptはマイナー過ぎるので、RubyやElixir、Haskellが良いかもしれません。。。

4

魔改造

2016/04/06 08:32

投稿

miyabi-sun
miyabi-sun

スコア21454

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

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

2016/04/06 08:14

投稿

miyabi-sun
miyabi-sun

スコア21454

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
- > if, else
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
- console.log(i+" × "+j+" = "+(i*j));
12
+ <[apple strawberry orange]> |> output-colors
46
- }
47
- }
48
13
  ```
49
14
 
50
- さて問題です。
51
- 上記のコード九九として誤っている事分かるま、何秒かかりましたか?
15
+ 英語力ないのあま良い書き方は出来せんが、
52
- 実はfor文はiやjの現在地がコロコロ変わるので机上デバッグが困難です。
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
- for, while作るだけで時間もパワもかかし、修正も毎回相応コストがかかる
21
+ LiveScriptマイナ過ぎるので、RubyやElixir、Haskell良いかもしれません。。
58
- 何故なら状態変数の管理にコストを掛ける必要があるから。
59
-
60
- 普段はforeachや[map](http://akisute.com/2012/05/c-map-reduce.html)等を使うと良いでしょう。
61
- ただし、for, while は原始的な分基本的に高速に動作しますので、悪とは決めつけられませんが、使う場合は相応の責任と覚悟をもって使いましょう

2

言い訳削除

2016/04/06 08:12

投稿

miyabi-sun
miyabi-sun

スコア21454

answer CHANGED
@@ -1,4 +1,4 @@
1
- C#はあまり詳しくないので、言語問わず共通の概念で説明します。
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
- 要約するとこうなります…if文はすくなければすくないほど良い。
22
+ if文はすくなければすくないほど良い・・・と
23
23
 
24
24
  > switch
25
25
 

1

追記

2016/04/06 07:05

投稿

miyabi-sun
miyabi-sun

スコア21454

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  C#はあまり詳しくないので、言語問わず共通の概念で説明します。
2
2
  ちょっと蛇足気味ですかね?分かりやすくなるよう頑張りました。
3
3
 
4
- > if, else, switch
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
  基本的に状態変数がネックとなります。