pythonリファクタリングの覚書#1 「if文の羅列をfor文でまとめる」

スポンサーリンク
tech系(python)
スポンサーリンク

条件分岐をしていて、条件の数が多くてif文が多くなるようなことってないですか?

僕はあります。

例えば、以下のようなコードの場合、if文が続いてしまっています。

for month_item in selected_month_list:
    for i in range(1, 13):
        if month_item == 'month1': 
            month_list.append(1)
        if month_item == 'month2': 
            month_list.append(2)
        if month_item == 'month3': 
            month_list.append(3)
        if month_item == 'month4': 
            month_list.append(4)
        if month_item == 'month5': 
            month_list.append(5) 
        if month_item == 'month6': 
            month_list.append(6) 
        if month_item == 'month7': 
            month_list.append(7) 
        if month_item == 'month8': 
            month_list.append(8) 
        if month_item == 'month9': 
            month_list.append(9) 
        if month_item == 'month10': 
            month_list.append(10) 
        if month_item == 'month11': 
            month_list.append(11) 
        if month_item == 'month12': 
            month_list.append(12)

上記の場合、以下のようにリファクタリングして、縮めることができます。

for season_month_item in selected_season_months:
    for i in range(1, 13):
        if season_month_item == f'month_option{i}':
            month_list.append(i)

以上。

タイトルとURLをコピーしました