始める無料で始める

読みやすくするリファクタリング

長い関数を小さな単位に分割すると、読みやすさとモジュール性の両方が向上します。この演習では、ある関数をより小さな単位にリファクタリングします。リファクタリング対象の関数を以下に示します。なお、この演習ではスペースの都合上 docstring を省略していますが、実際のアプリケーションではドキュメントを必ず含めるようにしましょう。

def polygon_area(n_sides, side_len):
    """Find the area of a regular polygon

    :param n_sides: number of sides
    :param side_len: length of polygon sides
    :return: area of polygon

    >>> round(polygon_area(4, 5))
    25
    """
    perimeter = n_sides * side_len

    apothem_denominator = 2 * math.tan(math.pi / n_sides)
    apothem = side_len / apothem_denominator

    return perimeter * apothem / 2

この演習はコースの一部です

Python におけるソフトウェアエンジニアリングの原則

コースを見る

演習の手順

  • perimeter を計算するロジックを polygon_perimeter 関数に移動しましょう。
  • 文脈に示されているロジックを移動して、polygon_apothem 関数の定義を完成させましょう。math モジュールはすでにインポート済みです。
  • 新しく作成した各関数を活用して、polygon_area の定義を完成させましょう。
  • より細かく分割された polygon_area を使って、一辺の長さが 10 の正六角形の面積を計算しましょう。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def polygon_perimeter(n_sides, side_len):
    return ____

def polygon_apothem(n_sides, side_len):
    denominator = ____
    return side_len / denominator

def polygon_area(n_sides, side_len):
    perimeter = ____
    apothem = ____

    return perimeter * apothem / 2

# Print the area of a hexagon with legs of size 10
print(____(n_sides=6, side_len=10))
コードを編集して実行