Articles, podcasts and news about Swift development, by John Sundell.

Computed properties vs methods

Published on 06 Aug 2019

When picking between a computed property versus a method in Swift, I choose a property when:

extension TodoItem {
    // Returning information about an object/value's state in
    // constant time = property.
    var isCompleted: Bool {
        return state == .completed
    }

    // Returning a new value after applying a mutation = method.
    func completed() -> TodoItem {
        var item = self
        item.state = .completed
        return item
    }

    // Returning information, but in a way that's slower than
    // constant time (O(n), where N is the number of attachments
    // in this case) = method.
    func attachmentTags() -> Set<Tag> {
        return attachments.reduce([]) { tags, attachment in
            tags.union(attachment.tags)
        }
    }
}

Support Swift by Sundell by checking out this sponsor:

Raycast

Raycast: Take the macOS Spotlight experience to the next level: Create Jira issues, manage GitHub pull requests and control other tools with a few keystrokes. Easily automate every-day tasks and boost your developer productivity by downloading Raycast for free.