کد پاک و روش های خوب در پایتون

نوشتن کد پایتون تمیز و قابل نگهداری یک مهارت ضروری برای هر توسعه دهنده ای است. کد پاک نه تنها کار شما را خواناتر و کارآمدتر می کند، بلکه تضمین می کند که پروژه های شما به راحتی توسط دیگران قابل درک و نگهداری است. در این مقاله، اصول کلیدی و شیوه های خوب برای نوشتن کدهای پایتون تمیز را بررسی می کنیم.
1. دستورالعمل های سبک PEP 8 را دنبال کنید
PEP 8 راهنمای رسمی سبک پایتون است و قراردادهایی را برای نوشتن کدهای خوانا و سازگار ارائه می دهد. ابزارهایی مانند pylint و flake8 میتوانند به اطمینان از پایبندی کد شما به این استانداردها کمک کنند.
قوانین کلیدی PEP 8:
- از 4 فاصله برای تورفتگی استفاده کنید.
- خطوط را به 79 کاراکتر محدود کنید.
- از نام های معنی دار برای متغیرها و توابع استفاده کنید.
مثال:
# Good
def calculate_total_price(price, tax_rate):
return price + (price * tax_rate)
2. نام های توصیفی و معنی دار بنویسید
نام ها باید به وضوح هدف متغیرها، توابع و کلاس ها را توصیف کنند. از استفاده از حروف یا اصطلاحات مبهم خودداری کنید.
❌ بد:
def func(x, y):
return x + y
✅ خوب:
def add_numbers(number1, number2):
return number1 + number2
رهنمودها:
- استفاده کنید
snake_case
برای نام متغیرها و توابع - استفاده کنید
PascalCase
برای نام کلاس ها
3. توابع و کلاس ها را کوچک نگه دارید
توابع باید یک کار را انجام دهند و آن را به خوبی انجام دهند. به طور مشابه، کلاس ها باید به این موارد پایبند باشند اصل مسئولیت واحد (SRP).
❌ بد:
def process_user_data(user):
# Validating user
if not user.get('name') or not user.get('email'):
return "Invalid user"
# Sending email
print(f"Sending email to {user['email']}")
return "Success"
✅ خوب:
def validate_user(user):
return bool(user.get('name') and user.get('email'))
def send_email(email):
print(f"Sending email to {email}")
def process_user_data(user):
if validate_user(user):
send_email(user['email'])
return "Success"
return "Invalid user"
4. از ثابت ها برای اعداد و رشته های جادویی استفاده کنید
از استفاده مستقیم از مقادیر کدگذاری شده در کد خود اجتناب کنید. آنها را به عنوان ثابت برای خوانایی و نگهداری بهتر تعریف کنید.
❌ بد:
if order_total > 100:
discount = 10
✅ خوب:
MINIMUM_DISCOUNT_THRESHOLD = 100
DISCOUNT_PERCENTAGE = 10
if order_total > MINIMUM_DISCOUNT_THRESHOLD:
discount = DISCOUNT_PERCENTAGE
5. از درک لیست برای تبدیل های ساده استفاده کنید
درک لیست کد شما را مختصرتر و پایتونیک تر می کند. با این حال، از پیچیده کردن بیش از حد آنها اجتناب کنید.
❌ بد:
squared_numbers = []
for number in range(10):
squared_numbers.append(number ** 2)
✅ خوب:
squared_numbers = [number ** 2 for number in range(10)]
6. از آرگومان های پیش فرض قابل تغییر اجتناب کنید
استفاده از اشیاء قابل تغییر مانند لیست ها یا دیکشنری ها به عنوان آرگومان های پیش فرض می تواند منجر به رفتار غیرمنتظره شود.
❌ بد:
def append_to_list(value, items=[]):
items.append(value)
return items
✅ خوب:
def append_to_list(value, items=None):
if items is None:
items = []
items.append(value)
return items
7. استثنائات را به خوبی مدیریت کنید
پایتون استفاده از استثناها را برای مدیریت خطا تشویق می کند. استفاده کنید try...except
بلوک هایی برای رسیدگی به خطاها و ارائه پیام های معنادار.
مثال:
try:
result = int(input("Enter a number: ")) / 0
except ZeroDivisionError:
print("Cannot divide by zero!")
except ValueError:
print("Invalid input. Please enter a valid number.")
8. کد DRY (تکرار نکنید) بنویسید
از تکرار منطق در کد خود اجتناب کنید. قابلیت های رایج را به توابع یا کلاس های قابل استفاده مجدد استخراج کنید.
❌ بد:
def calculate_area_circle(radius):
return 3.14 * radius ** 2
def calculate_area_rectangle(length, width):
return length * width
✅ خوب:
import math
def calculate_area(shape, **dimensions):
if shape == "circle":
return math.pi * dimensions["radius"] ** 2
elif shape == "rectangle":
return dimensions["length"] * dimensions["width"]
9. از Docstrings و Comments استفاده کنید
کد خود را با رشته های اسنادی و نظرات معنی دار مستند کنید تا “چرا” پشت منطق پیچیده را توضیح دهید.
مثال:
def calculate_area(radius):
"""
Calculate the area of a circle given its radius.
Args:
radius (float): The radius of the circle.
Returns:
float: The area of the circle.
"""
return 3.14 * radius ** 2
10. از Type Hints استفاده کنید
نکات تایپ کد شما را خواناتر می کند و ابزارهای کمکی مانند mypy
زودتر خطاها را تشخیص دهید
مثال:
def add_numbers(a: int, b: int) -> int:
return a + b
11. کد خود را تست کنید
همیشه تست هایی بنویسید تا مطمئن شوید کد شما همانطور که انتظار می رود کار می کند. از فریم ورک هایی مانند unittest
یا pytest
.
مثال:
import unittest
def add(a, b):
return a + b
class TestMathOperations(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
if __name__ == "__main__":
unittest.main()
12. از محیط های مجازی استفاده کنید
برای جلوگیری از درگیری با استفاده از محیط های مجازی، وابستگی های پروژه خود را جدا کنید.
دستورات:
# Create a virtual environment
python -m venv env
# Activate the virtual environment
source env/bin/activate # macOS/Linux
env\\Scripts\\activate # Windows
آخرین کلمات
کد پاک چیزی بیش از مجموعه ای از قوانین است – این یک طرز فکر است. با اتخاذ این شیوههای خوب، کد پایتون را مینویسید که خوانا، قابل نگهداری و حرفهای است. به یاد داشته باشید، کد پاک نه تنها برای شما، بلکه برای همه کسانی که با کد شما کار می کنند، مفید است.
تمرین کد پاک مورد علاقه شما در پایتون چیست؟ لطفا راهنمایی های خود را در نظرات زیر به اشتراک بگذارید!