• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / 未分類 / Pythonの基本的なリファクタリングと条件分岐のリファクタリングについて基本的な内容

Pythonの基本的なリファクタリングと条件分岐のリファクタリングについて基本的な内容

1 超初歩的なリファクタリング
2 条件分岐のリファクタリング
3 処理の関数化をするリファクタリング
4 関連記事

今回は、Pythonの一番基本的なリファクタリングについて書いた。

リファクタリングとは、コードの構造やデザインを改善するプロセスで、コードの可読性、保守性、拡張性も向上させる。一番、初歩的なリファクタリングには、次のようなところを気をつけると良い。

超初歩的なリファクタリング

以下は、チーム開発ならば、最低限できていなければできない内容だなと思う。

1. 変数名や関数名をわかりやすくする
2. コードの重複を避けるために関数化する
3. コメントを追加してコードの目的を明確にする
4. 不要なコードを削除する

次に、サンプルコードについて記述する。

  • 修正前のコード

def calc(a, b):
    return a * a + b * b

x = 3
y = 4
ans = calc(x, y)
print(ans)

上のコードでは、関数がわかりにくい、変数名がわかりにくい、コメントがなくわかりにくいなどの問題があります。

これを、以下のように修正しましょう。

  • 修正後のコード

def calculate_sum_of_squares(x_coordinate, y_coordinate):
    """
    この関数では、2つの変数の2乗を足し合わせます
    :param x_coordinate: 1つ目の数字
    :param y_coordinate: 2つ目の数字
    :return: 引数の2乗の足し合わせを返す
    """
    return x_coordinate * x_coordinate + y_coordinate * y_coordinate


x_coordinate = 3
y_coordinate = 4

result = calculate_sum_of_squares(x_coordinate, y_coordinate)
print("The sum of the squares is:", result)

上の例では、関数名を具体的にして、変数名をわかりやすくあした。さらに、コメントを追加して第三者にもわかりやすくしている。

条件分岐のリファクタリング

条件分岐は、簡単なリファクタリングの例として、条件分岐の簡素化や早期リターンの利用が挙げられる。コードの可読性が向上し、ネストが深くなるのを防ぐ。

ネストが深くなればなるほど、わかりにくくなるため、最初にリターンをしてわかりやすくすることが大事だ。

  • 修正前のコード
def check_age(age):
    if age >= 0:
        if age             print("You are a minor.")
        else:
            print("You are an adult.")
    else:
        print("Invalid age.")

check_age(25)

上の例では、ネストが2つ続いている。

一般的には、ネストは3つまでと言われているが、少ないに越したことはないため、以下のように修正しよう。

  • 修正後のコード
def check_age(age):
    if age < 0:
        print("Invalid age.")
        return

    if age < 18:
        print("You are a minor.")
    else:
        print("You are an adult.")

check_age(25)

修正後は、age<0に対して早期リターンを利用している。この結果、コードのネストが減り、可読性が向上してる。

処理の関数化をするリファクタリング

一部の処理を関数化すると、可読性が向上する。このさい、関数名や変数名をわかりやすくしよう。

  • 修正前のコード
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_numbers = []
odd_numbers = []
for number in data:
    if number % 2 == 0:
        even_numbers.append(number)
    else:
        odd_numbers.append(number)

even_sum = 0
for even_number in even_numbers:
    even_sum += even_number

odd_sum = 0
for odd_number in odd_numbers:
    odd_sum += odd_number

print("Even numbers:", even_numbers)
print("Sum of even numbers:", even_sum)
print("Odd numbers:", odd_numbers)
print("Sum of odd numbers:", odd_sum)

上の例は非常にわかりにくく、コードが続いている。

一部を関数として、外だしすることでコードは改善するので、それを試してみる。

  • 修正後のコード
def separate_even_odd(numbers):
    even_numbers = []
    odd_numbers = []
    for number in numbers:
        if number % 2 == 0:
            even_numbers.append(number)
        else:
            odd_numbers.append(number)
    return even_numbers, odd_numbers

def calculate_sum(numbers):
    total = 0
    for number in numbers:
        total += number
    return total

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_numbers, odd_numbers = separate_even_odd(data)
even_sum = calculate_sum(even_numbers)
odd_sum = calculate_sum(odd_numbers)

print("Even numbers:", even_numbers)
print("Sum of even numbers:", even_sum)
print("Odd numbers:", odd_numbers)
print("Sum of odd numbers:", odd_sum)

関数化して、処理の内容をわかりやすくした。

この結果、コードが機能ごとに分かれているため、可読性が向上している。また、再利用性も向上し、同じ処理を繰り返し行う必要がなくなる。

以上、今回はリファクタリングについて説明した。

以下の本は、最近発売された本だが、コードの書き方に関して非常にわかりやすい本なので、ぜひ参考にしていただきたい。

関連記事

元SEが語る、システムエンジニア(SE)の仕事の良いところって?将来性は?SEになるにはどうするのか
元SEが語る、システムエンジニア(SE)の仕事の良いところっ…
元SEが語る、システムエンジニア(SE)ってどんな仕事?きつくてつらいのか?
元SEが語る、システムエンジニア(SE)ってどんな仕事?きつ…
MacでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
MacでDjango、Anaconda、VSCodeのインス…
MacでFlask、Anaconda、VSCodeのインストールとFlaskを開発する環境の構築をする
MacでFlask、Anaconda、VSCodeのインスト…
【年収】フリーランスエンジニアの年収はいくらか??稼ぐための方法まとめ
【年収】フリーランスエンジニアの年収はいくらか??稼ぐための…
numpyでmax, min, argmax, argminを用いた最大値、最小値の求め方
numpyでmax, min, argmax, argmin…

Primary Sidebar

人気記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 2
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 3
    Python未経験だが、フリーランスの案件に採用さ…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 超初歩的なリファクタリング
2 条件分岐のリファクタリング
3 処理の関数化をするリファクタリング
4 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約