Самый элегантный способ - это, конечно, инкапсулировать хеш и соль в классе и вернуть экземпляр этого класса.
class HashAndSalt {
private byte[] hash, salt;
public HashAndSalt(byte[] hash, byte[] salt) {
this.hash = hash;
this.salt = salt;
}
// access methods goes here
}
Основная причина выбора вышеуказанного подхода заключается в том, что на стороне клиента становится ясно, что содержат переменные. Если вы вернете что-то вроде byte[2][]
, я бы по-прежнему забывал, был ли хэш в индексе 0 или 1.
Если вы сделаете поля окончательными, некоторые, возможно, даже возразят, что вы можете сделать их открытыми и пропустить методы доступа.