【问题标题】:Open Source iOS projects for learning best coding practices [closed]用于学习最佳编码实践的开源 iOS 项目 [关闭]
【发布时间】:2012-03-06 14:48:58
【问题描述】:

我有一些 iOS 开发经验(更多 Java 背景),最近我开始阅读“清洁代码”。

我注意到在我的 iOS 项目中我有很多反模式。

我没有正确遵循的 2 条最受欢迎的建议:小方法小类。 然后我在 GitHub 上做了一些小研究,但没有找到可以用作“清洁代码”示例/参考的项目。

在大多数情况下,ViewControllers 有几十个方法,而且它们有大量的方法,比如loadView,我们以编程方式构建视图层次结构。

例如来自 Facebook 的示例应用程序 wishlist-mobile-sampleHomeViewControllerclass 中有 1431 行代码,而其 loadView 有 170+ 行代码。

您是否有指向您推荐的项目的链接作为一个非常好的编码示例?

【问题讨论】:

    标签: iphone objective-c ios ipad coding-style


    【解决方案1】:

    我敢争辩说,让所有类都小于 100 行代码确实是一种最佳编码实践……这完全取决于你使用它的目的,以及让类真正干净和通用的重要性。我知道有相当多的代码在一个类中使用数百行代码比使用超迷你类的类杂乱代码更容易阅读,但是却有数百个类......这可能是许多项目有更大类的原因。

    你真的认为如果语句是“一个函数应该有最多 100 行代码”,那么一个有 130 行代码的函数就已经符合糟糕的编码条件了吗?!?

    顺便说一句: Apple 的 UICatalog 类中的 viewDidLoad 函数有 42 行代码 - 其余的是空格和 cmets - 我宁愿不要将它们从您的代码中删除为了保持在 100 行以下:-)

    【讨论】:

    • 我们在这里讨论的更多是关于“函数最多应该有 20 行代码”的语句以及包含数百行代码的函数。你的例子是 0.3 倍的差异,如果我描述的差异大约是 10-20 倍。
    • 好吧,看看我的补充 - Apple 示例的实际代码是 42 行。 Objective C 不是最节省空间的语言,您必须引入大量空格以保持可读性,尤其是使用命名参数...
    • 我明白你的意思。无论如何,我正在寻找接近理想的代码示例:) 它具有您可以轻松阅读的小功能。对不起,我需要滚动这个屏幕几次才能阅读整个方法。而且这个例子没有复杂的视图结构。在问题正文中使用 facebook 的示例链接,您就会明白我在说什么。
    • 我寻找这样的例子不是为了学习 Objective-C 的目的,而是为了学习如何编写更好的代码。我当前的代码与 Apple 示例相距不远,但我想再进步一点 :)
    【解决方案2】:
    【解决方案3】:

    Apple 示例代码是学习干净代码的最佳来源。 开源项目无法超越..

    【讨论】:

      【解决方案4】:

      不要忘记,Apple 发布示例的目的并不是在整个代码中展示最佳实践,而是为了说明具体项目。当您尝试演示如何进行异步网络调用时,何必费心将 init 方法分解成许多更小的块(这需要时间)。

      在编写代码时,编写大型方法或大型类没有任何问题,只要它们适合您正在做的事情、正确注释并且不重复任何内容。可能这正是你必须做的。

      根据经验,在编写代码时,只需考虑您要尝试做的所有事情,并考虑是否可以将其分解为更小的块。想想是否必须做你正在编写的代码要做的任何事情,并考虑将如何处理该任务。

      例如,您可能想要编写一个初始化显示的方法。所以,你可以编写一个巨大的方法来完成所有的事情。或者,您可以将其分解为

      [self initButtons];
      [self initTextEntry];
      [self initLabels];
      

      同样,在 initButtons 中,您可能会发现您再次编写相同的代码来创建和初始化按钮,结果发现唯一改变的是按钮的位置和它们在触摸时调用的选择器.所以你可以重构它

      button1 = [self createButton:position callback:selector];
      button2 = [self createButton:position2 callback:selector2];
      

      只需对您正在编写的内容采取迭代方法。编写代码。一旦你有一个功能工作,停止并返回并检查你的代码,看看你可以在哪里分解项目,你在哪里有你已经多次放入的通用代码,等等。使用 XCode 中的重构工具。

      发展自己的风格。它会随着时间的推移而出现,你编写和重构的代码越多,你就会越容易在一开始就看到事情是如何被拆分的。当我想起我 20 年前写的一些代码时,我希望它已经被销毁,再也不会被编译器看到。我从事过由“专业”开发人员编写的项目,并且有很多方法。例如,我最近看到一个 500 (!) 行代码长。并且很少有 cmets。

      请记住,将大量的小方法与大量的类(即使它们是小类)结合起来,也可能是一种反模式。

      【讨论】:

        【解决方案5】:

        facebook 的 3-20 框架结构非常整齐。

        http://three20.info/

        源代码: https://github.com/facebook/three20/tree/master/src

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-22
          • 2010-12-02
          • 2010-10-08
          • 2010-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多