当前位置: 首页 > 科技观察

8次尝试,带你走进iOS精益编程

时间:2023-03-11 22:07:34 科技观察

开篇今天,我们就从一个小功能开始,不假思索的实现它。ProductRepository:FilteringOperationCodestart有一个productlibrary,我们需要对其进行过滤操作。第一个要求并不复杂。需求1:找到仓库中的所有红色产品第一次尝试:硬编码我们先用最简单的方式来实现,硬编码-(NSArray*)findAllRedProducts:(NSArray*)products{NSMutableArray*list=[@[]mutableCopy];for(Product*productinproducts){if(product.color==RED){[listaddObject:product];}}returnlist;}如果这个世界永远是静止的,这样的实现没有错,但是这个世界往往不像这。紧接着,第二个要求来了。需求2:找到仓库中所有的绿色产品。第二次尝试:参数化复制粘贴是大多数程序员最常犯的错误,为此引入了大量重复代码。-(NSArray*)findAllGreenProducts:(NSArray*)products{NSMutableArray*list=[@[]mutableCopy];for(Product*productinproducts){if(product.color==GREEN){[listaddObject:product];}}返回列表;}为了消除硬编码并获得可重用的代码,可以引入简单的参数化设计。-(NSArray*)findProducts:(NSArray*)productsbyColor:(ProductColor)color{NSMutableArray*list=[@[]mutableCopy];for(Product*productinproducts){if(product.color==color){[listaddObject:产品];}}returnlist;}终于可以放心了。这个时候我们的产品经理怎么能让你舒服呢?需求3又来了。需求三:找出所有重量小于10的产品第三次尝试:用你能想到的每一个属性参数化大多数程序员仍然会使用Copy-Paste来解决这个问题,拒绝Copy-Paste的坏习惯。最有效的反馈之一是禁用此快捷键,这样您就可以在每次尝试复制粘贴好的设计时提醒自己进行更改-(NSArray*)findProducts:(NSArray*)productsbyWeith:(float)weight{NSMutableArray*list=[@[]mutableCopy];for(Product*productinproducts){if(product.weight10"]];今天的coding到此结束,本文由HoranceWrite原创,作者将再次使用OC实现。如果我们不是iOSDeveloper,还有其他的尝试,比如泛型。