介绍:我是Nick O’Neill,今天我们要学习如何发现Swift模式。
设计模式总的来说,是编程中的一个组成部分,它可以解决一个非常具体的问题。应用正是由各种各样的这些模式所组成的。
一个简单的模式可以是这样的:通过一次点击,应用就进入下一屏。而复杂一些的模式则是那些你用来获取核心数据的东西。一名优秀的编程人员,就必须要知道哪种模式可以解决哪种问题。但是这些模式并不是静止不动的,尤其是当一种新的编程语言出现的时候,例如Swift,我们就要重新审视这些模式,看看这些模式能否被运用在新的语言中。
Swift中的模式
我写过一篇名叫《That Thing in Swift》的博客,那时我还是一名Objective-C开发人员。当Swift出现的时候,我就开始考虑这个问题,将Objective-C中的模式转移到Swift中。
静态单元格
这是一个基本的静态单元格视图。
Objective-C下的表达方式
if (indexPath.section == 0) {
if(indexPath.row == 0) {
cell.textLabel.text = @“Twitter”
} else if (indexPath.row == 1) {
cell.textLabel.text = @“Blog”
} else {
cell.textLabel.text = @“Contact Us”
}
} else {
if(indexPath.row == 0) {
cell.textLabel.text = @“nickoneill”
} else if (indexPath.row == 1) {
cell.textLabel.text = @“objctoswift”
} else {
cell.textLabel.text = @“@whyareyousodumb”
}
}
你需要不断的拆分这些段落和索引行,而且这段代码中有着大量的嵌套,看上去让人晕晕乎乎的,如果你在选择了这样的写法,那么在之后的编码过程中,你就要不断地复制这段代码。于是,代码的体积就会异常庞大,内容也会显得非常杂乱,编程人员肯定不会喜欢这样的事情。
Swift下的表达方式
let shortPath = (indexPath.section, indexPath.row)
switch shortPath {
case (0,0):
cell.textLabel.text = “Twitter”
case (0,1):
cell.textLabel.text = “Blog”
case (0,2):
cell.textLabel.text = “Contact Us”
case (1,0):
cell.textLabel.text = “@nickoneill”
case (1,1):
cell.textLabel.text = “@objctoswift”
case (1,2):
cell.textLabel.text = “@whyareyousodumb”
default:
cell.textLabel.text = “ ?\\_(θ)_/ ?”
}
而在Swift下,解决同样的问题,代码就会变成这样。代码变短了,也更清晰了,哪个编程人员不喜欢这样的代码?
所有的section都整齐的排列,你可以轻松的分辨section和row。如果你看到了枚举之外的语句,你也许应该考虑一下它对枚举会起到什么样的作用。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !