Ios 关于.h和.m文件(如何管理)
嘿,有经验的程序员 我想问你一些关于干净代码的问题:) 我想保持我的代码整洁,让它变得漂亮,所以这就是我的问题: 1) 我应该把进口商品放在哪里? 我的原则:(我不认为它们是好的)Ios 关于.h和.m文件(如何管理),ios,objective-c,Ios,Objective C,嘿,有经验的程序员 我想问你一些关于干净代码的问题:) 我想保持我的代码整洁,让它变得漂亮,所以这就是我的问题: 1) 我应该把进口商品放在哪里? 我的原则:(我不认为它们是好的) #导入框架应始终位于.h中 #导入.h文件应始终使用.m格式 .h文件应该只有@class,而不是imports(不包括UIKit等框架) 代表应在.m @interface ViewController() <UIAlertViewDelegate> @end @interface ViewCon
- #导入框架应始终位于.h中
- #导入.h文件应始终使用.m格式
- .h文件应该只有@class,而不是imports(不包括UIKit等框架)
- 代表应在.m
@interface ViewController() <UIAlertViewDelegate> @end
@interface ViewController() @结束
- 私有变量和受保护变量必须以.m为单位
- 公共必须在
- 公共图书馆
- 私家车 (是的,我知道我的“私有方法”不是真正私有的,只是隐藏的)
- 全局-始终在.h中
- 仅在该类中使用-始终在.m中
- #在将发送此通知的类的.h文件中定义NSNotificationDataSourceDidLoadData@“NSNotificationDataSourceDidLoadData”
- 苹果在.h文件中有很多私人物品
- 在大多数情况下,我的.h文件只是。。空:)
这是关于编码风格的问题,而不是“如何使其可编译”就个人而言,我认为答案相当简单。现在实例变量可以在
@实现中声明,属性和协议采用可以在.m文件的类扩展中声明,我不需要在.h文件中放任何我不需要放在那里的东西。我个人认为答案很简单。既然实例变量可以在@实现中声明,属性和协议采用可以在.m文件的类扩展中声明,我就不必在.h文件中放任何我不必放在那里的东西了。我是这样做的:
- 通常的
#import
或#import
进入.pch文件。没有头文件或实现文件再次执行这些导入(使iOS和Mac OS X之间的代码共享变得稍微容易)
- 在.h文件中:
- 其他.h文件仅在绝对必要时才导入,例如,因为它们定义了类以外的类型(枚举、结构、所有带有typedef的类型),然后在当前.h文件中使用这些类型
- 类是向前声明的(
@class Foo;
),以避免拉入其他.h文件
- 接口只包含其他类可以访问的内容!这里没有私人物品李>
- 在.m文件中:
- 包括您需要的所有.h文件。但不是更多;-)李>
- 私有实例变量和属性在类扩展(
@interface Foo()
)中定义
- 私有方法不再需要“前向声明”,所以不要这样做
在极少数情况下,一个类有一些东西是少数类应该访问的,而“普通”用户不应该访问的,我创建了foo\u protected.h
头,其中包含一个类类别,定义了“protected”方法
关于#定义s的一个词:如果可能,避免使用它们。如果可能,请使用const
变量或enum
s,因为附加的类型信息可以帮助编译器以这种方式捕获更多错误。例如,使用enum
s有一个很好的优点,即如果您有一个开关
,但没有处理enum
的所有值,就会收到警告。如果您添加一个新值,您将在忘记处理它们的任何地方收到警告,这是使用#define
s无法得到的。我是这样做的:
- 通常的
#import
或#import
进入.pch文件。没有头文件或实现文件再次执行这些导入(使iOS和Mac OS X之间的代码共享变得稍微容易)
- 在.h文件中:
- 其他.h文件仅在绝对必要时才导入,例如,因为它们定义了类以外的类型(枚举、结构、所有带有typedef的类型),然后在当前.h文件中使用这些类型
- 类是向前声明的(
@class Foo;
),以避免拉入其他.h文件
- 接口只包含其他类可以访问的内容!这里没有私人物品李>
- 在.m文件中:
- 包括您需要的所有.h文件。但不是更多;-)李>
- 私有实例变量和属性在类扩展(
@interface Foo()
)中定义
- 私有方法不再需要“前向声明”,所以不要这样做
在极少数情况下,一个类有一些东西是少数类应该访问的,而“普通”用户不应该访问的,我创建了foo\u protected.h
头,其中包含一个类类别,定义了“protected”方法
关于#定义s的一个词:如果可能,避免使用它们。如果可能,请使用const
变量或enum
s,因为附加的类型信息可以帮助编译器以这种方式捕获更多错误。例如,使用enum
s有一个很好的优点,即如果您有一个开关
,但没有处理enum
的所有值,就会收到警告。如果您添加一个新值,您将在忘记处理它们的任何地方收到警告,这是使用\define
s无法得到的
导入框架应始终位于.h中
不,为什么
导入.h文件应始终使用.m格式
这很模糊。如果你不知道怎么办