پلتفرم Java SE با محیط توسعه IDE) NetBeans) ؛ (6)
قابلیت refactoring را زمانیکه می خواهید کد موجود را دستکاری کنید وتغییر دهید استفاده می کنید. پس از اعمال تغییر کدهای جدید حاوی error نباشند (سینتکس و کامپایل) و همچنین functionality نرم افزار تغییر نکرده باشد.
Refactoring (باز سازی)
refactoring (بازسازی) یعنی تغییر واصلاح کدهای برنامه به طوری که خروجی برنامه تغییر نکند.قابلیت refactoring را زمانیکه می خواهید کد موجود را دستکاری کنید وتغییر دهید استفاده می کنید. پس از اعمال تغییر کدهای جدید حاوی error نباشند (سینتکس و کامپایل) و همچنین functionality نرم افزار تغییر نکرده باشد. برخی از این تغییرات عبارتند از: تغییر نام متغییرها، تغییر نام متدها و توابع، عوض کردن محل قرارگیری یک متد (یا کل کلاس) و شکستن یک متد یا تابع بزرگ به متدها یا توابع کوچکتر یا یک کلاس را در بین پکیج ها انتقال دهید. با این تکنیک قابلیت نگهداری بیشتری را به برنامه می دهد و به کدهایی دست خواهید یافت که قابلیت آزمون پذیری بهتری داشته و همچنین امکان به اشتراک گذاری قسمتهایی از آنها در پروژههای دیگر نیز میسر میشود.
معمولا refactoring بدلایل زیر باید اتفاق بیفتد:
• بهبود درکد برای کاهش پیچیدگی و بالا بردن خوانایی کد (مانند تغییر نام متغییر ها).
• افزودن قابلیت های جدید به کد (مانند تغییر امضای متد ها)
• بهبود طراحی سیستم (جدا کردن قسمتی از یک کلاس و ایجاد کلاس جدید برای آن قسمت)
معمولا IDE های زبان های برنامه نویسی مختلف امکاناتی برای اعمال refactoring در کد را در اختیار برنامه نویسان قرار می دهند. refactoring وابسته به زبان برنامه نویسی خاصی نیست و برای موارد فوق الذکر می تواند در هر زبان برنامه نویسی اتفاق بیفتد.
آپشن های منویRefactor در netbeans :
Rename Refactoring
دو استفاده مهم از Rename refactoring می توان داشت:Renaming Java classes (Rename کردن کلاس):
Rename از طریق Refactor نه تنها نام کلاس را تغییر می دهد بلکه نام سازنده ها (constructor) ، استفاده های داخلی و مراجعات توسط دیگر کلاسها را تغییر می دهد.
dialog box زیر باز می شود که نام جدید را وارد می کنید:
Renaming entire package structures ( Rename کردن کامل یک ساختارپکیج ):
این، زمانیکه یک برنامه نویس نام یک پکیج را اشتباه یا با غلط املائی نوشت ، مفید واقع می شود. که مثل حالت قبل نام جدید را وارد می کنیم.البته می توانید به طور دستی تغییر دهیدوروی آن کلیک کنید تا بتوانید بنویسید. با این طریق منوی زیر باز می شود و می گوید Refactor کند یا نه:
Move Class Refactoring
وقتی کلاسی را از یک پکیج به پکیج دیگر انتقال می دهید در ابتدا ساده به نظر می رسد. یک برنامه نویس می تواند به صورت دستی یک فایل را Copy و Paste کند و مسیر آنرا تغییر دهد وسپس دستور پکیج آن فایل را که در ابتدای آن وجود دارد ویرایش کند. اما اگرکلاسهای دیگر آنرا import کنند یا به آن رجوع کنند باید آن را جستجو کند واصلاح کند.Move درمنوی refactor دقیقا به همین مطلب اشاره داردو به شما اجازه می دهد که یک کلاس را به پروژه یا پکیج دیگر یا به source package یا test package انتقال دهید. و همچنین ارجاعات به کلاس انتقال یافته، که در کلاسهای دیگر وجود دارد را تصحیح می کند.
برای این کار از دو راه بالا ، Refactor > Move را انتخاب می کنیم و یک dialog box مانند تصویر زیر می بینید که شما می توانید موقعیت و Package ای که می خواهید کلاستان را به آنجا انتقال دهید را انتخاب کنید:
Safe Delete Refactoring
در طول توسعه ی نرم افزار، برنامه نویسان بارها کدهایی را که قبلا نوشتند را بازدید می کنند. آنها چیز هایی را که نوشته بودند را بررسی می کنند و تصمیم می گیرند که چه چیز هایی را می توانند پاک کنند و چه چیزی را نمی توانند پاک کنند. یک اشتباه معمول پاک کردن متغییر عضو کلاسی است که شما فکر می کنید استفاده نمی شود، است. بعدا پی می برید که در واقع در کدتان ظاهر می شود وکلاستان کامپایل نمی شود.باSafe Delete Refactoring می توانید هراستفاده از یک کلاس، تابع،یا فیلد را قبل از پاک کردن آن، در کد مشاهده کنید. بخصوص اگر کلاسی را که توسط کلاسهای دیگر استفاده می شود، Remove کنید، این اصل می تواند فوق العاده باشد.
به عنوان مثال کد زیر را درنظر بگیرید که تابعی است که چندین متغییر محلی را تعریف می کند :
اگرعنصری را که می خواهید حذف کنید درهیچ جا از کد استفاده نشود، این کار برای حذف اطمینانی است. اما اگر این عنصر در جاهایی از کد استفاده شود یک سری مراحل باید طی کرد. بعد از کلیک دکمه ی Refactor در dialogbox بالا ، لیستی از خطاها ( errore)و هشدارها ( warning ) را مانند تصویر زیرنشان خواهد داد :
Use Supertype Where Possible Refactoring
این کار استفاده ازیک subclass را به superclass تبدیل می کند. فرض کنید که کدزیر را درسورس دارید:ArrayList myarray = new ArrayList();
Move Inner to Outer Level Refactoring
این گزینه یک کلاس داخلی را به کلاس خارجی مجزا تعریف شده در فایل خودش، تبدیل می کند. فرض کنید کد زیر را دارید که کلاس InnerClass در داخل OuterClass تعریف شده است:Encapsulate Fields Refactoring
کپسوله سازی یک فیلد بازسازی کد است که یک فیلد فقط با دو متد اکسسور قابل دستیابی است. متد اکسسور به متدهای read/write یا get/set اشاره می کند.به عنوان نمونه وقتی که یک فیلد را کپسوله می کنید، شما دسترسی فیلد را به خصوصی ( private) تغییر می دهید. بنابراین نمی توان مستقیما از بیرون از کلاس به فیلد مراجعه کرد. کلاس های دیگر برای مراجعه به فیلد بایداز متدهای اکسسور استفاده کنند.
شما می توانید در IDE فیلد ها را با دستورات زیر کپسوله کنید:
1 - ایجاد متد اکسسور برای فیلد. نام این متد ها به این صورت است: getfield-name و setfield-name .
2- تنظیم تغییر دهنده ی دسترسی برای فیلد
3- جایگزین کردن ارجاع مستقیم به فیلد با فراخوانی متدهای اکسسور در کد.
برای کپسوله سازی فیلد:
روی مشخصه کلیک راست کرده و Refactor > Encapsulate را انتخاب می کنیم.
/ج
مقالات مرتبط
تازه های مقالات
ارسال نظر
در ارسال نظر شما خطایی رخ داده است
کاربر گرامی، ضمن تشکر از شما نظر شما با موفقیت ثبت گردید. و پس از تائید در فهرست نظرات نمایش داده می شود
نام :
ایمیل :
نظرات کاربران
{{Fullname}} {{Creationdate}}
{{Body}}