آشنایی با ذن پایتون: ۱۹ دستورالعمل برای کدنویسی بهتر

شاید جملاتی که در پوستر کوئرا کالج توی لوگوی پایتون نوشته شده توجه شما رو هم به خودش جلب کرده باشه:

پوستر کوئراکالج دوره آموزشی پایتون پیشرفته
پوستر کوئراکالج دوره آموزشی پایتون پیشرفته

به این جمله‌ها ذن پایتون (Zen of Python) میگن! ذن پایتون در واقع مجموعه‌ای از ۲۰ قاعده راهنمای نوشتن کد هست که در سال ۱۹۹۹ توسط Tim Peters، یک توسعه دهنده نرم افزار شناخته‌شده در جامعه پایتون، نوشته شدن.

> اولین نکته جالب توجه درباره ذن پایتون این هست که Tim فقط ۱۹ جمله از این ۲۰ جمله رو گفته و جای جمله ۲۰ام رو خالی گذاشته تا خالق زبان پایتون، Guido Van Rossum، بتونه بیستمین اصل رو منتشر کنه! این اصل ۲۰م تا به امروز منتشرنشده باقی مونده!

> نکته جالب دوم اینه که با وارد کردن یک کد ساده در مفسر پایتون، این قواعد به نمایش در میاد! کافیه که داخل python shell این عبارت رو وارد کنیم:

import this

و یا این که داخل ترمینال، فرمان زیر رو اجرا کنیم:

python -m this

قواعد ذن پایتون که بعضی از اونها در پوستر کوئراکالج هم اومدن، به شکل خروجی زیر به نمایش در میاد:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

ترجمه از این اصول هم در صفحه ویکی‌پدیای فارسی‌ اون موجوده.

> نکته سوم اینکه به دلیل این که این قواعد در دل پایتون مخفی شدن بهش جُک نهان (Easter Egg) هم میگن. اماحالا نکته خنده دار یا جوکش کجاست؟ بیاید با هم یک نگاهی به سورس کد this بندازیم!

https://gist.github.com/Meysam-/a8bce53e1c184f5ae2a915241bd1c71d#file-this-py


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

قاعده دوم ذن پایتون به ما میگه:

Explicit is better than implicit. (بیان صریح بهتر از ضمنی است)

ولی ما این قواعد رو با دستور import this پرینت کردیم! طبق دیکشنری آکسفورد، Explicit (صریح) و Implicit (ضمنی) اینطوری معنی شدن:

Explicit: Stated clearly and in detail, leaving no room for confusion or doubt.
Implicit: Suggested though not directly expressed.

با این تعاریف شما قضاوت کنید که این شیوه نمایش دادن قواعد ذن یک شیوه Explicit هست یا Implicit.

قاعده سوم و چهارم میگن:

Simple is better than complex. Complex is better than complicated. (ساده بهتر از پیچیده است. پیچیده بهتر از خیلی پیچیده (افتضاح) است)

بدون شرح. کاملا مشخصه که سورس کد this ساده نوشته شده. ;)

قاعده هفتم به ما میگه:

Readability counts. (خوانایی مهم است)

به نظرتون سورس کد this خواناست؟ کل نوشته رو به روش ROT13 رمز کرده و اسم متغیر ها هم کاملاً خواناست! :))

اما شاید خود کد this از قواعد خودش مستثنا باشه. اما این نمی‌تونه درست باشه چون خود ذن به ما توی قاعده هشتم میگه:

Special cases aren't special enough to break the rules. ( موارد ویژه به اندازه ای ویژه نیستند که به خاطر آن ها بتوان قوانین را شکست)

تو قاعده سیزده‌ام نوشته شده:

There should be one-- and preferably only one --obvious way to do it. ( برای انجام این کار باید یک (ترجیهاً یک) روش آشکار وجود داشته باشد)

دیگه به نظرم لازم به توضیح نیست :))

همه قواعد ذن پایتون در قالب یک تصویر
همه قواعد ذن پایتون در قالب یک تصویر

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

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