از آرایه برای ذخیره سازی آیتمهای مشابه استفاده میشود. این تشابه باید علاوه بر اینکه در نوع دادهای آیتمها رعایت شود، باید از نظر مفهومی نیز رعایت شود.
زمانیکه از یک آرایه برای نگهداری المنتهای غیر مشابه استفاده میشود، نیاز به چنین بازسازی کدی است. به طور مثال آرایهای که آیتم اول آن "نام" و آیتم دوم آن "امتیاز" است. قطعا کار با چنین آرایهای بسیار مشکل خواهد بود. زمانیکه یک آرایه را از نوع دادهای عمومیتری (مثلا object در سی شارپ) تعریف و انواع دادهای متفاوت را در آیتمهای آن نگهداری کنیم، اوضاع بسیار بدتر خواهد شد.
محور اصلی بازسازی کد "جایگزینی آرایه با شیء" ایجاد یک کلاس، برای ذخیره اطلاعات آرایه است. به این صورت که برای هر آیتم آرایه، یک خصوصیت در کلاس مربوطه ایجاد میشود.
به طور مثال به آرایه زیر توجه نمایید:
var row = new string[3];
row[0] = "Liverpool";
row[0] = "15";
در آرایه بالا، آیتم اول نشان دهنده نام تیم و آیتم دوم نشان دهنده امتیاز تیم است. با وجود اینکه این مثال کمی غیر واقعی به نظر میرسد، اما چنین مثالهایی در برنامه نویسی روزمره ممکن است به اشکال مختلفی مشاهده شود. مانند استفاده از dictionary برای دریافت اطلاعات فرم وب، استفاده از Tuple (در زبان سی شارپ) برای انتقال اطلاعات و …
در این مثال طراحی بهتر، ایجاد یک کلاس یا ساختار (بسته به شرایط کلی مسئله) برای نشان دادن امتیاز تیم است:
public class Performance
{
public string TeamName { get; set; }
public int Score { get; set; }
}
همانطور که مشاهده میکنید، به ازای هر یک از آیتمهای آرایه، خصوصیتی در کلاس جدید ایجاد شدهاست. همچنین انتخاب انواع دادهای نیز در طراحی جدید، سادهتر و اصولیتر انجام خواهد شد.
تمامی استفادهها از آرایهها، در دسته بندی این نوشتار برای بازسازی کد قرار نمیگیرند. آرایههایی که اصل مشابه بودن آیتمها را رعایت میکنند، معمولا نیازی به بازسازی کد ندارند. به طور مثال در نرم افزارهای فروشگاه اینترنتی، خصوصیات کالا به صورت داینامیک ذخیره شده و احتمالا برای دسترسی و مدیریت آن، از آرایه یا لیست استفاده میشود. اما با کمی دقت خواهیم دید، این استفاده از آرایه، با تعریف مشابه بودن آیتمها همخوانی دارد. زیرا تمامی آیتمهای آرایه به طور مثال از نوع خصوصیت کالا هستند. همچنین عملا امکان بازسازی و ایجاد کلاس در این مثال وجود ندارد؛ زیرا خصوصیات کالاها در زمان توسعه مشخص نیستند و در زمان اجرای برنامه تنظیم میشوند.