Я б заперечував це наступним чином:
- Чому саме ваш метод повертає кілька значень? Про яку згуртованість ми говоримо - чи повинні ці значення насправді бути полями для одного класу, чи вони просто випадково повертаються тим самим методом, але інакше не пов'язані між собою? Якщо це останнє, ви, можливо, захочете розглянути розділення методу на два методи. Редагувати: використовуйте судження тут; іноді тип "випадкової" згуртованості може бути найкращим варіантом. Іншим варіантом є використання парних або кортежних конструкцій, хоча в OOP вони зазвичай не спостерігаються в загальнодоступних API (деякі помітні винятки - це стандартні колекції тощо).
- Якщо ці цінності заслуговують на формування класу, я, мабуть, радить не використовувати внутрішній клас. Внутрішні класи зазвичай використовуються як внутрішні деталі реалізації, які приховані зовні. Чи є якась причина, чому саме цей результат не повинен бути «повноцінним» класом?
- Які операції застосовні до цього нового класу, крім зберігання даних? В об'єктно-орієнтованому дизайні ви хочете, щоб відповідна поведінка була близькою до відповідних даних (які, здається, теж ваші наміри). Чи повинен метод, який ви посилаєтесь, не жити на цьому класі?
Підводячи підсумок, я побачив би, чи зможу я перетворити цей "об'єкт даних" у розроблений клас із даними та поведінкою. В якості додаткового коментаря ви можете зробити клас незмінним, оскільки його стан встановлюється один раз. Зробити його незмінним допоможе запобігти його неправильному встановленню чи зміні пізніше (скажімо, хтось встановить одне з полів на нуль і передасть його уздовж).
Редагувати: Як правильно вказує Паткос Цсаба, принцип, який тут застосовується, - це Принцип єдиної відповідальності ( SRP ) - клас, який ви намагаєтесь створити, дійсно повинен нести одну відповідальність (визначається як причина зміни ). Це керівництво щодо проектування повинно допомогти вам зрозуміти, чи належать ваші два поля до одного класу, чи ні. Для прикладу з Вікіпедії ваш клас може розглядатися як тип звіту; в цьому випадку він відповідає SRP, але важко коментувати без додаткової інформації.
BitInteger[] java.math.BigInteger.divideAndRemainder(BitInteger val)
. Він повертає 2 цілих числа у якості повернених значень у масиві.