<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Mohammadmahdi Mirzaei</title><link>https://virgool.ir/feed/@mirzaeimahdi409</link><description></description><language>fa</language><pubDate>2026-11-12 12:18:20</pubDate><image><url>https://files.virgool.ir/upload/users/1745833/avatar/avatar.png</url><title>Mohammadmahdi Mirzaei</title><link>https://virgool.ir/@mirzaeimahdi409</link></image><item><title>مواردی از اصول و رویه‌های دو چهارچوب</title><link>https://virgool.ir/@mirzaeimahdi409/مواردی-از-اصول-و-رویه-های-دو-چهارچوب-kmhziwuneobi</link><description>خب سلام،‌ این اولین پستی هستش که خواهم گذاشت و مربوط به درس مهندسی نرم افزار هستش و چون به نمره امتیازی درس نیاز داشتم انگیزه‌ای شد تا تحقیق درس رو داخل ویرگول نیز به اشتراک بذارم.مفاهیم حوزه‌ی دانش مهندسی نرم‌افزار را می‌توان به چهار دسته‌ی زیر تقسیم کرد:۱. اصل (principle): اصل‌ها مفاهیم درشت‌دانه‌ای هستند که با گذر زمان بسیار کم تغییر می‌کنند. همچنین تمام حوزه‌ی دانش مهندسی نرم‌افزار بر آن‌ها بنا شده است، برای مثال انتزاع (abstraction)، استفاده مجدد (reuse)، چسبندگی (cohesion)، جفتگری (coupling) و اصول SOLID، چند اصل مهم در مهندسی نرم‌افزار هستند.۲. رویه (practice): رویه‌ها، خط‌مشی‌هایی هستند که کارابودن آن‌ها با توجه به تجربیات قبلی در شرایط مشخصی نشان داده شده است،‌برای مثال ((توجه به چسبندگی تا چگونگی در جمع آوری نیازمندی‌ها)) یک رویه است.۳. فن (technique): فن‌ها روش‌های حل مسئله‌ای هستند که در فرآیند ایجاد نرم‌افزار استفاده می‌شوند، مانند آزمون واحد و مدل‌سازی مورد استفاده (use case modeling).۴. ابزار (tool): ابزار‌ها محصولات به‌روزی هستند که استفاده از اصول و رویه‌ها را آسان می‌کنند.حال بعد از توضیحات بالا می‌خواهیم برای دو چهارچوب React و Django، ده مورد از اصول یا رویه‌هایی را که این دو چهارچوب باعث رعایت آن‌ها می‌شود را بیان کنیم.در زیر در ابتدا به چهارچوب برنامه‌نویسی سطح بالا React می‌پردازیم.۱. ساختار مولفه‌ای (Component Structure):اصل: انتزاع (Abstraction)توضیح: React از ساختار مولفه‌ای برای جداسازی رابط کاربری به بخش‌های کوچک و مستقل استفاده می‌کند. هر مولفه شامل منطق و ظاهر بصری خود است که باعث افزایش خوانایی و سهولت در نگهداری کد می‌شود.مزیت: افزایش قابلیت استفاده مجدد، خوانایی و نگهداری کدمثال:۲. مدیریت حالت (State Management):اصل: جداسازی دغدغه‌ها (Separation of Concerns)توضیح: React از Hookها و State برای مدیریت وضعیت و پویایی رابط کاربری استفاده می‌کند. این امر باعث جداسازی منطق رابط کاربری از منطق برنامه و افزایش وضوح کد می‌شود.مزیت: افزایش وضوح و پویایی رابط کاربریمثال:۳. گردش داده (Data Flow):اصل: unidirectional data flowتوضیح: در React، داده‌ها از طریق props از مولفه‌های پدر به مولفه‌های فرزند منتقل می‌شوند. این امر باعث می‌شود که ردیابی و اشکال‌زدایی داده‌ها در برنامه آسان‌تر شود.مزیت: سهولت در ردیابی و اشکال‌زداییمثال:۴. کامپوننت‌های تابعی (Functional Components):اصل: statelessnessتوضیح: کامپوننت‌های تابعی در React بدون نیاز به مدیریت state، رابط کاربری را بر اساس props دریافتی رندر می‌کنند. این امر باعث افزایش سادگی و تست‌پذیری کد می‌شود.مزیت: افزایش سادگی و تست‌پذیریمثال:۵. هوک‌ها Hook:اصل: Composition over inheritanceتوضیح: Hookها به عنوان توابعی هستند که این امکان را می‌دهند بدون نیاز به تغییر ساختار مولفه، از منطق و state اضافی استفاده کنیم. این امر باعث افزایش انعطاف‌پذیری و قابلیت استفاده مجدد کد می‌شود.مزیت: افزایش انعطاف‌پذیری و قابلیت استفاده مجدد کدمثال:۶. تست‌نویسی (Testing):اصل: Test-driven development TDDتوضیح: تست‌نویسی بخش جدایی‌ناپذیر از توسعه React است. کتابخانه‌های تست مانند Jest و React Testing Library کمک می‌کنند تا رابط کاربری خود را به طور کامل تست کنیم و از کیفیت کد خود اطمینان حاصل کنیم.مزیت: افزایش اعتماد به نفس و کیفیت کدکتابخانه‌های تست: Jest, React Testing Library۷. استایل‌دهی (Styling):اصل: Separation of concernsتوضیح: React از روش‌های مختلفی برای استایل‌دهی به رابط کاربری پشتیبانی می‌کند. CSS-in-JS و styled-components دو روش محبوب برای جداسازی منطق استایل‌دهی از منطق رابط کاربری هستند.روش‌های استایل‌دهی: CSS-in-JS, styled-components۸. دسترس‌پذیری (Accessibility):اصل: Inclusive designتوضیح: React امکان این را می‌دهد رابط‌های کاربری دسترس‌پذیری را برای همه کاربران، صرف نظر از توانایی‌هایشان، طراحی کرد. ابزارهایی مانند axe و react-axe کمک می‌کنند تا مشکلات دسترس‌پذیری را در رابط کاربری خود شناسایی و رفع کنیم.ابزار‌ها: axe, react-axe۹. بهینه‌سازی عملکرد (Performance Optimization):اصل: Performance profilingتوضیح: React ابزارهای مختلفی برای بهینه‌سازی عملکرد رابط کاربری ارائه می‌دهد. React Developer Tools و Chrome DevTools کمک می‌کنند تا گلوگاه‌های عملکرد را شناسایی کنیم.ابزار‌ها: React Developer Tools, Chrome DevTools۱۰. استقرار (Deployment):اصل: Continuous integration and continuous delivery CI/CDتوضیح: React از ابزارهای CI/CD مانند GitHub Actions و Vercel برای استقرار خودکار برنامه پشتیبانی می‌کند. این امر کمک می‌کند تا فرآیند استقرار را سریع‌تر و قابل اعتمادتر کنیم.ابزارها: GitHub Actions, Vercelحال به چهارچوب برنامه‌نویسی سطح بالا Django می‌پردازیم.۱. DRY - Don&#39;t Repeat Yourself:اصل: اجتناب از تکرار کدتوضیح: Django با استفاده از TemplateTags، Template Inheritance و سایر ابزارها کمک می‌کند تا از تکرار کد در قالب‌ها و views خود اجتناب کنیم.مزیت: افزایش خوانایی، سادگی و نگهداری کدمثال: استفاده از TemplateTags برای رندر کدهای تکراری در قالب‌ها۲. KISS - Keep It Simple, Stupid:اصل: سادگی و وضوحتوضیح: Django با تشویق به استفاده از توابع و کلاس‌های کوچک و مختص به یک وظیفه خاص، کمک می‌کند تا کد خود را ساده و قابل فهم نگه داریم.مزیت: استفاده از توابع و کلاس‌های کوچک و مختصرمثال: استفاده از توابع و کلاس‌های کوچک و مختصر۳. SOLID:اصل: مجموعه‌ای از اصول طراحی شیء‌گراتوضیح: Django با ارائه الگوهای طراحی و ابزارهای Dependency Injection، کمک می‌کند تا از اصول SOLID در کد خود استفاده کنیم.مزیت: افزایش انعطاف‌پذیری، قابلیت استفاده مجدد و خوانایی کدمثال: استفاده از الگوهای طراحی مانند SRP - Single Responsibility Principle۴. Loose Coupling:اصل: وابستگی‌های کم بین اجزای مختلف برنامهتوضیح: Django با استفاده از Dependency Injection و الگوهای طراحی مانند SRP، کمک می‌کند تا وابستگی‌های بین اجزای برنامه خود را کاهش دهیم.مزیت: افزایش انعطاف‌پذیری، تست‌پذیری و نگهداری کدمثال: استفاده از Dependency Injection برای تزریق وابستگی‌ها۵. High Cohesion:اصل: انسجام و تمرکز هر بخش از کد روی یک وظیفه خاصتوضیح: Django با تشویق به استفاده از توابع و کلاس‌های مختص به یک وظیفه خاص، کمک می‌کند تا کد خود را منسجم و قابل فهم نگه داریم.مزیت: افزایش خوانایی، سادگی و نگهداری کدمثال: استفاده از توابع و کلاس‌های مختص به یک وظیفه خاص۶. Don&#39;t Look Back:اصل: عدم وابستگی به کدهای قدیمی و منسوختوضیح: Django با ارائه Backward Compatibility و Migrationها، کمک می‌کند تا کد خود را به آسانی ارتقا دهیم و از وابستگی به کدهای قدیمی و منسوخ اجتناب کنیم.مزیت: افزایش سرعت توسعه و ارتقای کدمثال: استفاده از Backward Compatibility و Migrationها در Django۷. Logging:اصل: ثبت اطلاعات مربوط به عملکرد برنامهتوضیح: Django با ارائه Logging Framework قدرتمند، کمک می‌کند تا اطلاعات مربوط به عملکرد برنامه خود را ثبت و ضبط کنیم و به آسانی مشکلات آن را عیب‌یابی کنیم.مزیت: سهولت در اشکال‌زدایی و عیب‌یابیمثال: استفاده از Django Logging Framework۸. Testing:اصل: تست‌نویسی جامع برای تضمین کیفیت کدتوضیح: Django با ارائه Django Test Framework، کمک می‌کند تا تست‌های جامع و کاملی برای برنامه خود بنویسیم و از کیفیت کد خود اطمینان حاصل کنیم.مزیت: افزایش اعتماد به نفس و پایداری برنامهمثال: استفاده از Django Test Framework۹. Documentation:اصل: مستندسازی دقیق و کاملتوضیح: Django با ارائه ابزارهای Documentation Generator، کمک می‌کند تا مستندسازی دقیق و کاملی برای برنامه خود ایجاد کنیم.مزیت: سهولت در یادگیری و استفاده از برنامهمثال: استفاده از Django Documentation Generator۱۰. Deployment:اصل: استقرار آسان و قابل اعتمادتوضیح: Django با ارائه Deployment Tools و پشتیبانی از پلتفرم‌های مختلف، کمک می‌کند تا برنامه خود را به آسانی و به طور قابل اعتماد استقرار دهیم.مزیت: افزایش سرعت و سهولت در ارائه برنامه به کاربرانمثال: استفاده از Django Deployment Tools</description><category>Mohammadmahdi Mirzaei</category><author>Mohammadmahdi Mirzaei</author><pubDate>Fri, 09 Feb 2024 21:58:54 +0330</pubDate></item></channel></rss>