2011-01-15 18 views
6

vs özel statik:Hangisi daha iyi? Bu kod örneğinde özel

public class SuperMan { 
    private static bool IsProper(decimal x) { 
     return x > 31.0m && x < 45.0m; 
    } 

    public bool CheckStuff(string a, string b, string c) { 
     // lots of code, some of which introduces a variable x 
     return IsProper(x) && /* other conditions */; 
    } 
} 

Meli IsProper (..) bir 'özel statik' ya da 'özel' olmak.

  1. IsProper (..) herhangi örneği durumuna erişmek gerekmez
  2. Biz iki seçenek arasında farklı performans (biz asla gerektiği şeylerden biri endişe değildir (hatta gelecekte.): Varsayarsak gerçek ölçüm yapmadan performansı hakkında tahmin ve gerek kalmadan optimize edilir yapın.) o SuperMan sınıfına ne de üyeleri ile bir şey yapmak zorunda görünmüyor beri
+3

'IsProper' gelecekteki sürümleri örneği durumuna erişmek Olabilir statik bunu yapacak? – CodesInChaos

+0

Hayır ... Sorunu açıklığa kavuşturmak için düzenleyeceğim. – kidoman

cevap

4

o , statik olabilir. Ama bu işlevin o sınıfta olup olmadığını kendinize sormalısınız.

Ondalık, SuperMan için uygun bir ondalık olup olmadığını kontrol ediyorsanız, oraya aittir. Ama ben bu durumda statik yapmazdım. Şansınız, daha sonra bu sabit değerlerin SuperMan özellikleriyle değiştirilmesi gerekecektir.

+1

Özel, bu yüzden sadece bir yardımcı olduğunu tahmin edebilirsiniz. Aynı kod başka bir yerde kullanılıyorsa, o zaman bir temel sınıf veya yardımcı sınıfına aittir. – leppie

+0

Bir yardımcı işlevdir. – kidoman

+1

Microsoft tarafından sağlanan Kod Çözümleme aracı bunu istenmeyen olarak işaretler; Bir yöntem herhangi bir örnek alanı kullanmıyorsa, statik olmalıdır. Gerektiğinde (zamanından önce değil) örneği yaparken karşılaştığınız zorlukları anlamıyorum. – Timwi

0

Statik yöntemler biraz daha hızlı olabilir, ancak diğer yandan bazen refactor için daha zor olabilir.

+0

Ne kadar? Bize bir örnek verebilir misiniz? – kidoman

+0

@ KiD0M4N, Raf doğru, statik daha hızlıdır çünkü statik oluşturmaya gerek yoktur, ancak istenmeyen sonuçları önlemek için değişmez nesneler veya durum bilgisi olmayan koşullarda statik yöntem kullanmalısınız. –

+0

Sadece yöntemi çağırmak için bir nesne oluşturmanız gerekiyorsa, bu doğrudur, ancak örneği zaten aldıysanız, performans farkı ihmal edilebilir. Vardır, ancak üst düzey bir 4D oluşturma motoru yazmıyorsanız, bunun için endişelenmenize gerek yoktur. – GolezTrol

2

Nedenleri bir örnek üyesi IsProper yapmak:

Kalıtsal sınıfta başka uygulanmasını gerektirir IsProper
  • IsProper statik IsProper yapmak gelecekte

nedenleri üyelerine erişmesi gerekebilir üye:

  • Ben yapmak için küçük bir performans cezası var t örnek üye.
  • yalnızca IsProper çağırmak için sınıfının bir örneğini oluşturmak için gerekiyorsa, bir
İlgili konular