ملخص كامل للفصل الاول

أحمد رمضان

. 2 د قراءة




طول الكتاب ده، بنفرّق بين نوعين من الكود:


Core Code (الكود الأساسي)
Infrastructure Code (كود البنية التحتية)




كل اللي جاي في الكتاب مبني على التفرقة دي

لو التفرقة دي وقعت منك "كل القرارات المعمارية بعد كده هتبقى غلط"


يعني إيه Core Code (بالمعنى اللي الكتاب قصده فعلًا)؟


من غير إعدادات خاصة
من غير ما يعتمد على سيستم خارجي
من غير ما يحتاج حاجة تكون “شغالة” برّه التطبيق 
ب معني انه
 مش: “كود نضيف” و “مفيهوش DB” و “فيه interface”
لا
دي قراءة سطحية.
اماااااااااال 
اقصد لو شلت الكود من مكانه وحطيته في أي بيئة
Test – CLI – Web – Background Job
ويشتغل زي ما هو
يبقى ده Core Code
خد نف المثود حطها ف اي مكان هتشتغل ولا فيه داتابيز و لا اي حاجة مجرد مثود بتعمل جمع و طرح و بتشوف هل العدد موجب و لا سالب



Infrastructure Code بقى؟


العكس تمامًا:
محتاج سيستم خارجي (زي قاعدة بيانات، HTTP، كلوك السيستم…)
محتاج إعدادات خاصة
أو متصمم يشتغل في سياق معيّن بس (ويب، CLI، كده يعني)


----------------------------------------------------------------------------

ايه رأيك ف الكود دا هل هوه core ولا infrastructure 


الاجابة انه infrastructure  طب ليه مقولتش انه core code 

التفكير الغلط اللي ناس كتير بتقع فيه
“ده كود بسيط، مفيش DB، مفيش API، يبقى Core”
السطر دا (new DateTimeImmutable('now'))
بيسأل:
“الوقت دلوقتي كام؟” والسؤال ده مش جاي من الكود مش جاي من business
جاي من النظام اللي شغال عليه البرنامج
يعني: System Clock او Environment  يكون Infrastructure


ليه ده خطر؟


علشان:
في Test → الوقت هيختلف
في Server تاني → الوقت هيختلف
في Timezone تاني → النتيجة تختلف
يبقى:
الكود مش محدد و مش حتمي اذا دا Core


هل الكود ده يُعتبر Infrastructure Code؟


لأ برضو
طب ليه دا انا لو شيلته من داخل symfony و حطيته ف اي مكان مش هيشتغل 
الكود ده مش محتاج: (Database HTTP System Clock Web Server)
يقدر يشتغل لوحده في أي مكان ف بالتالي نستنتج 
Framework ≠ Infrastructure و ان الاعتماد على سيستم خارجي هو اللي يحدد



المرة دي انتا الي تحدد عزيزي القارء





دا infrastructure  code ليه 
متصمم مخصوص لـ HTTP


اظن وضحت صح



هل ينفع أستبدل HttpClient بحاجة مش HTTP؟

الإجابة: لأ.

يبقى:

abstraction ناقصة

core code لسه شايف العالم الخارجي

decision تقني اتسرّب للـ core