Kesinlikle yeni bir nesne oluştururken tercih etmelidir engin Vakaların çoğunda. Tüm özellikleri yeniden atama ile ilgili sorunlar:
- Sağlayabileceğiniz kapsülleme seviyesini büyük ölçüde sınırlayan tüm mülklerde genel belirleyiciler gerektirir
- Eski durum için herhangi bir ek kullanımınız olup olmadığını bilmek, eski durumun kullanıldığı her yerde bilmeniz gereken anlamına gelir. Eğer sınıf
A
ve sınıf B
her ikisi de sınıfın örneklerinden geçti ise, C
o zaman aynı örneğe geçip geçmeyeceklerini ve eğer öyleyse diğerinin hala onu kullanıp kullanmadığını bilmek zorundadırlar. Bu, başka türlü olması gerekmeyen sınıfları sıkıca birleştiriyor.
- Gbjbaanb'ın belirtildiği gibi, tekrarlayan kodlara yol açar, eğer kurucuya bir parametre eklerseniz, kurucuyu çağıran her yerde derleme başarısız olur, bir noktanın kaybolma tehlikesi yoktur. Genel bir özellik eklerseniz, nesnelerin "sıfırlandığı" her yeri manuel olarak bulup güncellediğinizden emin olmanız gerekir.
- Karmaşıklığı arttırır. Döngüde sınıfın bir örneğini oluşturduğunuzu ve kullandığınızı hayal edin. Metodunuzu kullanıyorsanız, o zaman şimdi döngüden ilk kez veya döngü başlamadan önce ayrı başlatma yapmanız gerekir. Her iki durumda da, bu iki başlatma yolunu desteklemek için yazmanız gereken ek koddur.
- Yani, sınıfınız kendini geçersiz bir durumda olmaktan koruyamaz.
Fraction
Bir pay ve payda ile bir sınıf yazdığınızı ve bunun her zaman düşürüldüğünü zorlamak istediğinizi düşünün (yani pay ve paydaşın toplamı 1 idi). İnsanların pay ve paydayı herkese açık olarak belirlemelerine izin vermek istiyorsanız, geçersiz bir durumdan bir geçerli durumdan diğerine geçebilecekleri için, bunu güzelce yapmak imkansızdır. 1/2 (geçerli) -> 2/2 (geçersiz) -> 2/3 (geçerli).
- Çalıştığınız dil için aptalca değil, kodu koruyan herkes için bilişsel sürtünmeyi arttırıyor.
Bunların hepsi oldukça önemli problemler. Ve yarattığınız ekstra iş karşılığında elde ettiğiniz şey ... hiçbir şey. Nesne örnekleri oluşturmak genel olarak inanılmaz derecede ucuzdur, bu nedenle performans yararı neredeyse her zaman tamamen göz ardı edilebilir olacaktır.
Bahsedilen diğer cevabın da belirtildiği gibi, tek zaman performansının, sınıfınızın inşaat üzerinde önemli ölçüde pahalı işler yapması ile ilgili bir endişe kaynağı olabilir. Ancak bu durumda bile, bu tekniğin çalışması için, pahalı parçayı sıfırladığınız özelliklerden ayırmanız gerekir, böylece bunun yerine uç ağırlık kalıbı veya benzerini kullanabilirsiniz .
Bir yan not olarak, yukarıdaki sorunlardan bazıları ayarlayıcı kullanmadan ve bunun yerine public Reset
sınıfınızda yapıcı ile aynı parametreleri alan bir yöntem kullanarak hafifletilebilir . Herhangi bir nedenden dolayı, bu sıfırlama yolundan aşağıya inmek isteseydiniz, bu muhtemelen bunu yapmanın çok daha iyi bir yolu olurdu.
Yine de, üzerinde durmadığı noktalarla birlikte ekleyen karmaşıklık ve tekrarlama, özellikle varolmayan faydalara karşı tartıldığında, buna karşı hala çok ikna edici bir argümandır.