Tag: 合成

Swift中的可重用性和组成

尼采,梭罗和黑森最有可能试图逃避他们一生的一个概念:依赖性。 即使一个人不同意或拥护他们的哲学,程序员应该还是必须? -在编程时运用他们的思维方式。 让我们先定义问题: 耦合 想象一下,没有一部可以拆卸的汽车。 从座椅到车轮,从底盘到天窗都是一体的。 如果由于在高速公路上钉了一些讨厌的钉子而使轮胎漏气,我不能只买新轮胎,就需要买一辆新车。 因此,我们将此设计称为耦合设计,或者以一种更真诚,更礼貌的方式进行; 愚蠢的设计。 编程没有什么不同。 如果某个类或功能的更改需要我重构程序的许多其他部分,那么我已经设计了这款不可拆卸的汽车。 不酷 一点都不酷。 那么,当我们意识到我们的代码紧密耦合时,我们该怎么办? 我们花了片刻的沉默。 我们意识到我们编写了一些糟糕的代码,并宣誓不再这样做。 靠这些话活着: 封装 , 单一责任和继承构成 。 我将以一些简单的示例开始,这些示例说明了我们如何在程序中尊重这些概念,然后将其构建为相当(但不是真的)复杂的示例。 钢琴家或小提琴家 您的功能签名应严格执行其声称的功能; 不多一点。 让它成为钢琴家或小提琴家,而不是两者。 所以我有一个函数应该打印字符串中某些字符的数量: func printNumber(of char:Character,in string:String?)} 如果让string = string { var count = 0 对于字符串{中的s 如果s == char {count + = 1} } 打印(数) } } 此功能做不到预期的。 如果为空字符串,则不打印任何内容,而应打印“ 0”。 […]