Slide 46
Slide 46 text
46
46
©MIXI
テスタビリティが上がるようにリファクタしてみる
def get_active_user_x_acounts
(from_time):
# アクティブなユーザーを取ってくる処理
users = get_users_recently_updated(from_time)
active_users = select_active_users(users, Config.ACTIVE_USER_THRESHOLD)
result = []
for user in active_users:
user_x_account = get_user_x_acounts(user)
result.append(user_x_account)
return result
def get_users_recently_updated
(from_time):
return query(User).filter(user.updated_at > from_time).all()
def select_active_users
(users, active_score_threshold
):
return list(filter(None, [user for user in users if calc_active_score(user)
> active_score_threshold else None]))
def calc_active_score
(user):
# user が active かどうかのスコアを得る複雑な処理
return active_score
def get_user_x_account
(user):
# 外部サイトへのリクエストをして X アカウント情報を取得
return request('GET', f'https://x.com/users/~~~'
)
仕様が複雑な部分を個別テストできる!
本体のメソッドへの影響が減った!
= 分解容易性, 単純性, 安定性