就良好的Objective-C編碼實踐而言,如果我創建一個沒有狀態的函數,最好是將它作爲某個類的靜態方法編寫,或者作爲C函數?無狀態靜態方法與Objective-C中的C函數的比較Objective-C
例如,我有一個特殊的文件路徑檢索方法,在繼續執行主要NSBundle之前檢查Caches目錄。我現在把它作爲一個靜態的方法在一個空的Utils類下面。這應該是一個C函數嗎?
我選擇使用靜態方法(現在)的原因是a)它與Objective-C語法一致,b)類有助於對方法進行分類。然而,我覺得自己在欺騙一點點,因爲我可以用這些無狀態的靜態方法輕鬆地填充我的Util類,並最終形成一個醜陋的「shell類」,其唯一目的是阻止它們。
你使用什麼約定?通過一些客觀的指標,一個比另一個「更好」嗎?謝謝!
是的,我儘可能經常嘗試。儘管如此,在這種情況下無法想到一個 - 它只搜索捆綁包,如果它沒有在緩存中找到該文件,並且它不是典型的pathForResource:的實例方法,所以(在我看來)它不是理想適合。 – Archagon
因此,使它成爲一種類方法。我的觀點是,是不是不能想象一個適當的現有階級只是想象力的失敗?它可以是NSBundle,它可以是NSFileManager,也可以是NSString(因爲它處理路徑名),它可以是任何類,你可以直覺地感覺到它在正確的位置。 – matt
+1對於類別。我個人認爲,課堂的目的是要立即實現的。不要將類用作名稱空間。所以如果你只有靜態方法,你應該考慮另一種方法。 – Macmade