إعادة بناء التعليمات البرمجية عند إعادة التسمية (#C)
Rename هي ميزة إعادة هيكلة في بيئة التطوير المتكاملة (IDE) لـ Visual Studio التي توفر طريقة سهلة لإعادة تسمية المعرِّفات لرموز التعليمات البرمجية مثل الحقول, المتغيرات المحلية, ، مساحات الأسماء ، الخصائص, الأساليب, و الأنواع. Rename يمكن استخدامها لتغيير الأسماء في التعليقات و في السلاسل و لتغيير التعريفات و الاستدعاءات لمعرِّف.
ملاحظة
عند استخدام "التحكم بالمصدر" لـ Visual Studio ، احصل على أحدث إصدار من المصادر قبل محاولة تنفيذ إعادة هيكلة التسمية.
إعادة الهيكلة للتسمية متوفرة من ميزات Visual Studio التالية:
الميزة |
سلوك إعادة الهيكلة في IDE |
---|---|
محرر التعليمات البرمجية |
في محرر التعليمات البرمجية, إعادة هيكلة التسمية تتوفر عند وضع المؤشر على أنواع معينة من رموز التعليمات البرمجية. عندما يكون المؤشر في ذلك الموضع يمكنك استدعاء أمر Rename وذلك بكتابة اختصار لوحة المفاتيح (CTRL + R ، R) أو عن طريق اختيار أمر Rename من علامة ذكية أو القائمة المختصرة أو قائمة Refactor. |
طريقة عرض الفئة |
عند اختيار معرّف في "عرض فئة", إعادة هيكلة التسمية تتوفر من القائمة Refactor والقائمة المختصرة. |
مستعرض الكائن |
عند اختيار معرّف في "مستعرض الكائنات" إعادة هيكلة التسمية تتوفر فقط من قائمة Refactor . |
شبكة الخصائص لمصمم Windows Forms |
في شبكة الخصائص في "مصمم Windows Forms" ، تغيير اسم عنصر تحكم سيبدأ عملية إعادة تسمية لعنصر التحكم هذا. مربع حوار "إعادة التسمية" لن يظهر. |
Solution Explorer |
في Solution Explorer، أمر Rename متوفر في قائمة الاختصارات. إذا كان الملف المصدر المحدد يحتوي على فئة و التي اسم الفئة الخاص بها هو نفس اسم الملف, يمكنك استخدام هذا الأمر لإعادة تسمية الملف المصدر في نفس الوقت مع إعادة هيكلة التسمية. على سبيل المثال، إذا قمت بإنشاء تطبيق افتراضي يستند إلى Windows ثم قمت بإعادة تسمية Form1.cs إلى TestForm.cs, اسم الملف المصدر Form1.cs سوف يتغيّر إلى TestForm.cs و الفئة Form1 و كافة المراجع لهذه الفئة سيتم إعادة تسميتها لتكون TestForm.
ملاحظة
الأمر Undo (CTRL+Z) سيقوم فقط بالتراجع عن إعادة هيكلة التسمية في التعليمات البرمجية و لن يتم تغيير اسم الملف مرة أخرى إلى الاسم الأصلي.
إذا كان الملف المصدر المحدد لا يتضمّن فئة اسمها هو نفس اسم الملف ، أمر Rename في Solution Explorer سيقوم فقط بإعادة تسمية الملف المصدر و لن يقوم بتنفيذ إعادة هيكلة التسمية. |
عمليات إعادة التسمية
عند تنفيذ Rename , مشغّل إعادة الهيكلة ينفذ عملية إعادة تسمية معينة لكل رمز التعليمات البرمجية كما هو موضح في الجدول التالي.
رمز التعليمات البرمجية |
عملية إعادة التسمية |
---|---|
الحقل |
تغيّر التعريف و استخدامات الحقل للاسم الجديد . |
المتغير المحلي |
تغيّر التعريف و استخدامات المتغير المحلي للاسم الجديد . |
Method |
تغيّر اسم الأسلوب و كافة المراجع لهذا الأسلوب للاسم الجديد .
ملاحظة
عند إعادة تسمية أسلوب ملحق, عملية إعادة التسمية تنتشر إلى كافة المثيلات للأسلوب الموجودة في النطاق, بغضّ النظر عن ما إذا كان يتم استخدام الأسلوب الملحق كأسلوب ثابت أو أسلوب مثيل.لمزيد من المعلومات، راجع أساليب ملحق (C# البرمجة الدليل).
|
مساحة الاسم |
تغيّر اسم مساحة الاسم إلى الاسم الجديد في التعريف, كافة عبارات using، و الأسماء المؤهلة بشكل كامل.
ملاحظة
عند إعادة تسمية مساحة اسم, Visual Studio يقوم أيضًا بتحديث خاصية مساحة الاسم الافتراضية في صفحة تطبيقلـ مصمم المشروع.هذه الخاصية لا يمكن إعادة تعيينها باختيار "تراجع" من قائمة "تحرير".لإعادة تعيين قيمة الخاصية مساحة الاسم الافتراضية يجب عليك تعديل الخاصية في مصمم المشروع.لمزيد من المعلومات، راجع صفحة التطبيق.
|
الخصائص |
تغيّر التعريف و استخدامات الخاصية للاسم الجديد . |
Type |
تغيّر كافة التعريفات و الاستخدامات للنوع إلى الاسم الجديد ، بما في ذلك المُنشئات و المدمّرات. بالنسبة للأنواع الجزئية, عملية إعادة التسمية سوف تنتشر لكافة الأجزاء. |
لإعادة تسمية معرِّف
أنشئ تطبيق وحدة تحكم باسم RenameIdentifier ، ثم قم باستبدال Program بمثال التعليمات البرمجية التالي.
class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC { void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } }
ضع المؤشر على MethodB ، إما في تعريف الأسلوب أو استدعاء الأسلوب.
من قائمة "إعادة بناء التعليمات البرمجية" اختر "إعادة تسمية" . يظهر مربع الحوار "إعادة تسمية".
يمكنك أيضاً كتابة اختصار لوحة المفاتيح F2 لعرض مربع الحوار "إعادة تسمية".
يمكنك أيضاً النقر بزر الماوس الأيمن فوق المؤشر ، أشر إلى "إعادة بناء التعليمات البرمجية" في قائمة السياق ثم انقر فوق "إعادة تسمية" لعرض مربع الحوار "إعادة تسمية" .
في الحقل "اسم جديد" اكتب MethodC.
حدد خانة الاختيار البحث في التعليقات.
انقر فوق موافق.
في مربع الحوار عرض التغييرات ، انقر فوق " تطبيق".
لإعادة تسمية معرِّف باستخدام العلامات الذكية
أنشئ تطبيق وحدة تحكم باسم RenameIdentifier ، ثم قم باستبدال Program بمثال التعليمات البرمجية التالي.
class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC { void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } }
في تعريف MethodB ، اكتب أو ارجع مساحة للخلف عبر معرّف الأسلوب. موجّه علامة ذكية سوف يظهر أسفل هذا المعرف.
ملاحظة
يمكنك استدعاء إعادة هيكلة التسمية فقط باستخدام العلامات الذكية عند تعريف معرِّف.
اكتب اختصار لوحة المفاتيح SHIFT + ALT + F10 ثم اضغط "سهم لأسفل" لعرض قائمة العلامات الذكية.
-أو-
حرِّك مؤشر الماوس فوق موجه العلامة الذكية لعرض العلامة الذكية. ثم حرك مؤشر الماوس فوق العلامة الذكية ثم اضغط "السهم للأسفل" لعرض قائمة العلامات الذكية.
تحديد إعادة تسمية ' <identifer1> 'الي' <identifier2> ' عنصر قائمة لاستدعاء إعادة بناء التعليمات البرمجية rename دون معاينة للتغييرات الخاصة بك تعليمات برمجية. الجميع مراجع إلى <identifer1> سيتم تلقائياً محدث <identifier2>.
-أو-
اختر عنصر القائمة "إعادة تسمية بمعاينة" لاستدعاء إعادة هيكلة التسمية مع معاينة التغييرات في التعليمات البرمجية الخاصة بك. مربع حوار معاينة التغييرات سيظهر.
ملاحظات
إعادة تسمية الأعضاء المطبّقة أو المتجاوزة
عندما تقوم بـ "إعادة تسمية" عضو الذي إما يطبق/يتجاوز أو يتم تطبيقه/تجاوزه من قبل أعضاء في أنواع أخرى Visual Studio يعرض مربع حوار يقول أن عملية إعادة التسمية ستسبب تحديثات متتالية. إذا قمت بالنقر فوق " متابعة", مشغّل إعادة الهيكلة يقوم بشكل متكرر بالبحث عن و إعادة تسمية كافة الأعضاء في الأنواع الأساسية و المشتقة التي لها علاقات تطبيق/تجاوز مع العضو الذي يتم إعادة تسميته.
يحتوي مثال التعليمات البرمجية التالي على أعضاء لها علاقات تطبيق/تجاوز.
interface IBase
{
void Method();
}
public class Base
{
public void Method()
{ }
public virtual void Method(int i)
{ }
}
public class Derived : Base, IBase
{
public new void Method()
{ }
public override void Method(int i)
{ }
}
public class C : IBase
{
public void Method()
{ }
}
في المثال السابق، إعادة تسمية C.Method() أيضاً يعيد تسمية Ibase.Method() لأن C.Method() يطبّق Ibase.Method(). بعد ذلك, بشكل متكرر يرى مشغّل إعادة الهيكلة أن Ibase.Method() يتم تطبيقه بواسطة Derived.Method() ويعيد تسمية Derived.Method(). مشغل إعادة الهيكلة لا يعيد تسمية Base.Method() ، لأن Derived.Method() لا يتجاوز Base.Method(). مشغّل إعادة الهيكلة يتوقف هنا إلا إذا كان لديك " إعادة تسمية التحميلات الزائدة" تم اختيارها في مربع الحوار " إعادة تسمية".
في حالة تحديد " إعادة تسمية التحميلات الزائدة" مشغّل إعادة الهيكلة يعيد تسمية Derived.Method(int i) لأنه يتجاوز Derived.Method() ، Base.Method(int i) لأنه تم تجاوزه بواسطة Derived.Method(int i) ، و Base.Method() لأنه تحميل زائد لـ Base.Method(int i).
ملاحظة
عند إعادة تسمية عضو تم تعريفه في تجميع مشار إليه , مربع حوار سوف يشرح أن إعادة التسمية سيتسبب في أخطاء بناء.
إعادة تسمية خصائص أنواع مجهولة
عند إعادة تسمية خاصية في أنواع مجهولة, عملية إعادة التسمية ستنتشر للخصائص في الأنواع المجهولة الأخرى التي لها نفس الخصائص. توضح الأمثلة التالية هذا السلوك.
var a = new { ID = 1};
var b = new { ID = 2};
في التعليمات البرمجية السابقة, إعادة تسمية ID ستغيّر ID في كلا العبارتين لأن لديهما نفس االنوع المجهول الأساسي.
var companyIDs =
from c in companylist
select new { ID = c.ID, Name = c.Name};
var orderIDs =
from o in orderlist
select new { ID = o.ID, Item = o.Name};
في التعليمات البرمجية السابقة، إعادة تسمية ID ستقوم فقط بإعادة تسمية مثيل واحد من ID لأنcompanyIDs و orderIDs لا تحتوي على نفس الخصائص.
راجع أيضًا:
المرجع
أنواع مجهول (C# البرمجة الدليل)