概要
Swiftアプリ開発における個人的な開発ルールです。
追加があったら付け足していきます。
『自分はこんなルールでやってるよ!』とコメントしてくれると喜びます。
フォルダ分け
project | |||
---|---|---|---|
UI | Storyboadを置く | ||
VC | ViewControllerを置く Storyboadに対して複数ある場合は階層を増やす |
||
Common | BaseViewControllerなどのBaseクラスを置く | ||
Model | Viewと分離したModelクラス | ||
Common | 共通系のクラスを置く(比較的自由) | ||
Const.swift | 定数のみをまとめるクラス | ||
Library | 外部ライブラリを置く | ||
Supporting Files | 画像やInfo.plistなどを置く |
ViewController、Storyboad、NotificationNameなどはConstで管理する
クラス内リージョン規約
// MARK: IBOoutlet
// MARK: 変数
// MARK: 定数
// MARK: View Lifecycle
// MARK: プロパティ
// MARK: 内部メソッド
// MARK: 公開メソッド
// MARK: IBActions
// MARK: UITableViewDelegate
上記の順番で記述していく(ショートカット:control+6)
書き方については以下の記事を参照。見やすいように工夫する。
Swiftでクラスのアウトライン表示(区切り線やTODO) - Qiita
コーディング規約
コーディング
下記を遵守
Swiftコーディング規約@Wantedly - Qiita
変数名命名規則
IBOoutletやIBActionについて
// connectを貼ったパーツ名を最後に付ける
@IBOutlet weak var testLabel: UILabel!
// Actionについても何のアクションか最後に付ける
@IBAction func testButtonAction(sender: AnyObject) {
}
ドキュメンテーションコメント
VVDocumenter-Xcodeを利用
Lifecycleやdelegateメソッドについては記述するかは任意だが、自作したメソッドには必ず使用する
StoryboadとViewControllerの関係
Storyboadで記述できるところは全てStoryboadで設定する
Storyboadは長くなりすぎず、機能単位で依存する関係のみを1ファイルにまとめる
Top - StoreList - StoreDetail
- SettingTop - SettingEdit
このようなStoryboadがあった場合は
Top
StoreList - StoreDetail
SettingTop - SettingEdit
のように3つに分ける
UITableViewとUITableViewCell(Navigation)
一つのViewController内でTableViewを作成し、カスタムセルクラスを作った時はそのViewController内の上部に書く
またNavigationControllerのクラスは起点となるViewContollerファイルの上部に記述する
import UIKit
class TestNavigationController: UINavigationController {
}
class TestTableViewCell: UITableViewCell {
@IBOutlet weak var testLabel: UILabel!
}
class TestViewController: BaseViewController, UITableViewDataSource, UITableViewDelegate {
// MARK: IBOoutlet
@IBOutlet weak var testTableView: UITableView!