سلام،
هدفمون از سری «موثرتر کار کنیم» این هست که بتونیم زمانمون رو از کارهای زمانگیر و کمعمق - که امکان automate کردنشون وجود داره - برای کارهای مهمتر ذخیره کنیم. توی این قسمت میخوایم با یک ابزار خیلی خوب آشنا بشیم که نگرانی ما رو نسبت به کد استایلمون کمتر کنه و زمان بدست اومده رو ببریم جای مهمتری به کار ببریم.
پایتون به خاطر سادگیاش خیلی از آدمها رو به خودش جذب میکنه. اما یک مسالهای که وجود داره این هست که با وجود داکیومنت خوبی مثل PEP8 بازم بین توسعهدهندهها اختلاف نظر زیادی، راجعبه کداستایل، وجود داره.
به همین خاطر ابزارهای مختلفی برای این کار ساخته شدند که یک گزارش راجعبه بخشهایی که کداستایل فایل مطابق با PEP8 نبوده میدن.مثلاً فلانجا باید newline به کار بره و مثالهای مختلف دیگهای که باهاشون آشنا هستیم.
از این دسته از ابزارها میشه به پروژههای زیر اشاره کرد:
ولی چی میشد که اگر یک Code Formatter وجود داشت که خودش فایل رو میگرفت و مشکلات رو هم خودش برطرف میکرد؟
مهمترین ویژگیای این برنامه هم قطعی بودن deterministic هست. یعنی فارغ از اینکه چندبار روی یک پروژه اجراش کنیم همیشه یک خروجی یکسان به ما بده. اینجوری خیلی قابل اتکاتر میشه!
«بروزرسانی شده»
به این دسته از ابزارها که کد رو به عنوان ورودی میگیرند و سعی در درست کردن فرمت اون میکنند اصطلاحاً Auto code formatter گفته میشه.
از Auto code formatter های بنام پایتون میشه به موارد زیر اشاره کرد:
ما توی این سری، تصمیم گرفتیم که فقط به Black بپردازیم، چون تقریباً ویژگی که میخواهیم رو داره و بنظر من سادگی Black کار با اون رو راحتتر و دلچست تر میکنه.
مثل همیشه اول باید نصباش کنیم:
خب حالا یک برنامه به Command-lineتون اضافه شده که میتونید ازش استفاده کنید، فرض کنید قطعه کد پایین رو داریم و میخوایم ببنیم بلک چجوری میتونه به ما کمک کنه:
خب، حالا کافیه به بلک بگیم که فایل ما رو اصلاح کنه:
خروجی بالا، به ما میگه که بلک فایل ما رو reformat کرده (به صورت پیشفرض بلک فایلهای شما رو تغییر میده، مگر اینکه بهش بگید اینکار رو نکنه!).
خب، حالا ببنیم که کدمون چه تغییری کرده:
بلک، یک آپشن خیلی خوب هم داره که باعث میشه فقط کد رو بررسی کنه و اگر چیزی برای تغییر باشه، خطا بده و بره بیرون. این ویژگی باعث میشه بتونیم بلک رو به ابزارهای CI به راحتی وصل کنیم.
اگر هم نیاز دارید که اول ببینید بلک قرار هست با فایل ورودی چیکار کنه، میتونید به صورت پایین ازش استفاده کنید:
بلک خیلی به راحتی میتونه به Editorهای مختلف وصل بشه و تقریبا داکیومنت جامعی برای این کار داره و یه خبر خوب دیگه این هست که یک magic command هم هست که باعث میشه بتونیم تویJupyter Notebook هم ازش بتونیم استفاده کنیم.
بلک ممکن هست یکم با چیزی که توی ذهن ما راجعبه استاندارد بودن کداستایل داریم متفاوت باشه؛ اما روی هم رفته صرف نظر کردن از چند مورد مخالفت ساده، ارزش رسیدن به یک چیز جامع رو داره!
اما بلک تا حدودی قابل کانفیگ هم هست، فقط باید یادمون نره که هدف بلک این هست که به یک فرمت جامع بین افراد مختلف برسیم پس انتظار چیزه خیلی پیچیدهای از این configuration نباید داشت. در پایان، کد استایلِ کد مهم هست، اما کاری است زمانبر، پس تا بلک هست بذاریم اون انجامش بده!
https://medium.com/3yourmind/auto-formatters-for-python-8925065f9505
https://news.ycombinator.com/item?id=17155048