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

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

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

解決済

2回答

1069閲覧

swift 読みやすい記述にするには?

L85A2

総合スコア60

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

1クリップ

投稿2018/05/02 02:29

編集2018/05/02 03:50

現在 swiftを勉強中です。
自分で書いたコードが英語の文章のように書けない事が多いいです。

例えば以下のコードです

swift

1func decide(by number:Int) ->String{ 2 if(isFizz(number)){return "Fizz"} 3 return "" 4} 5 6func isFizz(_ number:Int)->Bool{ 7 if(number%3 == 0){ 8 return true 9 }else { 10return false}

そのままメソッドを呼ぶのでは、無くメソッドチェインのように記述するのが推奨されるのでしょうか?
メソッドチェインなら英文のように書きやすいと思っています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

英語のように読めることは理想ですが、プログラミング言語も一つの言語であり、決まった文法がありますから、完全にほかの言語のように記述することはできません。ですから、無理にこだわる必要はありません。
無理に合わせようとすると、プログラムの自然な表現を壊してしまうことがあります。

 例えば、例示されたコードの場合、

swift

1if number.isFizz { return "Fizz" } else { return "" }

と書きたいのだろうと思います。これは、extensionを使ってIntを拡張することで実現できます。しかし、3で割り切れるかどうかを知りたいのはdecide()関数であって、Intにその関数を実装する必然性があるのか? という疑問がわいてきます。

 関数などは、それが実装されていて自然だと思われるところに使うほうが、英語のように読めるかかどうかより、読みやすい(理解しやすい)プログラムになると思います。

 という前段と矛盾しそうですが、参考までに、extensionを使うとこんな書き方ができます。

swift

1extension Int { 2 func canBeDivided(by value: Int) -> Bool { 3 return self % value == 0 4 } 5} 6 7func decide(by number:Int) ->String{ 8 return number.canBeDivided(by: 3) ? "Fizz" : "" 9}

投稿2018/05/02 06:53

編集2018/05/02 07:04
AOKINAO

総合スコア268

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

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

0

日本語での紹介/説明も多いので SwiftLint を導入するのが手っ取り早いです

投稿2018/05/02 03:10

MasakiHori

総合スコア3384

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問