自从你开始使用Cocoa进行编码后,你开发的那些坏习惯是什么?
我认为制定一个坏习惯列表并积极地添加它,更重要的是,打破这些习惯是产生代码质量的好方法.所以从现在开始,让你的坏习惯脱离你的胸膛.也许其他人分享你的坏习惯.
传递NULL
给需要的论点NSError**
,纯粹的懒惰.
没有足够的单元测试.如果没有单元测试,那么清理和重构代码真的很困难.没有不断的重构和清理,代码腐烂开始进入并传播.
使用单例模式共享对象,例如+ [MyObject defaultObject].这本质上是一个全局变量,它可以产生一些很好的隐藏依赖关系和耦合.反过来,这会使代码更难以测试.
(和其他非特殊情况.)
由于异常的使用在这里得到了另一个答案,并且评论中提到的文档并没有特别强调这一点,因此值得强调的是,异常不应该用于正常的控制流程(在一些其他环境中很常见).可可的例外情况相对非常昂贵.如果要传达错误,请使用Cocoa提供的NSError
对象和错误处理体系结构.不要抛出异常.
这是我的一些:
投掷异常而不试图抓住他们.我开始越来越多地依赖NSError来防止NSExceptions在John Woo电影中像子弹一样飞行,但我仍然有很多特殊的代码.
写一个快速课程来做X,Y和Z然后忘记在dealloc中清理.泄漏啊!
直接在各个地方使用字符串(KVO)而不是定义常量并使用它(有关更多信息,请参阅Dave Dribin 关于KVO 的优秀博客文章)
我对在类中使用访问器感到懒惰.通常,最大的问题是我无法轻易地快速了解变量的范围.然后我上周花了几个小时来调试因使用而导致的内存损坏问题
self.displayName = name
在某些地方和
displayName = name
在其他人.当我发现它并且我的应用程序停止崩溃时,我很高兴.我不是很高兴我浪费了几个小时寻找这样一个可以避免的错误.
我经常使用#defines,我应该使用const声明.
另外,我可能会在我转发的NSNotifications中过于多产; 脱钩运行!
坏习惯:保持我的Java心态.
我的Java背景导致我甚至在考虑使用变量做任何事情之前都要经常检查null,当我可以利用Objective-C的能力向nil发送消息时.(参见:"发送消息为零?")
我必须提醒自己,Objective-C允许我简单地编写优雅地使用返回值0或nil的代码,而不是尝试先发制人地获取nil.