Xcode项目名称中是否应该包含空格,最佳实践是什么?

10
我正在创建一个新的Xcode项目,它的名字中有一个空格,比如"Foo Bar"。我倾向于将其命名为"Foo Bar",因为这是应用程序实际上出现在顶部菜单、文件系统("Foo Bar.app")、命令-Tab等位置的名称。但是,这样会得到一些奇怪的文件夹和目标,比如"Foo BarTest"。
这里有什么最佳做法呢?
3个回答

7
我在开发过程中会使用一个单词的驼峰命名,比如 "FooBar",用于文件名、路径等。对我来说,这样可以让我的生活变得更加轻松,因为有时需要编写shell脚本之类的东西,不需要担心内部空格。确实,在空格方面,“make”工具会出现严重的问题……

但是,实际上,我并没有看到缺点:无论如何,我的FooBar.app的名称都将被本地化,无论是英语还是其他任何语言,在Finder中,应用程序看起来像“Foo Bar”,在“关于”菜单中也是如此。

所以,在我的所有编码中都是FooBar,在用户处到处都是Foo Bar。


如何本地化应用程序的名称:

从新创建的Xcode Cocoa应用程序“FooBar”开始。最初,所有地方都是“FooBar”:Xcode变量${PRODUCT_NAME}和${EXECUTABLE_NAME},以及您在Finder中构建的应用程序的名称。

现在,我们只想要更改出现在Finder中的名称。
正确地说,这不多不少仅仅是本地化。

在应用程序的Info.plist文件中,添加键“CFBundleDisplayName”,并使其值与已存在的键“CFBundleName”的值相同。

CFBundleName的初始值为“${PRODUCT_NAME}”,一个Xcode变量,您可以将其复制并粘贴。或者,您可以将这些键中的每一个硬编码到某个文本字符串中,但是如果您这样做,则还必须更新应用程序“Build Settings”窗格中的“Product Name”值。

然后,您需要进行实际的本地化。

如果尚不存在(可能已经存在),请创建并将“InfoPlist.strings”本地化文件添加到项目中,即(假设英语是“主”语言)位于并复制到应用程序的资源文件夹中的子文件夹“en.lproj”中的文件。

在此文件中,按照以下格式添加与Info.plist文件中出现的两个键相同的内容,并将它们赋予您希望应用程序在Finder中显示的值:

/* Localized versions of Info.plist keys */
CFBundleName        = "Foo & Bar";
CFBundleDisplayName = "Foo & Bar";

完成了!现在从UNIX的角度来看,该应用程序是“FooBar.app”,但在Finder中,它显示为“Foo&Bar”。


我可能在这里漏掉了什么,为什么捆绑包可以被称为FooBar.app并在Finder中显示为Foo Bar? - pupeno
请确认一下,你的 CFBundleName 中使用的是 "Foo Bar" 而不是 "$(PRODUCT_NAME)"? - pupeno
另外,如果有人打开/Applications目录,他们会看到Foo Bar还是FooBar.app? - pupeno
我将Foo Bar设置为CFBundleName和CFBundleDisplayName,但文件显示为FooBar.app而不是Foo Bar.app(是的,我知道.app取决于Finder首选项,我只是用它来清楚地表达我的意思)。最终我做的是将PRODUCT_NAME设置为Foo Bar,将PRODUCT_MODULE_NAME设置为FooBar,并使bundle和其他标识符依赖于模块名称而不是产品名称。这似乎比Xcode的默认设置更健康。 - pupeno
Pablo,我在回答你的后续问题时搞砸了。自那以后,我查看、测试、记忆和测试过了...我之前说的部分话是颠倒的。我将保证的、经过尝试和测试的方法作为对你第一个问题的回答进行了编辑。希望有所帮助。 - zeppenwolf

4

我停止在我的Xcode项目名称中使用空格。

有些情况(*)需要将你的模块导入到单元测试模块中,因此在Swift中,你最终会写成:

import Foo Bar

在你的Foo BarTest模块中,有些东西是Swift编译器不喜欢的。
(*) 当你使用核心数据并且想在单元测试中使用你的核心数据模型和类时,至少需要这样做。

1
如果项目名称中有空格,则在模块名称中使用下划线。例如,Foo_Bar。 - Geoff Hom

0
唯一的“最佳实践”是使用常识来命名您的项目。最好将项目名称与它将生成的应用程序名称匹配,或者反之亦然。
我更喜欢单词名称 - 尤其是短的名称,特别是对于CLI相关项目。显然这里不是这种情况,所以请根据您的需要进行命名。

问题是关于Xcode项目名称,而不是应用程序的名称。 - Nikolai Ruhe
通常来说它是等同的。你为什么要给你的项目起一个不同于所生成应用程序的名称呢? - l'L'l
这正是OP所问的。@zeppenwolf有一个例子,但有更多原因导致名称不同。 - Nikolai Ruhe

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