読みやすくするリファクタリング
長い関数を小さな単位に分割すると、読みやすさとモジュール性の両方が向上します。この演習では、ある関数をより小さな単位にリファクタリングします。リファクタリング対象の関数を以下に示します。なお、この演習ではスペースの都合上 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))