Remove ads
From Wikipedia, the free encyclopedia
بازساخت (به انگلیسی: code refactoring) یا بازسازی کد در برنامهنویسی رایانهای و طراحی نرمافزار، به فرایند ساختماندهی مجدد به کد رایانه موجود گفته میشود، این فرایند «نباید» رفتار بیرونی آن را تغییر دهد. بازساخت به منطور بهبود طراحی، ساختار، و/یا پیادهسازی نرمافزار ( بهبود ویژگیهای غیرعملکردی آن)، انجام میشود، درحالیکه عملکرد کد باید حفظ گردد.
بازسازی کد یک فرایند میباشد که طی آن، یک کدِ نوشته شده بدون آن که رفتار خارجیاش عوض شود، بازسازی میشود. به عبارتی دیگر، بازسازی کد به معنای تغییر یک سیستم نرم افزاری به منظور ارتقا و بهبود ساختار داخلی آن به صورتی که رفتار بیرونی آن تحت تأثیر قرار نگیرد، میباشد. اگر بخواهم دقیق تر بگوییم، بازسازی کد را میتوان راهی برای منظم و تمیز کردن ساختار کد دانست. این کار برای جلوگیری از ایجاد باگهای نرم افزاری انجام میشود.[۱]
بازسازی کد رابطهٔ نزدیکی با بوی کد (code smell) دارد. برای مثال، متدی را در نظر بگیرید که بسیار بلند یا شبیه متد دیگری شدهاست. به کمک بازسازی کد میتوان این مشکلها را حل کرد و به عبارتی دیگر بوی کد را از بین برد. در حالتی که متد بسیار بلند است به دو متد یا بیشتر شکسته میشود و در حالتی که متد شبیه متد دیگری است، هر دو متد را با یک متد جایگزین میشوند.
بهطور کلی بازسازی کد دارای دو فایده است.
قبل از انجام بازسازی کد بر روی یک تکه کد، میبایست یک سری آزمایش واحدِ خودکار (unit test) انجام شود. این کار برای مطمئن شدن از درست بودنِ کارکردِ تکه کد قبل از انجام بازسازی کد میباشد. اگر این آزمایشها شکست بخورند، در حالت کلی ابتدا میبایست این آزمایشها را رفع مشکل کرد؛ اگر این کار انجام نشود، تشخیص خطاهایی که به خاطر بازسازی کد درست شدهاند از خطاهایی که قبلاً از بازسازی کد در کد وجود داشتهاند دشوار میشود. بعد از بازسازی کد، آزمایشها دوباره اجرا میشوند تا تائید شود که بازسازی کد خطای جدیدی را به وجود نیاورده است.
فرایند کلی بازسازی کد بهطور یک چرخهٔ تکرار شونده است. هر بار تغییر کوچکی در کد ایجاد میکنیم و آن را آزمایش میکنیم، اگر آزمایش موفقتآمیز بود این چرخه را دوباره تکرار میکنیم و در غیر این صورت، تغییر ایجاد شده را برمیگردانیم و سعی میکنیم تغییر را از روش دیگری ایجاد کنیم. در نهایت برنامه از طریق گامهای کوچک و بسیار از جایی که در حال حاضر وجود دارد به جایی که مدنظر ما است میرسد.
تکه کد زیر را در نظر بگیرید.
public MyClass(String lastname, String firstname, int age) {
this.lastname = lastname
this.firstname = firstname
this.age = age
}
در این متد اگر ترتیب پارامترهای ورودی را عوض کنیم، خوانایی کد بیشتر میشود و در نهایت تابع به صورت زیر میشود.
public MyClass(String firstname, String lastname, int age) {
this.firstname = firstname
this.lastname = lastname
this.age = age
}
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.