我看到蘋果公司創建一個示例應用程序的代碼段:使用MIN MAX而不是通過普通代碼檢查範圍,在速度方面是否有優勢?
- (AVCaptureWhiteBalanceGains)normalizedGains:(AVCaptureWhiteBalanceGains)gains
{
AVCaptureWhiteBalanceGains g = gains;
g.redGain = MAX(1.0, g.redGain);
g.greenGain = MAX(1.0, g.greenGain);
g.blueGain = MAX(1.0, g.blueGain);
g.redGain = MIN(self.videoDevice.maxWhiteBalanceGain, g.redGain);
g.greenGain = MIN(self.videoDevice.maxWhiteBalanceGain, g.greenGain);
g.blueGain = MIN(self.videoDevice.maxWhiteBalanceGain, g.blueGain);
return g;
}
蘋果正在檢查的紅色,綠色和藍色的增益值,以防止趴在有效範圍之外的值。好吧,我知道MIN MAX是做什麼的,但是真的有必要像這樣寫嗎?這種代碼讓你的大腦燃燒微秒,因爲很難理解,如果你以前從來沒有見過這種代碼,那麼一眼就能看出來。
而不是寫一個函數來更容易檢查?像:
- (CGFloat) checkValue:(CGFloat)v againstMinimum:(CGFloat)min andMaximum:(CGFloat)max {
if (v < min) return min;
if (v > max) return max;
return v;
}
或者寫一個靜態塊裏面的功能,如果他們不想要的代碼的功能以外的業務。
我的問題是:通過使用一種方法或其他方法有速度增益嗎?
你已經使用了'NS_INLINE'而不是僅僅使用'inline' ...爲什麼是這樣? – SpaceDog
查找'NS_INLINE'的定義,你會看到它擴展爲內聯屬性和'static',它們停止將函數名添加到全局名稱空間。這只是Apple定義的一個方便的宏。 – CRD