Clean Code and Pep8
Clean Code and Pep8
از دستورهای شرطی با ساختار ساده و واضح استفاده شود؛ از شرطهای چندگانه پیچیده اجتناب شود. •
کامنتها به زبان انگلیسی نوشته شوند و کوتاه اما توصیفی باشند. •
ساختار پروژه از الگوهای استاندارد مانند MVCیا MTVپیروی کند (.در صورت استفاده از) Django •
نام متغیرها و توابع از بهکار بردن مخففهای غیرمعمول خودداری شود. •
متغیرهای سراسری در سطح ماژول به درستی نامگذاری شوند و از حرف بزرگ شروع شوند. •
نام متغیرها و توابع باید معنادار و گویا باشند تا عملکرد آنها مشخص باشد. •
در نامگذاری توابع از افعال استفاده شود مثالً )(get_userبه جای )(user_get •
3.ساختار ماژولها
تعداد خطوط هر فایل کمتر از 500خط باشد و فایلهای بسیار بزرگ به ماژولهای کوچکتر شکسته شوند. •
از پیادهسازی کدهای اضافی که باعث افزایش پیچیدگی میشوند ،خودداری شود. •
ماژولها باید قابلیت استفاده مجدد داشته باشند و هیچکدام نباید وابستگیهای پیچیدهای به یکدیگر داشته باشند. •
4.عملکرد توابع
هر تابع یک کار مشخص انجام دهد و وظایف مختلف به توابع دیگر واگذار شود. •
از آرگومانهای پیشفرض برای ساده کردن توابع استفاده شود. •
5.مدیریت استثناها
از ارثبری کالسهای خطا برای خطاهای خاص پروژه استفاده شود. •
در بلوکهای exceptفقط خطاهای خاصی که انتظار میروند مدیریت شوند. •
از ارثبری از کالسهای خطا برای دستهبندی خطاها استفاده شود تا مدیریت آنها سادهتر باشد. •
خروجیها استانداردسازی شوند و به فرمت خاصی مانند JSONیا XMLبرگردانده شوند. •
از کتابخانههای معتبر برای تبدیل دادهها به فرمتهای مشخص استفاده شود. •
اطمینان حاصل شود که دادهها قبل از پردازش به درستی اعتبارسنجی شدهاند. •
7.اصولSOLID
از الگوی Dependency Injectionدر جایی که منطقی است استفاده شود. •
در اصل ، Interface Segregationکالسها فقط توابع مورد نیازشان را استفاده کنند. •
از اصل Open/Closedبرای توسعه بدون تغییر کالسهای موجود استفاده شود. •
از اصل Liskov Substitutionبرای اطمینان از قابلیت تعویض کالسها استفاده شود. •
8.پیادهسازیPEP 8
از فاصلهگذاری استاندارد برای جدا کردن بخشهای مختلف کد استفاده شود. •
از Literalبرای محدود کردن مقدارهای خاص ورودیها استفاده شود. •
تایپهای مربوط به متغیرها و توابع بهطور صحیح و دقیق تعریف شوند. •
10.عملکرد)(Performance
کد باید بهطور منظم و مستمر برای بهینهسازی عملکرد تحلیل شود. •
از ساختارهای داده مناسب برای افزایش سرعت پردازش استفاده شود. •
11.مدیریت وابستگیها
از نصب وابستگیها از طریق pipو نگهداری آنها در نسخههای مشخص استفاده شود. •
12.امنیت کد
از الگوریتمهای رمزنگاری قوی مانند bcryptبرای هش کردن رمز عبور استفاده شود. •
از تکنیکهای امنیتی برای جلوگیری از حمالت CSRFو XSSاستفاده شود. •
13.ماژوالر بودن و استفاده مجدد
کالسهای عمومی و انتزاعی برای اشتراکگذاری منطق مشترک ایجاد شوند. •
هر ماژول باید قابل استفاده مجدد باشد و کمترین وابستگی را به دیگر ماژولها داشته باشد. •
از connection poolingبرای مدیریت بهتر اتصاالت پایگاه داده استفاده شود. •
کوئریهای پیچیده باید بهینهسازی شوند تا تأثیر منفی روی عملکرد نداشته باشند. •
از تراکنشها برای مدیریت تغییرات دادهها بهطور امن استفاده شود. •
ساختار الگها شامل شناسههای کاربری و شماره تراکنشها برای ردیابی بهتر باشد. •
سطوح مختلف الگ مانندwarning ، infoو errorبه درستی استفاده شوند. •
الگها باید بهطور منظم بررسی و از مشکالت بالقوه آگاه شود. •
از ابزارهای مدیریت الگ مانند ELK stackیا Splunkاستفاده شود. •
16.مستندسازی)(Documentation
مثالهایی از سناریوهای واقعی برای تست APIها در مستندات آورده شوند. •
توضیحات دقیق برای نحوه استفاده از APIها و بخشهای مختلف پروژه داده شود. •
راهنمای نصب و راهاندازی پروژه باید بهصورت واضح و کامل ارائه شود. •
ابزارهایی مانند pre-commit hooksبرای بررسی خودکار کیفیت کد پیش از commitاستفاده شوند. •
فایل .gitignoreبه درستی پیکربندی شود تا فایلهای غیرضروری وارد کنترل نسخه نشوند. •
محیط توسعه باید مشابه محیط تولید باشد تا اطمینان حاصل شود که کد در هر دو محیط بهدرستی اجرا میشود. •
از ابزارهای lintingمانند flake8-bugbearبرای پیدا کردن مشکالت خاص استفاده شود. •
از ابزارهای تست کد مانند SonarQubeبرای بررسی کیفیت استفاده شود. •
از Task Schedulerمانند Celeryبرای اجرای وظایف سنگین بهطور پسزمینه استفاده شود. •
کد باید بهطور منظم بررسی و برای بهبودهای آینده بهینه شود. •
عملیاتهایی که به منابع زیادی نیاز دارند باید به شیوهای غیرمستقیم و ناهمزمان انجام شوند. •
هر تغییر در کد باید مستند شود تا مشکالت آینده به راحتی شناسایی شوند •
ساختار الگها شامل شناسههای کاربری و شماره تراکنشها برای ردیابی بهتر باشد. •
سطوح مختلف الگ مانند warning ،infoو errorبه درستی استفاده شوند. •
ساختار الگها شامل شناسههای کاربری و شماره تراکنشها برای ردیابی بهتر باشد. •
21.مستندسازی)(Documentation
مثالهایی از سناریوهای واقعی برای تست APIها در مستندات آورده شوند. •
مثالهایی از سناریوهای واقعی برای تست APIها در مستندات آورده شوند. •
ابزارهایی مانند pre-commit hooksبرای بررسی خودکار کیفیت کد پیش از commitاستفاده شوند. •
فایل .gitignoreبه درستی پیکربندی شود تا فایلهای غیرضروری وارد کنترل نسخه نشوند. •
ابزارهایی مانند pre-commit hooksبرای بررسی خودکار کیفیت کد پیش از commitاستفاده شوند. •
از ابزارهای lintingمانند flake8-bugbearبرای پیدا کردن مشکالت خاص استفاده شود. •
از ابزارهای lintingمانند flake8-bugbearبرای پیدا کردن مشکالت خاص استفاده شود. •
25.بهینهسازی و نگهداری
از ابزارهای تست بالدرنگ مانند pytest-watchبرای اجرای خودکار تستها استفاده شود. •
از ابزارهای تست بالدرنگ مانند pytest-watchبرای اجرای خودکار تستها استفاده شود. •
28.مهاجرتها و بروزرسانیها
یک فرآیند Rollbackمشخص برای مهاجرتهای ناسازگار وجود داشته باشد. •
ابزارهایی برای بررسی ناسازگاری نسخههای جدید وابستگیها استفاده شوند. •
یک فرآیند Rollbackمشخص برای مهاجرتهای ناسازگاری وجود داشته باشد. •
ابزارهایی برای بررسی ناسازگاری نسخههای جدید وابستگیها استفاده شوند. •
29.رعایت اصول DevOpsوCI/CD
فرآیند Branch Namingبهصورت دقیق تعریف شود (مثالً feature/, bugfix/). •
فرآیند Branch Namingبهصورت دقیق تعریف شود (مثالً feature/, bugfix/). •
یک فایل READMEکامل با دستورالعملهای اجرا و تست پروژه ارائه شود. •