socket.ioを使用しているnode.jsサーバーに接続するアンドロイドアプリケーションを作成しています。オブジェクト/オブジェクトにユーザーを追加するより良い方法はありますか
今は問題はありませんが、これを行うには良い方法があるように感じます。以下のコードは、ユーザーの国/州/都道府県に基づいて、ユーザーをuserPool
変数に追加します。
var userPool = {};
// Adds the user to the pool object
socket.on('add or update user to pool', function(data) {
if (userPool.hasOwnProperty(data['country'])) {
if (userPool[data['country']].hasOwnProperty(data['state'])) {
if (userPool[data['country']][data['state']].hasOwnProperty(data['city'])) {
if (userPool[data['country']][data['state']][data['city']].hasOwnProperty(data['user_type'])) {
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
else {
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
}
else {
userPool[data['country']][data['state']][data['city']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
}
else {
userPool[data['country']][data['state']] = {};
userPool[data['country']][data['state']][data['city']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
}
else {
userPool[data['country']] = {};
userPool[data['country']][data['state']] = {};
userPool[data['country']][data['state']][data['city']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
if (!socket.hasOwnProperty('userInfo'))
socket['userInfo'] = { 'country': data['country'], 'state': data['state'], 'city': data['city'], 'user_type': data['user_type'] };
});
従うことが少し難しいが、私は、コードの繰り返しの多くを気づいています。あなたができる限り、あなた自身を繰り返さないようにしてください。 – deweyredman
[CodeReview](http://codereview.stackexchange.com/)でこれを尋ねるべきではありませんか? – Xufox