学习最佳编码实践的开源iOS项目

8
我有一些iOS开发经验(更多的是Java背景),最近开始阅读《代码整洁之道》。我注意到在我的iOS项目中,我存在很多反模式。
2个最受欢迎的建议我没有正确遵循:小方法小类。然后我在GitHub上进行了一些小研究,但是我没有找到可以用作“代码整洁之道”示例/参考的项目。
在大多数情况下,ViewControllers有数十种方法,并且它们具有巨大的方法,比如loadView,我们在其中以编程方式构建视图层次结构。
例如来自Facebook的示例应用程序wishlist-mobile-sampleHomeViewController类中有1431行代码,而其loadView有170+行代码。
您是否有推荐作为真正优秀的编码示例的项目链接呢?
5个回答

3
我敢质疑,将所有类控制在100行以内的编程实践并不是最好的做法...这取决于你用它做什么,以及拥有一个真正干净、通用的类对你的重要性。我知道一些代码片段,在一个类中有数百行比拥挤的类和数百个微小的类更易于阅读...很多项目都有更大的类,这可能有原因。
而且,您是否真的认为如果一个函数的语句是“一个函数应该最多具有100行代码”,那么拥有130行的函数就已经算是糟糕的编码了吗?!
顺便说一下:Apple的UICatalog类中的viewDidLoad函数有42行代码-其余部分是空格和注释-我宁愿不要将其从您的代码中省略,以便保持在100行以下 :-)

我们在这里谈论的是语句“函数应该最多有20行代码”,以及拥有数百行代码的函数。你的例子只有0.3倍的差异,在我描述的情况下,差异大约是10-20倍。 - OgreSwamp
好的,看看我的补充 - 苹果示例的真实代码有42行。Objective C不是最节省空间的语言,你必须引入大量的空格来保持可读性,特别是在使用命名参数时... - TheEye
我明白你的意思。无论如何,我正在寻找接近理想的代码示例 :) 它具有易于阅读的小函数。很抱歉,但我需要滚动几次屏幕才能阅读整个方法。而且这个示例没有复杂的视图结构。使用问题正文中的 Facebook 示例链接,你就会知道我在说什么。 - OgreSwamp
我正在寻找这样的示例,不是为了学习Objective-C,而是为了学习如何编写更好的代码。我的当前代码与Apple示例相差不远,但我想进步一点 :) - OgreSwamp


1

不要忘记,苹果发布的示例的目的并不是为了展示代码中始终遵循最佳实践,而是为了说明特定的项目。当你试图演示如何进行异步网络调用时,为什么要把一个init方法分解成许多小块(这将需要时间)。

在编写代码时,如果适合你所做的事情,适当注释且不重复,编写大型方法或大型类并没有任何问题。也许这就是你必须做的。

作为一个经验法则,在编写代码时,只需考虑你想要做的所有事情,并思考是否可以将其分解成较小的块。想象一下,如果正在执行你编写代码所要做的任何任务,思考一下会如何处理。

例如,你可能想编写一个初始化显示的方法。因此,你可以编写一个将完成所有操作的巨大方法。或者,你可以将其分解成

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

同样地,在initButtons中,你可能会发现你重复编写相同的代码来创建和初始化按钮,但实际上唯一改变的是按钮的位置和触摸时调用的选择器。因此,你可以将其重构出来。
button1 = [self createButton:position callback:selector];
button2 = [self createButton:position2 callback:selector2];

在编写代码时,采用迭代方法。先写代码,一旦你有一个功能可用,就停下来回过头来看看你的代码,看看哪些地方可以因式分解,哪些地方有重复的代码,等等。使用XCode中的重构工具。

发展自己的风格。随着时间的推移和编写和重构的代码越多,你会更容易地看到如何在开始时将事物分割开来。当我想起20年前写的一些代码时,我希望它已经被销毁,永远不会再被编译器看到。我曾经参与过由“专业”开发人员编写的项目,其中有一些方法非常庞大。例如,最近我看到了一个500行(!)的代码。而且很少有注释。

记住,拥有许多做非常少的小方法以及大量的类(即使它们是小类)也可能是反模式。


1

苹果的示例代码是学习清晰代码的最佳来源,开源项目无法与之匹敌。


-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接