在swift中定义辅助函数的最佳实践

时间:2017-04-19 17:13:19

标签: ios swift

我的ios项目中有一些辅助功能,如图像压缩功能。定义它们的最佳位置是什么(考虑记忆)?

  1. 作为类中的静态方法
  2. 在struct中的函数
  3. 没有任何课程的课程(课外)

3 个答案:

答案 0 :(得分:3)

这些方法都没有对记忆产生任何影响。无论如何,代码都链接到您的可执行文件中,并且不会影响对象的大小。你应该根据最干净的设计做出决定。

结构中的函数听起来像个坏主意,除非函数与托管结构有关。

静态类方法可以很好地用于要组合在一起的相关函数,假设它们与“托管”它们的类相关。这种方法还具有“命名空间”功能名称的优点,因此您可以避免命名冲突。 (正如其他人指出的那样,将方法类方法纯粹用于名称间距可能不是一个好主意。)

全局函数适用于真正具有全局范围的函数,并且不会自然地归入具有其他函数的组中,但是您需要注意命名它们以避免冲突。

答案 1 :(得分:0)

类/ struct / enum中的静态函数与全局函数之间的区别仅在于您必须在调用站点跳过的箍。例如:

class Foo {
    static func bar() { }
}

func foo_bar() { }

// call the first
Foo.bar()
// call the second
foo_bar()

IMHO类不是名称空间,不应该用作名称空间。这就是命名空间的用途。

答案 2 :(得分:0)

差异应该可以忽略不计。您也不应该将类用作命名空间。

尽管已经有完全有效的答案,但我发布了这个答案。我想强调的一点是,在实际遇到问题之前,你不应该对任何优化做太多的麻烦。以下是Donald Knuth的相关引文:

“程序员浪费了大量的时间来思考或担心程序中非关键部分的速度,而这些效率尝试实际上在考虑调试和维护时会产生很大的负面影响。我们应该忘记效率低下大约97%的时间说:过早的优化是所有邪恶的根源。然而,我们不应该在那个关键的3%中放弃我们的机会。“

虽然在你的情况下不太可能出现任何严重问题,无论你是这样做还是那样:)