嘿,有经验的程序员!
我想问你一些关于干净代码的事情:)
我想保持我的代码干净并使其更好,所以这就是我的问题:
1)我应该把#imports放在哪里? 我的原则:(我不认为它们很好)
代表应该在.m
@interface ViewController() <UIAlertViewDelegate>
@end
2)我应该把我的实例变量放在哪里?
3)我应该把我的方法放在哪里?
(顺便说一下非常明显)
4)#define?
怎么样?5)我应该在哪里放置NSNotification全局标识符以及如何组织它们
但是......
一年前,我又遇到了另一种情况 - 一切都在.h,但我认为这也很糟糕
怎么办?你使用什么原则? 谢谢!
这是关于编码风格的问题,而不是关于如何使其可编辑的问题&#34;
答案 0 :(得分:5)
我是这样做的:
#import <Foundation/Foundation.h>
或#import <UIKit/UIKit.h>
会进入.pch文件。没有标题或实现文件再次执行这些导入(使iOS和Mac OS X之间的共享代码更容易一些)。@class Foo;
)以避免引入其他.h文件。@interface Foo ()
)中定义。在极少数情况下,类有一些类应该访问但是“普通”用户不应该访问的东西,我创建了foo_protected.h
标题,其类别类别定义了“受保护”方法。 / p>
关于#define
的一句话:尽可能避免使用它们。如果可能,请使用const
变量或enum
,因为附加类型信息可以帮助编译器以这种方式捕获更多错误。例如,使用enum
s具有很好的优势,如果您有switch
但未处理enum
的所有值,则会收到警告。如果你添加一个新值,你会在忘记处理它们的任何地方收到警告,这是#define
未得到的。
答案 1 :(得分:3)
就个人而言,我认为答案很简单。现在可以在@implementation
中声明实例变量,并且可以在 .m 文件的类扩展中声明属性和协议采用,我不会将 .h 文件中的任何,我绝不会将 放在那里。
答案 2 :(得分:2)
导入框架应始终位于.h
不,为什么?
导入.h文件应始终位于.m
这很模糊。如果你需要在头文件中导入一些东西怎么办?你想要一个类的子类,你做什么?标题中为#import "SomeClass.h"
。
.h文件应该只有@class,而不是导入(不包括UIKit之类的框架等)
愚笨。 (对不起,确实如此。请参阅上面的推理。)
2)我应该把我的实例变量放在哪里?
由于其他类实际上不应该访问ivars(即建议不要制作你的ivars public
),你可以将它们放在任何地方:标题很好(并且它对于与v1的兼容性很有用) .0脆弱的运行时API),但你也可以放弃在类扩展中放置所有东西。
3)我应该把我的方法放在哪里?
你有这个,非常好。
4)#define?
怎么样?
就我而言,这也很好。基本上,将定义和枚举放在需要显示的位置。
Apple在.h文件中有很多私有内容 在大多数情况下,我的.h文件只是..空的:)
嗯,即便是苹果公司的风格也不太一致。保持一致。
空标题?如果您不需要标题,请不要使用标题。使用标头为您的类,函数和类型声明提供接口。