快速提示:组织

井井有条的项目可以节省开发人员数小时的挫败感和生产力损失。 没有组织项目的行业标准,但是我喜欢遵循一些最佳实践。

项目组织

在考虑项目结构时,请将相关的想法归为一组。 例如,您可能希望将所有网络代码或Core Data代码保持在一起。 您可以根据各种架构组件(例如视图,视图控制器和数据源)来组织事物。 只要有适当的逻辑系统,它并不重要。 这使新开发人员的入职变得容易,现有开发人员也可以更轻松地找到所需的内容。

请记住,文件(基本上)是免费的。 有时将大致相关的类保存在文件中可能会很方便,尤其是在早期原型制作过程中,Swift使其非常容易做到。 但是,以我的经验来看,这会增加您在文件内时正在考虑的事情的数量,并可能导致混乱和混乱。 将大型构想(类,结构,一阶函数等)拆分为它们自己的文件,有助于在尝试了解文件实际包含的内容时降低认知负担。

文件组织

在给定的文件中,还有一些方便的技巧可以使事情井井有条。 Natasha机器人的精彩文章使用Swift扩展“错误”的方式涵盖了我偏爱的组织方式。

对于类,结构和枚举,我们可以使用Swift的扩展功能将相关功能分组在一起。 当遵循协议时,这特别有用,因为您得到的内容如下所示:

  扩展MyViewController:UICollectionViewDataSource { func numberOfSections(in collectionView:UICollectionView)-> Int {/ *…* /} func collectionView(_ collectionView:UICollectionView,numberOfItemsInSection部分:Int)-> Int {/ *…* /} func collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath)-> UICollectionViewCell {/ *…* /} //注意:还保留其他集合视图数据源帮助程序  
  //方法也在这里!  } 

您也可以使用此系统将私人助手或便利方法组合在一起。 使用扩展进行组织的最终目标是以可视化的方式并提高可读性的方式将大型的逻辑代码块组合在一起。

要使这些逻辑块更加引人注目,请在它们上方添加// MARK: — ,以便它们出现在跳转栏中。

专业提示:使用// MARK: — + 可以使更多的注意力集中在用于协议一致性的扩展上。 您还可以将这些代码段拖动到Xcode的“代码段”面板中,以使其调用就像在代码中键入mark一样简单。

常数

无论我们是在构建API客户端还是在配置视图控制器,优良作法都是将重要的配置信息保留为易于查找和更改的常量。 但是,常量可以快速堆积并污染名称空间:

  让APIConfigurationBaseURL =“…” 
  让APIConfigurationTimeout =… 
  让APIConfigurationEndptA =“…” 
  //等 

我们可以通过重新利用Swift的枚举功能来创建自己的名称空间来清理此问题:

  枚举APIConfiguration { 
    静态让baseURL =“…” 
    静态让endPtA =“…” 
    静态让超时=… 
    //等 
  } //调用为: 
  让_ = APIConfiguration.baseURL 

注意:很多人为此使用结构,但是无大小写枚举有一个关键优势:您无法创建无大小写枚举的实例。

养成组织项目的习惯,使它们干净整洁且一致,这将给与其他在项目上进行协作的人带来很大的不同。 有您喜欢的项目组织实践吗? 在下面的评论中告诉我们有关它们的信息,或在Twitter上与我们分享 。

加入下周一,我们将探索Swift的访问控制功能如何帮助您在应用程序中提供和隐藏信息。