Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Coding Style Guide: แนวทางเขียนโค้ดมาตรฐาน PEP 8

ในบทช่วยสอนนี้ เราจะเรียนรู้ แนวทางเขียนโค้ดมาตรฐาน (Style Guide) ที่ควรปฏิบัติในโปรเจกต์ Python การปฏิบัติตามมาตรฐานจะทำให้โค้ดอ่านง่าย รักษาได้ และดูมืออาชีพ

สำหรับ Python มาตรฐานที่นิยมใช้คือ PEP 8 โค้ดจะดูสวยงามและอ่านง่ายขึ้น คุณสามารถอ่านรายการเต็มได้ที่ pep8.org บทความนี้สรุปจุดสำคัญที่ควรทราบ

1. การเยื้อง (Indentation): ใช้ Tab หรือ 4 Spaces

PEP 8 แนะนำให้ใช้ 4 spaces ต่อระดับการเยื้อง (ไม่ใช่ tab character) ส่วนใหญ่ Editor สามารถตั้งค่าให้กด Tab แล้วแปลงเป็น 4 spaces ให้อัตโนมัติ

# ตัวอย่างการเยื้องที่ถูกต้อง
def sample(param):
    # statement 1
    # statement 2
    return param

2. Encoding: ใช้ UTF-8 (ค่าเริ่มต้นของ Python 3)

ใช้ encoding UTF-8 ซึ่งเป็นค่าเริ่มต้นของ Python 3 รองรับภาษาต่างๆ ได้ดีที่สุด สำหรับไฟล์เก่าที่ใช้ ASCII ก็ยอมรับได้

3. Trailing Comma ใน Tuple

ควรใส่ comma ท้ายรายการสุดท้ายใน tuple (แม้จะมีเพียงรายการเดียว) เพื่อความสอดคล้องและง่ายต่อการเพิ่มรายการใหม่

# ถูกต้อง
tup = (1, 2, 3,)

# Tuple เดียวต้องมี comma
single = (42,)

4. ใช้ Docstrings สำหรับฟังก์ชันและคลาส

ใช้ triple quotes (""") สำหรับ docstrings อธิบายหน้าที่ พารามิเตอร์ และค่าที่คืน

def calculate_area(radius):
    """คำนวณพื้นที่วงกลม
    
    Args:
        radius (float): รัศมีของวงกลม
    
    Returns:
        float: พื้นที่วงกลม
    """
    return 3.14159 * radius ** 2


class Circle:
    """คลาสแทนวงกลม"""
    pass

5. ความยาวบรรทัดไม่เกิน 79 ตัวอักษร

PEP 8 แนะนำไม่ให้เกิน 79 ตัวอักษรต่อบรรทัด หากยาวเกินไป ให้ขึ้นบรรทัดใหม่โดยใช้ \ (escape character) หรือ parentheses

# ใช้ parentheses แทน backslash (แนะนำ)
result = (first_part + second_part
          - third_part * fourth_part)

6. ใช้ Space รอบ Operator และหลัง Comma

เว้นวรรคก่อนและหลัง operator (=, +, -, *, /, ==, ฯลฯ) และหลัง comma เพื่ออ่านง่าย

# ถูกต้อง
x = 10
y = 20
result = x + y
my_list = [1, 2, 3]
func(a, b, c)

7. กฎการตั้งชื่อ (Naming Conventions)

ประเภทรูปแบบตัวอย่าง
Variables / Functionssnake_caseuser_name, calculate_total
ClassesPascalCaseUserProfile, DataProcessor
ConstantsUPPER_SNAKE_CASEMAX_CONNECTIONS, PI_VALUE
Private (internal)_single_leading_underscore_internal_var
Name Mangling__double_leading_underscore__private_var

8. Import: หนึ่งโมดูลต่อบรรทัด

# ไม่แนะนำ
import math, random, os

# แนะนำ
import math
import random
import os

9. อัปเดต Comment ให้ตรงกับโค้ด

Comment ที่ล้าสมัยอาจทำให้เข้าใจผิด สำคัญมากที่ต้องแก้ไข comment ทุกครั้งที่แก้โค้ด

10. หลีกเลี่ยงตัวอักษรที่ดูคล้ายกันเป็นชื่อตัวแปรเดี่ยว

  • l (ตัว L เล็ก) - คล้ายเลข 1
  • I (ตัว i ใหญ่) - คล้ายเลข 1
  • O (ตัว o ใหญ่) - คล้ายเลข 0

11. ไม่ใช้ Non-ASCII ใน Identifier

แม้ Python 3 จะรองรับ Unicode ในชื่อตัวแปรได้ แต่ไม่แนะนำให้ใช้ เพื่อความเข้ากันได้และหลีกเลี่ยงปัญหา encoding


การปฏิบัติตาม PEP 8 จะช่วยให้ทีมทำงานร่วมกันได้สบายใจและโค้ดมีคุณภาพสูงขึ้นครับ