เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การ Refactor เพื่อเพิ่มความอ่านง่าย

การแยกฟังก์ชันขนาดใหญ่ออกเป็นหน่วยย่อยช่วยเพิ่มทั้งความอ่านง่ายและความเป็น Modularity ในแบบฝึกหัดนี้ จะได้ลอง Refactor ฟังก์ชันให้แตกออกเป็นหน่วยย่อย ฟังก์ชันที่จะ Refactor แสดงไว้ด้านล่าง หมายเหตุ: ในแบบฝึกหัดนี้จะไม่ใช้ 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 ถูก import ไว้ให้แล้ว
  • นำฟังก์ชันหน่วยย่อยใหม่มาใช้เพื่อเติมนิยามของ 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))
แก้ไขและรันโค้ด