安全(Safe):尽量减少开发人员的错误;迅速(Fast):快速执行;表现力(Expressive):因为Swift 的目标是尽可能清晰易懂。是什么让代码“Swifty”? —— Safe 解释了如何有选择地使用类型系统的方面和功能,以使我们的代码更易于理解和使用。
是什么让代码变得“Swifty”? —— Fast 解释了如何利用系统的一些内置方法来提高性能
Swifty 代码—— Expressive
清晰明确的命名(Clear, expressive naming)
最后让我们看看第三个关键字—— Expressive。虽然很容易将表达能力视为纯粹的装饰,并涉及摆弄方法名称,直到它们全部读成语法完美的英语句子,但最终它是为了让我们的代码清楚地传达其含义。
假设我们编写了一个当前名为getContent 的函数,该函数加载捆绑内容模型的数据,然后对其进行解码:
func getContent(name: String) -内容? {
守卫让url=Bundle.main.url(
对于Resource:名称,
withExtension: "json"
) 别的{
返回零
}
保护让数据=尝试?数据(contentsOf: url)其他{
返回零
}
返回试试? JSONDecoder().decode(Content.self,来自:数据)
}同样,乍一看,上述功能似乎非常好。没有明显的错误并完成工作。不过,在表现力方面,绝对可以提高。
首先,它的当前名称“get content”并没有真正告诉我们如何检索内容。
它只是创建为新实例吗?它是通过网络还是其他方式加载的?另外,如果出现错误,它只返回nil,这使得在发生任何故障时进行调试变得更加困难——,因为我们不知道到底出了什么问题。因此,我们首先将函数重命名为loadBundledContent(以明确我们正在从应用程序包加载内容),看看是否可以改进这些问题。我们还将给它一个外部参数标签,以使其阅读起来更好一些,最后,通过抛出它来报告遇到的任何错误,如下所示:
func loadBundledContent(named name: String) throws -Content {
守卫让url=Bundle.main.url(
对于Resource:名称,
withExtension: "json"
) 别的{
抛出Content.Error.missing
}
保护让数据=尝试?数据(contentsOf: url)其他{
抛出Content.Error.missing
}
做{
返回尝试JSONDecoder().decode(Content.self, from: data)
} 抓住{
抛出Content.Error.decodingFailed(错误)
}
有关上面抛出API 设计方式的更多信息,请查看Swift: 提供统一错误API。
变更前后的调用对比如下:
//前
让内容=getContent(name: "入门")
//后
let content=try loadBundledContent(named: "Onboarding") 重要的是不要过多依赖我们命名的函数和类型(毕竟,它通常取决于品味和偏好),但如果我们能找到一种更清晰地沟通的方法每个API 的做法,这是一个巨大的胜利——,因为它不仅使新开发人员更容易熟悉我们的代码库,而且通常还使我们的代码从长远来看使用起来更加愉快。
结语
在我看来,编写“Swifty”代码并不是要使用尽可能多的语言功能,或者通过部署Swift 最高级的功能来解决简单问题来使我们的代码变得不必要的复杂—— 而是要调整我们设计和表达代码的方式,并且它具有各种具有Swift 核心原则集的API。
通过利用标准库并通过富有表现力的命名和API 设计来传达代码的意图,使我们的代码使用Swift 的类型系统来确保正确性并使其功能更清晰,我们通常会得到更好的代码匹配。 Swift 本身,这不正是编写“Swifty 代码”的目的吗?
【揭秘“Swifty”代码的魅力:高效表达的力量】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
我一直在想为什么Swift感觉比其他语言更容易读懂!
有15位网友表示赞同!
这篇文章让我更了解了Swift中表达能力强的关键之处。
有7位网友表示赞同!
Expressive 这词真是太合适了,使用Swift写代码就像在用优雅的语言沟通一样。
有15位网友表示赞同!
真的想了解更多关于Swift如何通过简洁语法增强表达能力的内容!
有14位网友表示赞同!
我一直在学习Swift,这篇标题很有吸引力,希望能了解到更具体的例子。
有17位网友表示赞同!
我觉得Expressive 是Swift最大优点之一,可以让代码更易维护和理解。
有5位网友表示赞同!
我喜欢编程语言能像语言一样表达我们的想法,Swift做得很棒!
有8位网友表示赞同!
分享一下你最喜欢的Swift语句表达能力强的例子吧!
有19位网友表示赞同!
这篇文章让我对学习Swift更加期待了!
有6位网友表示赞同!
Expressive 能让代码更清晰易懂,这对新手编程者来说非常有帮助。
有12位网友表示赞同!
文章分析Swift的表达能力会是一个很好的入门指南。
有5位网友表示赞同!
我一直认为Swift语法简洁明了,这篇文章肯定能给我一些新的启发。
有13位网友表示赞同!
学习如何写更Expressive的代码是一件很有必要的事情!
有7位网友表示赞同!
我很想知道这个“Expressive”概念是多么具体,这篇帖子能给我答案吗?
有9位网友表示赞同!
一篇关于Swift表达能力的文章真是太棒了!期待深入了解。
有20位网友表示赞同!
我相信学习如何写出简洁、易懂的代码对于每一个程序员都很重要。
有14位网友表示赞同!
Swift的语法真的很有特色,能让编程变得更快乐!
有8位网友表示赞同!
用一句话描述你对Expressive Swift的想法吧!
有16位网友表示赞同!