حوار الـ Public Properties
في يوم ما طلعتلوش ملامح،
و انا شغال على جزء في الكود بعمل له refactoring كبير، لاحظت حاجة غريبة في
جزئية مالهاش علاقة "اوي" بالحتة اللي انا فيها. في property (و ليكن اسمها
ShoeSize) على class احنا مش بنستخدمها خالص. يعني دايما بنحط فيها قيمة، لكن
عمرنا ما بنقراها. فمن باب النظافة من الإيمان، قررت اشيل الخرا ده.
خلصت
الشغل و اختبرت الtests و كله سليم و اخضر و 100 فل و 17 و اديت دوناتيلو الPR
عشان يراجعها.
و إذ يا مؤمن لقيت دوناتيلو اتشال و اتحط و انتنفض و العِرق حيطق من نفوخه و دار الحوار ده:
د : انت ازاي تشيل الproperty دي؟ رجعها تاني
م : عيب عليك، مالهاش لازمة. انا دورت كويس و لقيتها مش مستخدمة ف شيلتها و اتأكدت ان مافيش test باظ.
د : لأ احنا محتاجينها
م : يابني بقول لك مش مستخدمة
د : ماليش دعوة
م : طب واحدة واحدة. هي مش مستخدمة، حاتفرق في ايه لو اتشالت؟
د : ماعرفش، بس احنا محتاجينها. دي كان requirement
م : ازاي و هي مش مستخدمة؟ ده كلام مش منطقي
د : اه بس انا ح اوريك.
و راح فاتح جيرا و موريني كارت. الكارت كان فاضي، فيما عدا العنوان. و العنوان بيقول "ضيف الproperty دي"
د : اهو اتفضل
م : دي يابني مش requirement. ده كلام في الهوا مالوش سياق اصلا و ممكن يكون اتغير. و بعدين في المشكلة اللي بنحلها؟ مش عشان كارت قديم بيقول اعمل كده انا الغي عقلي.
د: طب حوريك السيناريو اللي حيبوظ
و قام هوب فاتح السيستم و وراني سيناريو على QA
د : الكود اللي انت شلته مش حيخلي السيناريو ده يشتغل
م : ماشي، ازاي بقى و هو اصلا مش بيتقري؟ ده كلام مش منطقي
د : انا عارف انه مش منطقي بس انا بقول لك ان الكود ده هو اللي مشغل الحتة دي
م : طيب، انا حاجربها و اشوف
قررت اجرب السيناريو - مش عشان هو كلامه ممكن يكون صح - و لكن من باب اربط الحمار مكان ما الحمار عايز. و خير اللهم اجعله خير السيناريو ماشتغلش.. أن أن أن أااااااه..
قلت اكيد دي باج و موجودة من قبل شغلي. سحبت master و جربت السيناريو......... و اشتغل !!!! أن أن أن أااااااه..
في اللحظة دي، انا بقيت عامل زي الشخص اللي القرآن قال عنه (فبهت الذي كفر). لا انا عارف أفسر ولا مستوعب ولا حتى عندي نظرية ممكن تشرح ايه اللي بيحصل ده، ايه اللي انا شايفه ده!! ما هو اللي حصل ده حاجة من 2 مالهومش ثالث. يا اما في سحر في الموضوع، يا اما الموضوع في سحر.
قعدت ادور و ارجع في الgit history بتاع الكود قبل ما احط ايدي فيه عشان افهم ايه اللي حصل لحد ما فتحت الclass اللي فيه الproperty دي - و يا ريتني ما فتحته.
public class Metadata {
public string ShoeSize {get; set;}
}
public class Person {
public Metadata metadata {get; set;}
// الخازوق
public string ShoeSize {
get => metadata.ShoeSize;
set => metadata.ShoeSize= value;
}
}
طبعا مش محتاج اقول لكم على كم الأماكن اللي لقيته بيعمل فيها
var c = new Person {
metadata.ShoeSize = 5,
ShoeSize = 5
};
اللي هو بنحط قيمة في نفس الحاجة مرتين بطرق مختلفة.
و كمان لقيت
public class Item {
public int EntityId {get; set;}
public int Id => {
get => EntityId;
set => this.EntityId = value;
}};
ليه يا مؤمن؟ عشان الموديل ده بيجيلنا من third party و اسم EntityId مش عاجبه بروح ست الحبايب يا حبيبة بتاعته. ف انت طبيعي من (غير ما تبص عالclass) تفهم ان الId و الEntityId حاجتين مختلفتين. بس هما حاجة واحدة فعليا.
حسيت اني عايز - لأ مش عايز - لازم انسى الي حصل النهاردا، و ماكانش قدامي غير حل واحد.
نزلت فتحت ازازة كونياك جديدة و صبيت لي كاس صغير - و بعزم ما فيا رحت باطحني بالإزازة في دماغي.
تعليقات
إرسال تعليق