DEV Community

noah.k
noah.k

Posted on

Swift Minimal Coding Rules

For whom is this?

  • Entry level developers (or who works with them)
  • Wants to code quickly but keep the minimum code quality
  • Already introduced SwiftFormat and SwiftLint

You can find various coding rules, but many of them are long and might be overwhelming. This rule is simple enought to quickly start, easy to understand even for beginners.

Rules

Use Understandable Names

Naming is one of the most important points in code.
Take your time to think of naming.

Segregate Classes from View Controllers

Don't put code unrelated to view into view controllers.
Don't put code unrelated to app status into AppDelegate.
Conform to Single Responsibility Principle.

Separate Storyboards and View Controllers

In team development, you should avoid conflict.

Put Common Code into Protocols

Don't Repeat Yourself.
Adopt Protocol Oriented Programming.
https://dev.to/noahkuwae/protocol-oriented-programming-pop-brief-summary-4i5b

Put Common UI Parts into Xibs

Again, Don't Repeat Yourself.

Conform to Cocoa MVC

This should be determined in each team, but MVC is basic and the most understandble architecture.

Separate Classes (or Structs) by Extensions for each Protocol

This increases readability of the code.

Before:

class SampleViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { ... }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { ... }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { ... }
...
}
Enter fullscreen mode Exit fullscreen mode

After:

class SampleViewController: UIViewController { ... }

extension SampleViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { ... }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { ... }
}

extension SampleViewController: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { ... }
}
Enter fullscreen mode Exit fullscreen mode

Handle Errors

If you don't handle them now, add some comment like // TODO.

Use assert or fatalError for Unexpected Cases

If you merely use return, you'll have difficulty in fixing it later.

Split Your Code into Methods

If you want to write a comment for a chunk of code, it's a sign for creating a method.

Reference

15 Rules for Writing Quality Code | | InformIT

Note

This is subject to change, because currently I'm running a project using this rule (in 2019).
Some update might occur during the project.

Top comments (0)