Saud | سعود الانصاري
Saud | سعود الانصاري

@Alansaricodez

22 تغريدة 2 قراءة Mar 03, 2023
❗️ابرز ما تعلمته من كتاب Clean Code❗️
الفصل الثالث: الوظائف Functions
تجد الفصل الأول والثاني في هذا الثريد:
♦️ الفصل ٣: الوظائف Functions
في بعض الاحيان تجد أن الكثير من الاكواد غير مرتبة ومكررة، وهنا يأتي دور الوظائف Functions
لكن ما الذي يجعل من الوظائف سهلة القرائة والفهم؟ وكيف نكتبها بشكل افضل؟
اليك بعض من الخطوات:
1️⃣ تصغير الحجم
2️⃣ الكتل والمسافات البادئة
3️⃣ افعل شيئاً واحداً
4️⃣ قراءة التعليمات البرمجية من أعلى إلى أسفل
5️⃣ استخدم الأسماء الوصفية
6️⃣ Arguments
7️⃣ فصل الامر والاستعلام
8️⃣ يفضل استخدام الاستثناءات على إرجاع رموز الخطأ
9️⃣ لا تكرر نفسك
شرح كل نقطة👇🏼
1️⃣ تصغير الحجم:
يجب ألا يكون طول السطور 150 حرفًا
يجب ألا تكون الوظائف بطول 100 سطر
يجب ألا تكون الوظائف بالكاد بطول 20 سطرًا
لكن هل هنالك حجم مناسب للوظيفة؟
يقول الكاتب انه من الافضل ان تتكون كل وظيفة في البرنامج من عدة أسطر فقط
كل منها مرئيًا بوضوح ويقودك كل منهما إلى التالي بترتيب مقنع، هذا هو مدى قصر وظائفك المناسب
2️⃣ الكتل والمسافات البادئة Blocks & Indenting:
وهذا يعني أن الكتل داخل عبارات if ، أو عبارات else ، أو while ، وما إلى ذلك يجب أن تكون بطول سطر واحد
ربما يجب أن يكون هذا الخط استدعاء دالة
لا يؤدي ذلك إلى الحفاظ على وظيفة التضمين صغيرة فحسب، بل يضيف أيضًا قيمة وثائقية لأن الوظيفة التي يتم استدعاؤها داخل الكتلة يمكن أن يكون لها اسم وصفي جيد
هذا يعني أيضا أن الوظائف يجب ألا تكون كبيرة بما يكفي لاحتواء بنى متداخلة
لذلك، يجب ألا يزيد مستوى المسافة البادئة للوظيفة عن واحد أو اثنين
هذا بالطبع يجعل الوظائف أسهل في القراءة والفهم
3️⃣ افعل شيئاً واحداً:
إذا كانت الوظيفة تقوم بخطوات تكون بمستوى واحد أقل من الاسم المحدد لملف وظيفة ، اذن الوظيفة تقوم بشيء واحد
سبب كتابة الوظائف هو لحل مفهومًا أكبر (اسم الوظيفة) إلى مجموعة من الخطوات في المستوى التالي من التجريد
هناك طريقة لمعرفة أن الوظيفة تقوم بأكثر من "شيء واحد" وهي:
وهي إذا كان بإمكانك استخراج وظيفة أخرى منها باسم لا يعد مجرد إعادة صياغة لتطبيقها
4️⃣ قراءة التعليمات البرمجية من أعلى إلى أسفل: the stepdown rule
نريد قراءة الكود مثل القصة من أعلى إلى أسفل
نريد كل وظيفة أن يتبعها أولئك الموجودون في المستوى التالي من التجريد حتى نتمكن من قراءة البرنامج، ينزل تنازلياً مستوى واحد من التجريد في كل مرة بينما نقرأ قائمة الوظائف
5️⃣ استخدم الأسماء الوصفية:
من الافضل استخدام اسماء تعطي معنى لهدف الوظيفة
لا تخف من كتابة اسم طويل، الاسم الوصفي الطويل أفضل من الاسم القصير الغامض
استخدم اصطلاح تسمية يجعل من السهل قراءة كلمات متعددة في أسماء الوظائف، ثم استخدم تلك الكلمات لإعطاء الوظيفة اسمًا يوضح ما تفعله
6️⃣ Arguments:
العدد المثالي لarguments خاص بوظيفة ما هو صفر (niladic)
يأتي بعد ذلك واحد (أحادي) ، يليه اثنان (ثنائيان)
يجب تجنب ثلاث حجج arguments (ثلاثية) حيثما أمكن ذلك
يتطلب أكثر من ثلاثة (متعدد الأقطاب) تبريرًا خاصًا جدًا والافضل ان لا يستخدم على أي حال
ايضا من الافضل الابتعاد عن وضع argument من نوع Boolean لعدم تعقيد الكود
- الأفعال والكلمات المفتاحية:
يمكن أن يقطع اختيار الأسماء الجيدة لوظيفة ما شوطًا طويلاً نحو شرح الغرض من الوظيفة وترتيب arguments والغرض منها
يجب أن تشكل الوظيفة وargument زوج فعل / اسم بسيط للغاية
على سبيل المثال: write(name)
أيا كان هذا الشيء "الاسم name"، فإنه يتم "كتابته written"
ايضا من الممكن أن يكون الاسم الأفضل هو writeField (name) ، والذي يخبرنا أن الشيء "name" هو "field"
7️⃣ فصل الامر والاستعلام:
يجب أن تفعل الوظائف شيئًا ما أو تجيب عن شيء ما ، ولكن ليس كلاهما
إما أن تقوم وظيفتك بتغيير حالة الكائن، أو يجب أن تعرض بعض المعلومات حول متعة سيف ذلك الكائن
غالبًا ما يؤدي القيام بالأمرين إلى الارتباك
8️⃣ يفضل استخدام الاستثناءات على إرجاع رموز الخطأ:
يُعد إرجاع رموز الخطأ من وظائف الأوامر انتهاكًا دقيقًا لفصل استعلام الأوامر
إذا كنت تستخدم استثناءات بدلاً من رموز الخطأ، فيمكن فصل رمز معالجة الخطأ عن رمز المسار ويمكن تبسيطه
9️⃣ لا تكرر نفسك:
ليس من السهل تحديد التكرار لأن بعض الحالات تكون متداخلة مع كود آخر ولا تتكرر بشكل موحد
ومع ذلك، فإن التكرار يمثل مشكلة لأنه يزيد من تحميل الكود وسيتطلب تعديلًا في حالة ضرورة تغيير الخوارزمية
تم إنشاء العديد من المبادئ والممارسات لغرض السيطرة عليها أو القضاء عليها
مثال:
جميع النماذج العادية لقاعدة بيانات Codd تعمل على التخلص من الازدواجية في البيانات
ضع في اعتبارك أيضا كيف تعمل البرمجة الموجهة للكائنات على تركيز الكود في فئات أساسية قد تكون زائدة عن الحاجة
♦️خاتمة:
كل نظام مبني من لغة مجال معينة صممها المبرمجون لوصف هذا النظام
يعتبر المبرمجون المتمكنون في الأنظمة على أنها قصص يجب روايتها بدلاً من كونها برامج يجب كتابتها
يستخدمون مرافق لغة البرمجة التي اختاروها لبناء لغة أكثر ثراءً وتعبيرًا يمكن استخدامها لرواية تلك القصة
هل تعلمت شيء جديد؟ لا تنس اعادة التغريد حتى يستفيد الجميع 🙏🏼
سأحاول الاستمرار بكتابة ما اتعلمه من هذا الكتاب
الفصل القادم: التعليقات

جاري تحميل الاقتراحات...