المسارات
/
C#
C#
/
التمارين
/
تنظيف التحكم عن بعد
تنظيف التحكم عن بعد

تنظيف التحكم عن بعد

تمرين تعلّمي

مقدمة

الأنواع المتداخلة

يمكن تعريف أنواع C# ضمن نطاق صنف أو بنية. يوفّر النوع الحاوي نوعًا من مساحة الأسماء. يتم الوصول إلى النوع عبر النوع الحاوي باستخدام صيغة النقطة.

class Outer
{
    public interface IInner {}
    public enum EInner {}
    public class CInner {}
    public struct SInner {}
}

var outer = new Outer();
var inner = new Outer.CInner();

يمكنك تحديد مستويات الوصول للأنواع الداخلية.

تكون أعضاء النوع الخارجي الخاصة ضمن نطاق أعضاء النوع الداخلي، ولكن ليس العكس.

التعليمات

عمل بعض المطورين "الآخرين" على مشروع السيارة ذات التحكم عن بُعد remote-control-competition. وقد استُدعيتَ لتنظيف الكود.

1. الفصل بين مسؤوليات السيارة نفسها ونظام القياس عن بُعد

أعد هيكلة صنف RemoteControlCar بحيث تفصل دوال القياس عن بُعد وخصائصه، وتجعل الوصول إليها عبر خاصية Telemetry.

var car = new RemoteControlCar();
car.Telemetry.Calibrate();
car.Telemetry.SelfTest();
car.Telemetry.ShowSponsor("Walker Industries Inc.");
car.CurrentSponsor
// => "Walker Industries Inc."
car.Telemetry.SetSpeed(100, "cps");
car.GetSpeed()
// => "100 centimeters per second"

2. منع الأكواد الأخرى من الاعتماد بشكل مفرط على نوع Telemetry

تأكد من أنه لا يمكن إنشاء نسخة Telemetry خارج نطاق السيارة.

3. منع الأكواد الأخرى من الاعتماد على بنية Speed

تأكد من أنه لا يمكن استخدام بنية Speed خارج نطاق صنف RemoteControlCar.

4. منع الأكواد الأخرى من الاعتماد على تعداد SpeedUnits

تأكد من أنه لا يمكن استخدام تعداد SpeedUnits خارج نطاق صنف RemoteControlCar.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
C# Exercism

مستعد لبدء تنظيف التحكم عن بعد؟

سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.