objective-c – 使用.mm文件而不是.m是不是一个坏主意,以防以后我使用C?

栏目: Objective-C · 发布时间: 7年前

内容简介:这不是最糟糕的想法,但它也不是一个好主意.Objective-C的主要目的是充当需要使用C库的Objective-C代码的桥梁.因此,在大多数项目中,几乎所有的代码都是普通的Objective-C,可能有几个.mm文件来创建一个“包装”对象来与C库通信.因此,您极不可能需要将代码的重要部分从Objective-C更改为Objective-C.您的SCM历史记录中不应包含大量文件重命名.
假设我正在使用Apple最新的 Xcode

工具开发一个典型的Mac或iOS应用程序.进一步假设我主要使用Objective-C开发此应用程序,并利用Apple的Cocoa或Cocoa Touch框架中的所有相关API.

假设我目前没有计划在我的代码库中使用C或Objective-C,但我怀疑未来的某些时候我可能想在这里使用一些Objective-C.

所以我正在考虑将所有.m文件命名为.mm,以防万一. (这将在我的SCM系统中产生更清晰历史的理想效果,因为我以后不必重命名文件.)

这是一个坏主意吗?当文件实际上不包含任何Objective-C时,有没有理由使用.mm文件肯定或明显比使用.m文件更差?

据推测,这个文件扩展名翻转了编译器中的一些开关,然后编译器不仅需要解析ObjC的源代码,还需要解析C的源代码.这是否会对中到大代码库的构建时间产生显着的负面影响?

它是否有任何其他负面(或积极)影响我应该记住?

注意:请不要回答有关ObjC或C是否更好的任何评论.这不是这个问题的内容.

这不是最糟糕的想法,但它也不是一个好主意.

Objective-C的主要目的是充当需要使用C库的Objective-C代码的桥梁.因此,在大多数项目中,几乎所有的代码都是普通的Objective-C,可能有几个.mm文件来创建一个“包装”对象来与C库通信.

因此,您极不可能需要将代码的重要部分从Objective-C更改为Objective-C.您的SCM历史记录中不应包含大量文件重命名.

在任何地方使用Objective-C的主要问题是你将遵循“少走过的路”:你阅读的99%的教程和你使用和学习的开源代码都将由Obj-编写. C编译器.使用Obj-C编译器大致相同,并且可能在大多数情况下不会产生影响,但是最终会遇到一些问题,这是由于Obj-C的编译方式略有不同,但是当你发现它不会很明显,你会花费大量的时间来尝试诊断它,然后才意识到这是因为你使用的是经过较少测试的编译器设置.

如果您有很多C经验并且在代码中发现自己“需要”来自C的功能,那么您可能并不真正需要它们,您可能需要花费更多时间来确定如何在Objective-C中执行等效操作.在罗马做到入乡随俗.

一般来说,“以防万一”并不是偏离标准做法的好理由.你经常会花费很多精力去做一些你不需要的东西.

翻译自:https://stackoverflow.com/questions/11924325/is-it-a-bad-idea-to-use-mm-files-instead-of-m-just-in-case-i-use-c-later


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Software Design 中文版 01

Software Design 中文版 01

[日] 技术评论社 / 人民邮电出版社 / 2014-3 / 39.00

《Software Design》是日本主流的计算机技术读物,旨在帮助程序员更实时、深入地了解前沿技术,扩大视野,提升技能。内容涵盖多平台软件开发技巧、云技术应用、大数据分析、网络通信技术、深度互联时代下的移动开发、虚拟化、人工智能等最前沿实践性讲解。以人脑思维模式,激发计算机操控的无限可能;以软件开发技巧,挖掘系统与硬件的最大价值。 《Software Design 中文版 01》的主题为......一起来看看 《Software Design 中文版 01》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具