ในบทช่วยสอนนี้ เราจะเรียนรู้ แนวทางเขียนโค้ดมาตรฐาน (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 / Functions | snake_case | user_name, calculate_total |
| Classes | PascalCase | UserProfile, DataProcessor |
| Constants | UPPER_SNAKE_CASE | MAX_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 เล็ก) - คล้ายเลข 1I(ตัว i ใหญ่) - คล้ายเลข 1O(ตัว o ใหญ่) - คล้ายเลข 0
11. ไม่ใช้ Non-ASCII ใน Identifier
แม้ Python 3 จะรองรับ Unicode ในชื่อตัวแปรได้ แต่ไม่แนะนำให้ใช้ เพื่อความเข้ากันได้และหลีกเลี่ยงปัญหา encoding
การปฏิบัติตาม PEP 8 จะช่วยให้ทีมทำงานร่วมกันได้สบายใจและโค้ดมีคุณภาพสูงขึ้นครับ