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

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

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

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

Q&A

解決済

1回答

350閲覧

Swiftにおいてextensionの使い方がよく分かりません。

kamekame0912

総合スコア17

Swift

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

0グッド

0クリップ

投稿2019/02/25 06:49

初歩的な質問で申し訳ありません。
Swiftにてextensionの使い方がよく分かりません。
コードが冗長になる時に可読性をあげるとよく目にしますが、それだとfuncに記述しても同じことではないのかなと思います。私は趣味の範囲で一人でコードを作成しているので可読性はあまり気にしないでも良いのでしょうか?もし今後出来上がったアプリを公開しようとした時に審査する人が見やすいように気がける必要もあるのでしょうか?だとしたらどのような事に気をつけてコードを書いていけば良いのでしょうか?

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

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

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

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

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

fuzzball

2019/02/25 07:04

審査にコードのレビューはありません。
fuzzball

2019/02/25 08:54 編集

使い方と必要性は別の話では? 使い方が分からないから必要性が分からないだけでは? グダグダ言い訳せずに、まずは使い方を勉強したらどうでしょうか?
kamekame0912

2019/02/25 09:12

別に言い訳をしている訳ではなく、調べていても分からなかったので質問しただけなのですが…。なぜ趣味でしている事でこんなに嫌な言い方をされなければいけないのでしょう?
guest

回答1

0

ベストアンサー

extensionの本来の目的は既存のライブラリ等に対して機能を拡張していくことだと思いますが、
(例えばCGRectにcenterプロパティを追加するなど)

それ以外にもソースの可読性をあげるために使われることもしばしばあります。

よくあるのが、プロトコルの実装をextensionで書くことです。

swift

1class ViewController { 2 // プロトコルに関係ない処理を記述する 3} 4 5extension ViewController: UITableViewDataSource { 6 // UITableViewDataSourceに関することだけを記述する 7}

正直なところextensionの意味合いとしては微妙かなと思いますが、

  • Swift本家のソースでも使われている
  • Xcodeでソース内の関数一覧などを出す部分と相性がいい(階層で出るため)
  • UITableViewDataSource型の定義にすぐに飛べる

という理由で使われがちです。

それだとfuncに記述しても同じことではないのかなと思います。

私もその意見ですが(コメントで// MARK: - Hogeなどと書いてプロトコルを実装しても結果的にほとんど一緒、定義に飛べないのが残念程度)、多くの人はそう思ってはおらず、可読性が上がると信じています。

投稿2019/02/25 08:51

takabosoft

総合スコア8356

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

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

kamekame0912

2019/02/25 09:14

ありがとうございます。分かりやすい説明で感謝です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問