参考:https://thatthinginswift.com/kill-your-viewdidload/

Inintialization Clusureを活用して、viewDidLoadの肥大化を防ぎ、わかりやすく書くことができそうです。
上の記事以上のことはないんですが笑、なるほどと思ったので、書き留めます。

古いやり方

自分が良くやりがちな書き方ですが、本記事では、「The old, bad way」と紹介されています。

class ViewController: UIViewController {
    let topView = UIView()

    override func viewDidLoad() {
        topView.frame = CGRect(0, 0, 100, 200)
        topView.backgroundColor = UIColor.redColor()
        view.addSubview(topView)
    }
}

ここで、topViewをViewController全体からアクセスできるようにするために、
Objective-C時代からのやり方では、topViewをViewControllerクラスのプロパティとして持ち、UIViewを初期化をしています。

こういったことがいくつも行われることで、viewDidLoadの見通しがだんだん悪くなってきます。

class ViewController: UIViewController {
    let topView = UIView()
    let imageView = UIImageView()
    let goButton = UIButton()

    override func viewDidLoad() {
        topView.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
        topView.backgroundColor = UIColor.redColor()
        view.addSubview(topView)

        imageView.image = UIImage(named: "profile")
        topView.addSubview(imageView)

        goButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
        goButton.setTitle("GO!", forState: .Normal)
        view.addSubview(goButton)
    }
}

Initialization Closureを活用した書き方

Initialization Closureを活用すると、プロパティの初期化の際にviewのデフォルト値の生成を行うことができます。

class ViewController: UIViewController {
    let topView: UIView = {
        let view = UIView()
        view.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
        view.backgroundColor = UIColor.redColor()
        return view
    }()

    let imageView: UIImageView = {
        let imageView = UIImageView()
        imageView.image = UIImage(named: "profile")
        return imageView
    }()

    let goButton: UIButton = {
        let button = UIButton()
        button.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
        button.setTitle("GO!", forState: .Normal)
        return button
    }()

    override func viewDidLoad() {
        view.addSubview(topView)
        topView.addSubview(imageView)
        view.addSubview(goButton)
    }
}

これによって、viewの設定をviewDidLoadの外に切り出すことができ、見通しが随分良くなりました。
これは是非使っていこうと思います。

終わりに

Initilization Closureというものをそもそも初めて知ったので、それについてももう少し深く調べてみようと思います。