با وجود آنکه استایلها و تکنیکهای مختلفی برای برنامهنویسی وجود دارد، اما یکسری قواعد نیز هستند که توسط اکثریت افراد در حوزه برنامهنویسی استفاده میشوند. هدف این قواعد آن است که بتوانند تجربه یکسانتری را برای برنامهنویسان مختلف ایجاد کرده و سازگاری منطقی بوجود بیاورند. منظور ما این نیست که برنامهنویسان برای داشتن یک خروجی همواره از یک منطق استفاده کنند، منظور ما این است که توسعهدهندگان از یک ساختار و قالب مشخص در کدنویسی استفاده کنند. حالتی که اغلب افراد با آن آشنایی داشته باشند.
منظور ما از بهترین رویکردها در عنوان این مقاله، پیشنهاداتی است که برای نوشتن یک برنامه میتواند توسط یک برنامهنویس روی برنامه اعمال شود. اینکار باعث میشود که زبان مشترکی بوجود بیاید که در آن اکثریت برنامهنویسان میتوانند از سینتکس برنامه متوجه خروجیها شوند.
استفاده از قواعد ثابت برنامهنویسی به یک تیم این کمک را میکند تا بتوانند از کدهای همدیگر متوجه شده و بهتر همکاریهای لازم را در جهت ادغام و ویرایش کدهای یکدیگر انجام دهند. از طرفی دیگر این موضوع برای خودتان نیز مفید است. تصور بکنید که بعد از مدتها سراغ یکسری کد قدیمی میروید، اگر از الگوی ثابت در آن استفاده نکرده باشید ممکن است درک کردن قسمتهای مختلف آن برایتان کمی مشکل باشد. اما در صورتی که یک اصول و قواعد ثابت را برای کدنویسی تعیین کرده باشید این مشکل حل میشود.
حال در این مطلب قصد داریم در ارتباط با بهترین رویکردهایی صحبت کنیم که به عنوان یک برنامهنویس پایتون میتوانید در کدهایتان پیادهسازی کنید.
بررسی کردن تمام رویکردها برای یک مطلب بسیار طولانی خواهد بود. به همین خاطر ما تصمیم گرفتیم تا ۶ مورد از مهمترین آنها را در این مطلب بیان کنیم.
۱. پیروری از قواعد درست برای نامگذاری
۱- نامگذاری بایدکوتاه و توضیحی باشد. به این صورت که در کمترین مقدار ممکن بیشترین معنا را تولید کند. همچنین در نامگذاری باید سرراست و واضح باشید:
مثال نامناست: my_variable، x، list_for_stroing_word_counts
مثال مناسب: row_dict، product_id، word_counts
۲. در پایتون متغیرها را باید با کلمات کوچک نامگذاری کنید و برای جدا کردن هر کلمه از _ استفاده نمایید. درست مانند مثالهایی که در قدم اول نشان داده شدند. از طرفی دیگر اگر متغیرهای شما عمومی نیستند از علامت _ قبل از نام متغیر استفاده کنید: _private
۳. در پایتون معمولا از ثابتها استفاده نمیشود اما در صورت استفاده آن ها را با کلمات بزرگ بنویسید. برای مثال PRODUCT_ID
۴. توابع را نیز درست مانند نام متغیرها با کلمات کوچک نوشته و البته برای جداسازی از _ استفاده کنید.
۵. از آنجایی که پایتون یک زبان برنامهنویسی شئگرا است از کلاسها استفاده بسیاری میشود. برای نامگذاری کلاسها اولین حرف هر کلمه را به صورت بزرگ بنویسید برای مثال: UserRegisterationClass
۶. برای نام گذاری ماژولها و پکیجها بهتر است از یک کلمه استفاده کنید اما در صورت استفاده از دو کلمه آن را با _ از هم جدا کرده و بهتر است تمام کلمات آن نیز به صورت کوچک نوشته شود.
۲. راهنمای PEP 8
توسعهدهندگان جامعه پایتون متوجه شدند که حتی با وجود قرار دادن یکسری قواعد کلی باز هم توسعهدهندگان کدها را به صورتهایی متفاوت از همدیگر مینویسند. این موضوع باعث ناسازگاری در کدها میشد.
در چنین شرایطی بود که توسعهدهندگان تصمیم گرفتند تا یک راهنمای استایل منحصر به فرد را برای پایتون بنویسند. این کار باعث میشد که تا جای ممکن کدها از یک استایل یکپارچه بهره بگیرند. این استایل منحصر به فرد PEP 8 نام گرفت که در حال حاضر نیز در مستندات رسمی پایتون موجود است.
لیست بایدها و نبایدهایی که در این استایل ذکر شده بسیار زیاد است. ما در اینجا سعی میکنیم چند مورد از آنها را بیان کنیم.
قواعد PEP 8
کنارهگذاری یا Indentation: قبل از آنکه پایتون مسئله indentation را برای نوشتن بلاک-کدها ارائه کند، از این حالت تنها برای خواناتر کردن کدها استفاده میشد. اما در زبان پایتون فارغ از زیباسازی کدها این موضوع برای بلاک بندی توابع، شرطها، کلاسها و… استفاده میشود. یکی از مشکلات اصلی که توسعهدهندگان مختلف داشتند این بود که از تعداد متفاوتی space و یا tab برای کنارهگذاری استفاده میکردند. به همین دلیل در کدها یک حالت ناسازگاری بوجود آمد. PEP 8 در بیانیه خود گفته که برای کنارهگذاری از ۴ space استفاده کنید. همچنین ذکر کرده که بهتر است استفاده از tab را متوقف کنید. اگر در اسکریپتهای پایتونی خود برای یک کنارهگذاری از ترکیب این دو حالت استفاده کنید با خطا مواجه خواهید بود.
TabError: inconsistent use of tabs and spaces in indentation
PEP 8 همچنین در ارتباط با نوشتن دستورات و ورودی توابعی که طول زیادی دارند قواعدی بیان کرده:
براساس قواعد کنارهگذاری کدها را باید به صورت زیر بنویسید:
# Aligned with opening delimiter.
foo = long_function_name(var_one, var_two,
var_three, var_four)
# Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
# Hanging indents should add a level.
foo = long_function_name(
var_one, var_two,
var_three, var_four)
حالت خلاف قواعد:
# Arguments on first line forbidden when not using vertical alignment.
foo = long_function_name(var_one, var_two,
var_three, var_four)
# Further indentation required as indentation is not distinguishable.
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
حداکثر طول خطوط: در قواعد PEP 8 حداکثر کاراکترهایی که در یک خط میتوانند حضور داشته باشند برابر ۷۹ کاراکتر است. البته این مقدار برای خطوطی است که در آنها از المانهای برنامهنویسی استفاده میشود. اما برای کامنتها و رشتههای مستندات شما باید از ۷۲ کاراکتر در هر خط استفاده کنید.
Import: در قواعد PEP 8 گفته شده که ماژولها باید در خطوط جداگانه import شوند. اگر هم قرار است که از یک ماژول توابع و کلاسهای مختلفی را import کنید نباید در هر خط بیشتر از ۸ مورد وجود داشته باشد.
استاندارد PEP 8:
import numpy
import pandas
import matplotlib
خلاف استاندارد PEP 8:
import numpy, pandas, matplotlib
برای مطالعه بیشتر در ارتباط با مستندات PEP 8 میتوانید محتویات این لینک را مطالعه کنید.
۳. ماژولارنویسی
حال بیایید در ارتباط با نوشتن به صورت ماژولار صحبت بکنیم. حالتی که در آن سعی میشود تا از تکرار کردن کدها خودداری کنیم. برای اینکه بتوانید کدهای ماژولاری داشته باشید نیاز است که آنها را در قالبی کوتاه و قابل درک ارائه کنید. این کار باعث میشود که خوانایی کد افزایش پیدا کند. برای اینکه بتوانید کدهایتان را به صورت ماژولار بنویسید نیاز است که به صورت مناسب و مداوم از توابع و کلاسها استفاده کنید.
یکی از دلایل استفاده از توابع نیز دقیقا همین موضوع است. استفاده از توابع باعث میشود که ما کدهایمان را چندین بار تکرار نکنیم.
مزایای کدنویسی به صورت ماژولار را میتوان در زیر مشاهده کرد:
- خوانایی بالاتر برای کدها
- کاهش کدهای تکراری و در نتیجه کم شدن حجم کدها
- استفاده بهینه از حافظه و متغیرها
- کم شدن زمان دیباگینگ
۴. برنامهنویسی شئگرا
برنامهنویسی شئگرا یکی از پارادیمهای برنامهنویسی است. در این شیوه از برنامهنویسی ما روی اشیاء و کلاسها تمرکز داریم. ممکن است برنامهنویسی شئگرا سریعترین متد در زمان اجرای برنامه نباشد اما مطمئنا میتواند به ما قابلیتهای بسیار زیادی را در مدیریت برنامه بدهد.
برای پیادهسازی یک برنامه در حالت شئگرا ما از مفاهیمی مانند کلاس و متد استفاده میکنیم. هر کلاس میتواند چندین نمونه و البته چندین متد و خاصیت را در خود داشته باشد.
استفاده از برنامهنویسی شئگرا باعث میشود که کدهای ما ماژولار باشند و در نتیجه استفادهپذیری به صورت مجدد از آنها بالا برود.
پایتون به صورت پیشفرض یک زبان برنامهنویسی شئگرا است.
۵. کامنت و مستندنویسی
کامنت بخشی از کد است که توسط مفسر اجرا نمیشود. به این دلیل از کامنت استفاده میشود که راهنمایی برای کدها باشد. در پایتون برای نوشتن توضیح در ارتباط با کدها ما از سه حالت استفاده میکنیم:
- کامنت یک خطی
- کامنت چند خطی
- DocString یا رشته مستندات
مثال اول
# Define a List of Brands
brands = ['Apple', 'Google', 'Netflix', 'Amazon', 'Ford']
مثال دوم
# Welcome to Python Programming
# This is a dynamically typed object-oriented language
# Let’s define some brand names
brands = ['Apple', 'Google', 'Netflix', 'Amazon', 'Ford']
مثال سوم
def find_odd_nums(num_list):
"""
This function is used to find and list out the odd numbers from a given list
It takes a list of numbers as argument
It returns a list of odd numbers
"""
return [num for num in num_list if num % 2 != 0]
در مثال اول ما از کامنت یک خطی استفاده کردهایم که در آن سعی داریم تا تنها یک توضیح کوتاه را ارائه کنیم.
در مثال دوم چند خط کامنت داریم که توضیحات کمی بیشتری نسبت به گزینه اول را ارائه میکند.
در مثال سوم که ما از Docstring استفاده میکنیم باید بدانید که بهتر است تنها در صورتی که یک کلاس یا تابع را ایجاد کردید از این حالت استفاده کنید. DocString برای ارائه توضیحات کامل در ارتباط با کارایی یک کلاس یا تابع استفاده میشود.
۶. استفاده از محیطهای مجازی
پایتون زبانی است که نسخههای مختلفی از آن منتشر شده و همچنین کتابخانههای بسیار زیادی در نسخههای متفاوت دارد. برنامههای پایتونی که از یکسری کتابخانه استفاده میکنند بعدا برای اجرا شدن به این کتابخانهها نیاز خواهند داشت. به همین دلیل بسیار مهم است که موارد نیازمندی هر پروژه را در داخل پروژه اعلام کنید. از طرفی دیگر ممکن است برای اجرا یک برنامه به پایتون 3.7 نیاز باشد اما فردی که بعد از دانلود پروژه قصد اجرای آن را دارد از پایتون 3.5 استفاده کند. به همین دلیل مهم است که در خود پروژه نیازمندی به پایتون 3.7 را بیان کنید.
به همین دلیل بود که محیطهای مجازی ارائه شدند. هر محیط مجازی شامل یک محیط توسعه مستقل است که در آن مفسر مستقل پایتونی همراه با کتابخانه های مختلف با نسخههای متفاوت وجود دارد. در این حالت هر محیط مجازی میتواند یکسری نیازمندهای مستقل داشته باشند که در زمان اجرا به کاربر از طریق یک فایل requirements.txt گفته میشود.
این فایل شامل تمام مواردی میشود که برای اجرای پروژه نیاز است.
برای نصب تمام این موارد نیازی نیست که به صورت جداگانه عمل کنید. میتوانید به صورت مستقیم دستور pip install requirements.txt را اجرا کنید تا همه موارد نصب شود.
برای ایجاد این فایل میتوانید از دستور pip freeze > requirements.txt استفاده کنید.
در پایان
در این مطلب سعی کردیم تا شما را با ۶ مورد از بهترین رویکردهای پایتونی آشنا کنیم که مطمئنا در روال توسعه نرمافزار به آنها نیاز پیدا خواهید کرد.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید