انجمن برنامه نویسان البرز

تبلیغات

درس دوم – چطور کدها را اصلاح کنیم ؟

درس دوم – چطور کدها را اصلاح کنیم ؟


تا اینجای کار متوجه شدیم که چه وقت باید کدها را اصلاح کنیم ؟ حالا سوال اصلی اینجاست که چطور کدها را اصلاح کنیم ؟ پروسه اصلاح و Refactor کدها باید در قالب یک سری عملیات و تغییرات کوچک صورت بگیرد که مرحله به مرحله کد را بهتر میکند. یادتان باشد، قرار نیست کد شما یک شبه تمیز شود. بنابراین به روش سرخپوستی عمل نکنید!!!

چطور کدها را اصلاح کنیم ؟ چک لیست اصلاح کدها

وقتی کدها اصلاح میشوند، بعد از هر تغییری باید مواردی را که در زیر ذکر میکنیم، چک کنید و از خودتان بپرسید آیا کد را به درستی Refactor کرده اید یا خیر.

بعد از هر تغییر:

  • کد باید تمیزتر شده باشد.

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

  • در طی فرآیند Refactor کردن،نباید کاربری و رفتار جدیدی به نرم افزار اضافه شود. فقط کدها تمیز میشوند.

دقت کنید که پروسه Refactor کردن و Develop کردن را با هم اشتباه نگیرید. قرار نیست همزمان هم Develop کنید و هم Refactor کنید. یک راه حل ساده برای این موضوع، این است که اول کد مورد نظرتان را بنویسید تا کار کند، بعد آنرا Refactor کنید. منظور تمام کد نیست. منظور قطعه های کوچکی از آن است.

  • تمام Unit Test ها باید بعد از پروسه Refactor کردن، همچنان سبز بمانند (Pass شوند)

در صورتی که تست ها Pass نشدند، دو احتمال وجود دارد. اول اینکه خطایی در کد به وجود آورده اید. که باید آنرا فیکس کنید. دوم اینکه خود تست ها مشکل دارند. مثلا یک متد را Refactor کرده اید و تصمیم گرفته اید که این متد باید Private باشد. بنابراین تست مربوط به آن، قادر به تست کردنش نیست. گاهی پیش می آید که مجبور میشوید خود تست ها را هم Refactor کنید!!!

 






کلمات کلیدی :

نظر بدهید

18 دیدگاه برای “درس دوم – چطور کدها را اصلاح کنیم ؟

  • احمد ایرانپور گفته
    25 نوامبر 17

    با سلام
    این خیلی خوبه که آموزش هاتون به صورت کاربردی و همگام با انجام یه پروژه عملی است.
    سپاس

    • علیرضا صبوئی گفته
      25 نوامبر 17

      زنده باشید.

      • احمد ایرانپور گفته
        25 نوامبر 17

        با سلام
        من یه برنامه نوشتم و فایل نصبی اون را وقتی اجرا میکنم به لایه بیزنس گیر میده .
        ایم لایه Bussness_Aftab2,.جزییات پیام هم اینه

        See the end of this message for details on invoking

  • احمد ایرانپور گفته
    25 نوامبر 17

    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.IO.FileNotFoundException: Could not load file or assembly ‘Bussness_Aftab2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its

  • احمد ایرانپور گفته
    25 نوامبر 17

    dependencies. The system cannot find the file specified.
    File name: ‘Bussness_Aftab2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’
    at UI_Aftab.FORM.frmstudent.frmstudent_Load_1(Object sender, EventArgs e)
    at

    • علیرضا صبوئی گفته
      25 نوامبر 17

      آقای ایرانپور عزیز سلام.
      متن ارور این پیغامو میده که شما در لایه UI در حال استفاده از بیزینس هستید اما نمیتونه بیزینس رو پیدا کنه. هر دو پروژه در یک solution هستند؟ ۲ مورد رو چک کنید:
      ۱٫ رفرنس بیزینس در UI اضافه شده یا خیر؟
      ۲٫ NameSpace بهصورت درست وارد شده یا خیر. احیانا شاید در جایی Rename انجام داده اید.
      در صورتی که مشکل حل نشد، کدتان را درتلگرام برای من بفرستید

      • احمد ایرانپور گفته
        25 نوامبر 17

        با درود
        ممنونم از راهنماییتون بله مورد دومی که فرمودید بود.
        الان ۲ تا مشکل دیگه دارم
        ا-خطای لود نکردن اس کیو ال سرور سی ای
        با این پیغام:
        unable to load the native component of SQL Server compact corresponding to the ADO.NET provider of version 8876

        • علیرضا صبوئی گفته
          25 نوامبر 17

          این خطا رو در ویژوال استودیو در چه زمانی دریافت میکنید آقای ایرانپور؟

          • احمد ایرانپور گفته
            25 نوامبر 17

            سلام و درود
            این خطا وقتی فایل exe را روی یه سیستم دیگه اجرا میکنم بوجود میاد.البته رو اون سیستم ویژوآل استودیو نصب نیست.چه جوری این خطا رفع میشه؟

          • علیرضا صبوئی گفته
            25 نوامبر 17

            دات نت فریم ورک روش نصبه؟

  • احمد ایرانپور گفته
    25 نوامبر 17

    حالا سوال اینه که کدام ورژن اس کیو ال را دانلود و چه جوری آپدیت کنم
    و سوال دوم:
    فرم های برنامه من در یه سیستم با مانیتور مستطیلی طراحی شده .الان میخام رو یه سیستم دیگه با مانیتور مربعی بریزم اما کناره های فرم نشون داده نمیشه.آیا این مشکل قابل حله یا نه؟

    • علیرضا صبوئی گفته
      25 نوامبر 17

      ببینید برای این موضوع چند راه حل وجود داره. نکته اینجاس که رزولوشن مانیتورهای قدیمی (اسمشان را یادم رفته!) فکر کنم CRT میگفتیم :))
      رزولوشن این مانیتورها ۱۰۲۴ در ۷۶۸ هستش. در واقع نسبت طول به عرض، ۴ به ۳ هست. اما مانیتورهای جدید، wide هستن و نسبت طول به عرض اونها ۱۶ به ۹ هستش.
      راه حل هایی که دارید اینها هستن:
      ۱٫ فرمتونو کوچیک طراحی کنید که در تمام مانیتورها اجرا بشه و مشکلی نباشه و جلوی maximize شدنشو بگیرید.
      ۲٫ فرمتونو طوری طراحی کنید، که با resize شدن، چینش المانهاشو منظم کنه. برای این منظور باید از خاصیت Anchor در کنترلها استفاده کنید. مثلا وقتی شما خاصیت anchor یک دکمه رو روی راست و پاین ست کنید، هرچقدر فرم شما اندازش باشه، اون دکمه همیشه سمت راست و پایین قرار میگیره.
      استفاده از anchor اولش یه کم سخت به نظر میاد ولی در عرض یک روز میتونید روش مسلط بشید.

      • احمد ایرانپور گفته
        25 نوامبر 17

        با درودی دوباره
        در لایه دیتا اکسس من آدرس سیستم خودم را دادم.
        string connectionstring = @”Data Source = C:\Users\Novin-Gostar\Documents\Visual Studio 2015\Projects\Aftab_Software\t-aftab.sdf”;
        این آدرس را چه جوری تغییر بدم که در یه سیستم دیگه جواب بده؟.و آیا حل شدن این موضوع اون خطای قبلی را که گفته شد حل میکنه یا نه؟

        • علیرضا صبوئی گفته
          25 نوامبر 17

          آقای ایرانپور احتمالا مشکل از همین نکته هستش. برای حل این موضوع، باید کانکشن استرینگ را به صورت داینامیک ست کنید.
          یک روش خیلی ساده این است که از Application.StartupPath استفاده کنید. فرض کنید دیتابیس شما در یک فولدر با نام دیتابیس قرار دارد و این فولدر در کنار فایل EXE برنامه قرار دارد. بنابراین مسیر به شکل زیر خواهد بود:

          
          Application.StartupPath+"\Database\DatabaseName.sdf";
          
          • احمد ایرانپور گفته
            25 نوامبر 17

            با سلام
            هر کاری کردم بعد از دو روز مسیر را نتونستم درست بنویسم .
            عبارتApplication چون باید در لایه دیتا اکسس نوشته بشه متد Application.StartupPath را نداره چون name space
            رsysytem.windows .form
            را ادد نمیکنه

          • احمد ایرانپور گفته
            25 نوامبر 17

            با سلام
            من نتونستم دستور را بنویسم .یعنی جواب نداد . الان دیگه هیچ کاری به ذهنم نمیرسه انجام بدم.

          • علیرضا صبوئی گفته
            25 نوامبر 17

            آقای ایرانپور عزیز این دستورات را هم تست کنید:

            Environment.CurrentDirectory
            یا
            string assemblyFile = (
            new System.Uri(Assembly.GetExecutingAssembly().CodeBase)
            ).AbsolutePath;

  • احمد ایرانپور گفته
    25 نوامبر 17

    بله دات نت هم نصب کردم