چند نکته برای کدنویسی تمیز‌تر در پایتون
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 7 دقیقه

چند نکته برای کدنویسی تمیز‌تر در پایتون

پایتون بر خوانایی تاکید دارد و کد نوشتن را بسیار آسان می‌کند. این مسئله یکی از دلایل محبوبیت این زبان برنامه نویسی است. اگرچه برای استفاده‌ی بیشتر از پایتون باید کدهای تمیزتر بنویسید. نوشتن کدهای تمیز بسیار اهمیت دارد زیرا از این طریق با شخص بعدی که کدها را می‌خواند، ارتباط برقرار می‌کنید.

 مارتین فولر گفته است:« هر کسی می‌تواند کدهای قابل فهم برای کامپیوتر را بنویسد. برنامه نویسان خوب کدهایی را می‌نویسند که انسان بتواند آن را درک کند.»

خیلی از کدنویسان با خودشان می‌گویند: «کدهای من به خوبی کار می‌کنند، پس چرا باید به نوشتن کدهای تمیز اهمیت دهم؟!»

همیشه به عنوان یک کدنویس باید آینده را نیز مد نظر داشته باشید. کدهای شما باید توسط انسان‌ها و ماشین‌ها فهمیده شود. اگر کدهای‌تان تمیز نباشد، برای نگهداری، بروزرسانی و گسترش آن در آینده با مشکل روبرو خواهید شد. در مقاله‌ی امروز می‌خواهم شما را با 5 مورد از بهترین و ساده‌ترین روش‌های نوشتن کد تمز آشنا کنم. کسب مهارت در این ترفندها باعث صرفه‌جویی در زمان شما شده و نگهداشت برنامه‌ها را آسان‌تر می‌کند.

اصل DRY

اصل DRY یا همان «خودت را تکرار نکن» یکی از ساده‌ترین اصول موجود در کد نویسی است. این اصل به شما گوشزد می‌کند که نباید کدهای تکراری بنویسید. هر دانشی باید یک بازنمایی واحد، بدون ابهام و معتبر در سیستم داشته باشد. به جای تکرار کردن خطوط، برای آن‌ها جایگزین پیدا کنید. گزینه‌های جایگزین در این زمینه می‌تواند حلقه‌ها، ساختارهای داده پایتون، توابع داخلی پایتون یا هر تابع تعریف شده توسط کاربر باشد.

به عنوان مثال:

month_name = input("Enter month name : ")
if month_name.upper() == 'JANUARY':
    number_of_days = 31
elif month_name.upper() == 'MARCH':
    number_of_days = 31
elif month_name.upper() == 'MAY':
    number_of_days = 31
elif month_name.upper() == 'JULY':
    number_of_days = 31
else:
    number_of_days = 0print(f"Number of Days in {month_name} = {number_of_days}")

چندین بار از دستور if-elif-else در قطعه کد بالا استفاده شده است. اگر به 4 عبارت if-elif اول کد دقت کنید، می‌فهمید که همان مقدار 31 با بررسی شراط مختلف در دستور if به متغیر یکسان اختصاص داده شده است. با استفاده از اصل DRY می‌توانیم از لیست‌های پایتون برای ابتکار عمل به خرج دادن در این کد استفاده کنیم. نسخه‌ی تمیز کد بالا به صورت زیر است:

month_name = input("Enter month name : ")
if month_name.upper() in ["JANUARY","MARCH","MAY","JULY"]:
    number_of_days = 31
else:
    number_of_days = 0print(f"Number of Days in {month_name} = {number_of_days}")

با یک دستور if-else و لیست‌های پایتون توانستیم خواندن، تفسیر و نگهداشت این کد را آسان کنیم.

از اسامی آسان برای متغیرها استفاده کنید

نام‌گذاری کنوانسیون‌ها یکی از مهم‌ترین جنبه‌های نوشتن کد تمیز است. همیشه از اسامی بامعنا و واضح در متغیرها و توابع خود استفاده کنید. اگرچه استفاده کردن از نام‌های بلند و توصیفی نیز هیچگونه ایرادی ندارد. همیشه باید خواندن و به یاد آوردن نام متغیر آسان باشد. به عنوان مثال در عبارت زیر اسامی بکار گرفته شده، مقدار و هدف متغیرها را نشان نمی‌دهد.

ts = 135
tp = 20

بهترین راه برای نوشتن این نام‌ها به شکل زیر است:

total_sales_usd = 135
total_profit_usd = 20

با این کار ما به خوبی می‌توانیم هدف و مقدار یک متغیر را متوجه شویم. همین مسئله در خصوص توابع نیز صدق می‌کند. بنابراین باید از نوشتن توابع به شکل زیر خودداری کنید:

def my_function(x, y):
    print(f"Addition is: {x+y}")
    print(f"Multiplication is: {x*y}")
    print(f"division is: {x/y}")

متغیرها و هدف تابع در نام‌گذاری بالا نشان داده نشده است. شما با روش زیر می‌توانید این موضوع را برطرف کنید:

def add_multiply_divide_numbers(number_1, number_2):
    print(f"Addition is: {number_1+number_2}")
    print(f"Multiplication is: {number_1*number_2}")
    print(f"division is: {number_1/number_2}")

گاهی اوقات ما ساعت‌ها وقت می‌گذاریم تا هدف یک تابع یا متغیر را درک کنیم. برای جلوگیری از این اتفاق می‌توانید کمی وقت گذاشته و نام‌های بامعنایی را برای متغیرها و توابع خود انتخاب کنید. هنگام انتخاب نام برای متغیرهای خود به این 3 نکته دقت داشته باشید:

  • از نام‌هایی هدفمند استفاده کنید
  • از افعال برای نام توابع و از اسامی برای نام متغیرها استفاده کنید
  • از بکار بردن عبارات گیج‌کننده خودداری کنید

در تمام برنامه از کلمات یکسان استفاده کنید

استفاده کردن از نام‌های مختلف برای متغیرهای هم نوع، یکی از مشکلات رایج در زمینه کد نویسی است. به عنوان مثال:

student_maths_score = 45
candidate_total_score = 98

شاید هر دوی این متغیرها نمرات یک دانش آموز را نشان دهند اما دارای اسامی مختلفی هستند. بهترین راه برای نوشتن این است:

student_maths_score = 45
student_total_score = 98

OR 

candidate_maths_score = 45
candidate_total_score = 98

هنگام تعریف نام توابع نیز باید به این نکته دقت داشت. روش زیر اشتباه است:

# function 1

def get_client_name():
    client_name = input("Enter your name :")
    return client_name# function 2    

def fetch_client_address():
    client_address = input("Enter your address :")
    return client_address

هر دو تابع 1 و 2 بصورت ایده‌آل برای دریافت نام و آدرس مشتری استفاده می‌شوند اما در نام تابع از مترادف‌های fetch و get استفاده شده است. شما با روش زیر می‌توانید این قطعه را بهتر بنویسید:

# function 1

def get_client_name():
    client_name = input("Enter your name :")
    return client_name# function 2    

def get_client_address():
    client_address = input("Enter your address :")
    return client_address

از کلماتی استفاده کنید که با هدف برنامه بیشتر مطابقت داشته باشد.

استفاده از متن‌های بیش از حد را کنار بگذارید

گاهی اوقات پایبند ماندن به دو مورد قبلی باعث می‌شود تا چیزهای غیرضروری را به نام متغیر و تابع اضافه کنیم. به عنوان مثال:

student_maths_score_in_exam = 45
student_total_score_in_exam = 98

کلمات student و in_exam در نام متغیر اضافی هستند، زیرا هیچ اطلاعات بیشتری در خصوص مقدار هر متغیر ارائه نمی‌دهند. با روش زیر می‌توانید این قطعه را بهتر بازنویسی کنید:

# Student performance in exam
maths_score = 45
total_score = 98

مطمئناً با این کار می‌توانید بخشی از نام متغیر را کوتاه کنید. البته در نظر داشته باشید که با این روش کارایی نام متغیر تحت تاثیر قرار نخواهد گرفت. اخیراً متوجه شدم که بسیاری از کدنویسان هنگام کار کردن با کلاس‌ها از مسائل غیرضروری در نام‌گذاری‌ها استفاده می‌کنند. به عنوان مثال:

class employee:
    employee_name = ' '
    employee_age = ' '

کلمه employee در نام متغیر یک چیز اضافی محسوب می‌شود، به همین خاطر ما در اینجا به آن نیاز نداریم. نوشتن قطعه‌ی بالا به شکل زیر بهتر است:

class employee:
    name = ' '
    age = ' '

اضافه کردن موارد اضافی به نام‌ها ایراد ندارد اما کار خوبی نیز تلقی نمی‌شود. به همین خاطر همیشه سعی کنید اسامی متغیرها را ساده نگه دارید.

از کامنت‌ها به طور هوشمندانه استفاده کنید

ما در برنامه‌های خود از کامنت‌ها استفاده می‌کنیم تا نحوه‌ی عملکرد کد را به خوانندگان بعدی بفهمانیم. اینکه چقدر کدهای ما تمیز باشد، اهمیت ندارد زیرا همیشه بخشی از کد به نوشتن کامنت نیاز خواهد داشت. کامنت نویسی یک نوع هنر محسوب می‌شود، بنابراین عاقلانه از آن استفاده کنید. در نظر داشته باشید که افزودن کامنت‌های زیاد نیز به کدهای‌تان آسیب خواهد زد. بسیاری از مردم همیشه با این مشکل سروکار دارند که باید کجا و چگونه کامنت بنویسند. شما می‌توانید کامنت‌های خود را در دو بخش زیر قرار دهید:

  • کامنت سربرگ: این نوع کامنت در ابتدای برنامه نوشته می‌شود و اطلاعات مربوط به کد را شرح می‌دهد. مثلاً نویسنده، عملکرد و زمان استفاده از آن کد را توضیح می‌دهد. معمولاً این کامنت‌ها در قالب چند خط نوشته می‌شوند.
  • بالای کد: این کامنت‌ها بصورت تک خط نوشته می‌شوند و کارکرد خط بعدی کد را توضیح می‌دهند.

کامنت باید یک یادداشت مفید و کوتاه در مورد نحوه‌ی کارکرد برنامه باشد. ما نباید برای چیزهای مشخص و واضح از کامنت استفاده کنیم. همیشه این موضوع را به یاد داشته باشید که کدهای خوانا نیازی به کامنت ندارند.

جمع‌بندی

ما در این مقاله با 5 روش آسان برای نوشتن یک کد تمیز آشنا شدیم؛ کدهایی که خواندن، اشکال‌زدایی و نگهداشت آن‌ها آسان است. شما می‌توانید از این روش‌ها در هر نوع زبانی استفاده کنید زیرا کاربرد آن‌ها به صورت جامع است. مطمئناً استفاده کردن از این راه‌ها باعث صرفه‌جویی در زمان و تلاش شما خواهد شد.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
3.75 از 4 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

کارشناس ارشد تولید و بهینه‌سازی محتوا و تکنیکال رایتینگ - https://arastoo.net

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید