Bunu aşağıdaki satırlarda tartışacağım:
- Metodunuz neden tam olarak birden fazla değer döndürüyor? Ne tür bir uyumdan bahsediyoruz - bu değerler aslında tek bir sınıftaki alanlar mı olmalı yoksa sadece aynı yöntemle tesadüfen geri dönüyorlar mı, yoksa başka türlü ilgisiz mi? Eğer ikinciyse, yöntemi iki yönteme ayırmayı düşünebilirsiniz. Düzenleme: kararınızı burada kullanın; bazen bir tür "tesadüfi" uyum en iyi seçenek olabilir. Diğer bir seçenek, bir çift veya demet yapı kullanmaktır, ancak OOP'de bunlar genellikle genel API'larda görülmez (bazı önemli istisnalar standart koleksiyonlar vb.).
- Değerler bir sınıf oluşturmayı hak ederse, muhtemelen bir iç sınıf kullanılmamasını tavsiye ederim. İç sınıflar genellikle dışarıdan gizlenen dahili uygulama ayrıntıları olarak kullanılır. Bu sonucun kendi başına "tam gelişmiş" bir sınıf olmamasının bir nedeni var mı?
- Veri tutma dışında, bu yeni sınıfa hangi işlemler uygulanabilir? Nesneye yönelik tasarımda, ilgili davranışın ilgili verilere yakın olmasını istersiniz (bu da sizin niyetiniz gibi görünüyor). Bahsettiğiniz yöntem bu sınıfta yaşamamalı mıdır?
Özetlemek gerekirse, bu "veri nesnesini" hem veri hem de davranış ile tam teşekküllü bir sınıfa dönüştürebilir miydim. Ek bir yorum olarak, durumu bir kez ayarlandığından sınıfı değişmez yapmak isteyebilirsiniz. Değişmez hale getirilmesi, yanlış ayarlanmasını veya daha sonra değiştirilmesini önlemeye yardımcı olacaktır (örneğin, alanlardan birini boş olarak ayarlayıp geçirme).
Düzenleme: Patkos Csaba'nın doğru bir şekilde işaret ettiği gibi, burada uygulanan prensip Tek Sorumluluk İlkesi'dir ( SRP ) - oluşturmaya çalıştığınız sınıfın gerçekten bir sorumluluğu olmalıdır ( değiştirme nedeni olarak tanımlanmıştır ). Bu tasarım kılavuzu, iki alanınızın tek bir sınıfa ait olup olmadığını anlamanıza yardımcı olmalıdır. Wikipedia örneğine sadık kalmak için, sınıfınız bir tür rapor olarak görülebilir, bu durumda SRP'ye uygundur, ancak daha fazla bilgi olmadan yorum yapmak zordur.
BitInteger[] java.math.BigInteger.divideAndRemainder(BitInteger val)
. Bir dizideki dönüş değerleri olarak 2 tamsayı döndürür.