質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

1966閲覧

高階関数は積極的に使うべきか?

umineko

総合スコア8

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2015/06/27 07:57

mapやreduce等の高階関数についての質問です。

個人でプログラミングを学んでおりますが、まだ組織に属してコードを書いた経験はありません。
ゆくゆくは会社に所属し、コードを書きたいと思い学んでいます。

「良いコード」と一口に言っても様々な価値観があると思うのですが、
明示的に何をしているのかを説明した方がよいのか?
用意されているメソッドは、開発者全員、既知であることを前提に最小限のコードを書けばよいのか?

以下はシンプルな例ですが、どちらが組織で働く際に好まれるのでしょうか?
ご意見頂けると幸いです。よろしくお願いします。

lang

1 2class Person { 3 var name: String? 4 var age: Int? 5} 6 7var john = Person() 8john.name = "john" 9john.age = 30 10 11var alex = Person() 12alex.name = "Alex" 13alex.age = 20 14 15let Persons = [john,alex] 16 17//Pattern A 18var namesA:[String] = [] 19for i in Persons { 20 namesA.append(i.name!) 21} 22 23//Pattern B 24var namesB:[String] = [] 25map(Persons,{namesB.append($0.name!)}) 26

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

その組織次第です。

プラットフォームの制約でSwiftを使わざるを得ないが、開発に携わるのはCプログラマばかりというような情況では、Swiftの機能を制限せざるを得ないでしょう。
Rubyプログラマばかりであれば、高階関数のような機能を積極的に使っていくのでしょう。
Swiftの例で書きましたが、「XXX言語で開発せざるを得ないがYYY言語プログラマが多い」というのは珍しいことではありません。

そういう人の条件を外して考えると、定型的な処理は専用の関数を使った方がその部分でバグが出なくて済むのでそちらの方が良いです。

投稿2015/06/27 08:22

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umineko

2015/06/27 22:23 編集

回答ありがとうございます。 「XXX言語で開発せざるを得ないがYYY言語プログラマが多い」という視点は、とても納得感のある重要な視点だなと感じました。
guest

0

PatternAとPatternBのどちらが好まれるのか?ということなら、間違いなくPatternAの方です。
とりあえず、map関数の使い方を間違えています。
PatternBのような書き方は誰も好まないでしょう。
正しくは、以下のように書きます。

lang

1var namesB = map(Persons, {$0.name!})

おそらく、その組織としてSwift言語を選択した時点で、Swift言語の流儀にしたがってコードを書くことが了承されているのだと思います。
もし、C言語の流儀でコードを書きたいならObjective-Cを使えばいいのですから。

投稿2015/06/27 12:47

Stripe

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umineko

2015/06/27 22:23 編集

回答ありがとうございます。 言語の流儀というのはあまり意識した事はありませんでした。いろいろな言語ごとの流儀を調べて勉強してみます。間違いを指摘して頂けるととても助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問