Pratik bir kural: kendinize "Henüz herhangi bir nesne oluşturulmamış olsa bile bu yöntemi çağırmak anlamlı mı?" Eğer öyleyse, kesinlikle statik olmalıdır.
Yani bir sınıfta Carbir yönteminiz olabilir:
double convertMpgToKpl(double mpg)
... bu statik olurdu, çünkü kimse 35mpg'nin neye dönüştüğünü bilmek isteyebilir, hiç kimse bir tane inşa etmese bile Car. Ancak bu yöntem (belirli bir etkinliğin verimliliğini ayarlar Car):
void setMileage(double mpg)
... herhangi bir Carinşa edilmeden önce yöntemi çağırmak akıl almaz olduğu için statik olamaz .
(Bu arada, tersi her zaman doğru değildir: bazen iki Carnesne içeren bir yönteminiz olabilir ve yine de statik olmasını isteyebilirsiniz.
Car theMoreEfficientOf( Car c1, Car c2 )
Bu, statik olmayan bir sürüme dönüştürülebilse de, bazıları Cardaha önemli olan "ayrıcalıklı" bir seçim olmadığından, çağıranı, Carçağıracağınız nesne olarak birini seçmeye zorlamamanız gerektiğini iddia eder . yöntem. Bu durum, tüm statik yöntemlerin oldukça küçük bir kısmını oluşturuyor.)