نیاز به کمی Refactoring
اهمیت: مهم نوع: درخواست قابلیت جدید شماره نگارش: 0.1.1
ضمن تشکر از شما بابت آغاز این پروژه،
در نگاه اول کنترلر FileManager کمی شلوغ به نظر می‌رسد. این کارها را می‌شود جهت بالا بردن کیفیت کد انجام داد:
- Iconlist و GetIcon به یک کلاس جدا منتقل شوند. ترجیحا به صورت یک متد الحاقی. ضمنا نیازی نیست تا اصلا آیکون‌ها تعریف شوند. پسوند فایل را پیدا کنید. یک پوشه تصویری بر اساس ext.pngها درست کنید. Ext در اینجا انواع و اقسام پسوندها است. به این ترتیب اگر پسوندی موجود بود از این پوشه بخواند، نبود یک فایل پیش فرض را نمایش دهد.
- region helper به کلاس دیگری که شامل یک سری متد الحاقی برای کار با فایل‌ها است منتقل شود.
- هر کدام از regionهای دیگر هم قابل انتقال هستند به کنترلرهای کوچکتر و با تعداد سطر کمتر. به این ترتیب نگهداری ساده‌تری در طول زمان خواهند داشت.
- baseLocation = HttpRuntime.AppDomainAppPath بهتر است در وب کانفیگ قابل تنظیم باشد. از این جهت که عموما یک سری پوشه و زیر پوشه خاص است که باید قابل مرور باشند نه کل برنامه و نه همه جای سیستم.
- پیاده سازی‌های داخل اکشن متدها را به یک کلاس سرویس منتقل کنید. اکشن متدها باید مصرف کننده باشند با حداقل پیاده سازی در حد فراخوانی متدهای سرویس مثلا کار با فایل‌ها و پوشه‌ها.
  • #
    ‫۱۱ سال و ۸ ماه قبل، چهارشنبه ۱۱ بهمن ۱۳۹۱، ساعت ۱۳:۲۱
    از اینکه به این پروژه توجه کردید از شما ممنونم امیدوارم با راهنمایی‌ها شما کیفیت پروژه و کیفیت کار خودم رو بالا ببرم. 
    -  پیشنهاد شما اینه پوشه آیکون‌ها که به ازای هر پسوند یک عکس وجود داره اسکن بشه و متناظر با پسوند یه عکس برگردونه بشه ، برای اینکه به ازای هر درخواست یکبار پوشه اسکن نشه باید یک لیست یا دیتابیس و یا کش درست کنیم. موردی که من لحاظ کردم اینه که اگر خواستیم به ازای ده‌ها پسوند فایل تصویری یک آیکون نشون داده بشه نیاز به ده آیکون تکراری وجود نداشته باشه هم پوشه آیکون‌ها ممکنه خیلی شلوغ بشه (مثلا هزار پسوند) و هم اینکه مرورگر کاربر به ازای هر پسوند باید یک کانکشن به سایت بزنه .
    - برایrefactoring  و سرویس چون از حالت آموزش شروع کردم گفتم در مراحل بعد refactoring  رو انجام بدم ولی وقتی شما ایراد گرفتید حتما باید درست کنم. 
    - اگر بدنه کنترل‌ها رو با سرویس سبک کنم کافی نیست ؟اگه بخوام کنترلر  FileManager رو به چند کنترلر کوچکتر کنم برای نام گذاری چه روشی پیشنهاد می‌کنید که از خوانایی برنامه کم نشه؟ 
    • #
      ‫۱۱ سال و ۸ ماه قبل، چهارشنبه ۱۱ بهمن ۱۳۹۱، ساعت ۱۳:۳۹
      - به ازای هر پسوند، یک فایل تصویری ساده از سایت خوانده خواهد شد. پردازش سمت سرور به ازای هر صفحه فقط یکبار است.
      - استفاده از region بجای جداسازی منطق کدها در کلاس‌های مختلف نباید انجام شود. اصل SRP یا تک مسئولیتی کلاس‌ها به این ترتیب فراموش خواهد شد. کلاسی که لیست آیکون‌ها را تهیه می‌کند و هم توابع کمکی کار با فایل‌ها را به همراه دارد و هم کار پردازش درخواست‌های رسیده را انجام می‌دهد، مسئولیت‌های زیادی را عهده دار شده است. این‌ها باید به کلاس‌های کوچکتری خرد شوند.
      نامگذاری هم سلیقه‌ای است. هر طور که مایل هستید تفاوتی نمی‌کند.