我进行过很多代码审查,其中有7种最常见的代码问题。

被注释掉的代码

这让我觉得你没有学会如何使用版本控制工具和标记功能。如果这些旧代码已经不再有用了,我干嘛还需要读它!?

如果它很重要,将来你可能会需要返回来查看它。那么你可以在版本控制工具中给它添加一个适当的标记,然后把它从当前代码中移除掉。

无用的注释

那些没有任何价值的注释,那些明摆着是显而易见的注释,或者对部分代码做的注释,都应该放进方法里面。

记住: 注释很快就会过时的,并且人们不会维护它。

空方法

一个只调用super的方法被认为是一个空方法。把它移除掉。

文件太长

一个代码超过400行的文件你如何读的下去?眼睛看着都难受啊,请用组合(composition)、分类(categories)或其他方式来组织你的代码。

每当我发现一个文件的代码行数过长,我的第一印象都会假定它破坏了单一职责原则(SRP,Single Responsibility Principle),除非证明并非如此。

不可变的对象属性用错了修饰符

如果你有一个不可变的对象属性,并且它有一个可变的副本,请用copy。否则,如果有人给你这个不可变的属性赋值了一个可变的副本,并且修改了这个副本,那么你最终不得不面对这种烦人的bug。

记住: 如果你对像NSString这样的不可变的对象调用copy,实际上它只会retain它,不会有性能损失。

不关心结果

如果你调用我的API但是不传递容差处理(errorHandler)相关的方法,我会让你付出沉重的代价(崩溃)。有些情况下我也会对完成结果的回调(completion results)做相同的处理。

记住: 当你设计API的时候,如果不允许使用者在不关心结果的情况下调用某些消耗很大的方法,那么你的用户会很感激你给他们减少了电量消耗。

没有断言或有效性验证

为你的假设加上断言,用断言来强制执行API的正确使用方法或者以确保你的假设通过了实际的验证。如果不是,你可以很快的知道。

如果你还发现了其他常见的问题,欢迎给我发个推特

译自:7种常见的代码问题