تجد الفصل الأول والثاني في هذا الثريد:
♦️ الفصل ٣: الوظائف Functions
في بعض الاحيان تجد أن الكثير من الاكواد غير مرتبة ومكررة، وهنا يأتي دور الوظائف Functions
لكن ما الذي يجعل من الوظائف سهلة القرائة والفهم؟ وكيف نكتبها بشكل افضل؟
في بعض الاحيان تجد أن الكثير من الاكواد غير مرتبة ومكررة، وهنا يأتي دور الوظائف Functions
لكن ما الذي يجعل من الوظائف سهلة القرائة والفهم؟ وكيف نكتبها بشكل افضل؟
اليك بعض من الخطوات:
1️⃣ تصغير الحجم
2️⃣ الكتل والمسافات البادئة
3️⃣ افعل شيئاً واحداً
4️⃣ قراءة التعليمات البرمجية من أعلى إلى أسفل
5️⃣ استخدم الأسماء الوصفية
6️⃣ Arguments
7️⃣ فصل الامر والاستعلام
8️⃣ يفضل استخدام الاستثناءات على إرجاع رموز الخطأ
9️⃣ لا تكرر نفسك
شرح كل نقطة👇🏼
1️⃣ تصغير الحجم
2️⃣ الكتل والمسافات البادئة
3️⃣ افعل شيئاً واحداً
4️⃣ قراءة التعليمات البرمجية من أعلى إلى أسفل
5️⃣ استخدم الأسماء الوصفية
6️⃣ Arguments
7️⃣ فصل الامر والاستعلام
8️⃣ يفضل استخدام الاستثناءات على إرجاع رموز الخطأ
9️⃣ لا تكرر نفسك
شرح كل نقطة👇🏼
1️⃣ تصغير الحجم:
يجب ألا يكون طول السطور 150 حرفًا
يجب ألا تكون الوظائف بطول 100 سطر
يجب ألا تكون الوظائف بالكاد بطول 20 سطرًا
لكن هل هنالك حجم مناسب للوظيفة؟
يجب ألا يكون طول السطور 150 حرفًا
يجب ألا تكون الوظائف بطول 100 سطر
يجب ألا تكون الوظائف بالكاد بطول 20 سطرًا
لكن هل هنالك حجم مناسب للوظيفة؟
يقول الكاتب انه من الافضل ان تتكون كل وظيفة في البرنامج من عدة أسطر فقط
كل منها مرئيًا بوضوح ويقودك كل منهما إلى التالي بترتيب مقنع، هذا هو مدى قصر وظائفك المناسب
كل منها مرئيًا بوضوح ويقودك كل منهما إلى التالي بترتيب مقنع، هذا هو مدى قصر وظائفك المناسب
لا يؤدي ذلك إلى الحفاظ على وظيفة التضمين صغيرة فحسب، بل يضيف أيضًا قيمة وثائقية لأن الوظيفة التي يتم استدعاؤها داخل الكتلة يمكن أن يكون لها اسم وصفي جيد
هذا يعني أيضا أن الوظائف يجب ألا تكون كبيرة بما يكفي لاحتواء بنى متداخلة
هذا يعني أيضا أن الوظائف يجب ألا تكون كبيرة بما يكفي لاحتواء بنى متداخلة
لذلك، يجب ألا يزيد مستوى المسافة البادئة للوظيفة عن واحد أو اثنين
هذا بالطبع يجعل الوظائف أسهل في القراءة والفهم
هذا بالطبع يجعل الوظائف أسهل في القراءة والفهم
3️⃣ افعل شيئاً واحداً:
إذا كانت الوظيفة تقوم بخطوات تكون بمستوى واحد أقل من الاسم المحدد لملف وظيفة ، اذن الوظيفة تقوم بشيء واحد
سبب كتابة الوظائف هو لحل مفهومًا أكبر (اسم الوظيفة) إلى مجموعة من الخطوات في المستوى التالي من التجريد
إذا كانت الوظيفة تقوم بخطوات تكون بمستوى واحد أقل من الاسم المحدد لملف وظيفة ، اذن الوظيفة تقوم بشيء واحد
سبب كتابة الوظائف هو لحل مفهومًا أكبر (اسم الوظيفة) إلى مجموعة من الخطوات في المستوى التالي من التجريد
هناك طريقة لمعرفة أن الوظيفة تقوم بأكثر من "شيء واحد" وهي:
وهي إذا كان بإمكانك استخراج وظيفة أخرى منها باسم لا يعد مجرد إعادة صياغة لتطبيقها
وهي إذا كان بإمكانك استخراج وظيفة أخرى منها باسم لا يعد مجرد إعادة صياغة لتطبيقها
5️⃣ استخدم الأسماء الوصفية:
من الافضل استخدام اسماء تعطي معنى لهدف الوظيفة
لا تخف من كتابة اسم طويل، الاسم الوصفي الطويل أفضل من الاسم القصير الغامض
استخدم اصطلاح تسمية يجعل من السهل قراءة كلمات متعددة في أسماء الوظائف، ثم استخدم تلك الكلمات لإعطاء الوظيفة اسمًا يوضح ما تفعله
من الافضل استخدام اسماء تعطي معنى لهدف الوظيفة
لا تخف من كتابة اسم طويل، الاسم الوصفي الطويل أفضل من الاسم القصير الغامض
استخدم اصطلاح تسمية يجعل من السهل قراءة كلمات متعددة في أسماء الوظائف، ثم استخدم تلك الكلمات لإعطاء الوظيفة اسمًا يوضح ما تفعله
ايضا من الافضل الابتعاد عن وضع argument من نوع Boolean لعدم تعقيد الكود
- الأفعال والكلمات المفتاحية:
يمكن أن يقطع اختيار الأسماء الجيدة لوظيفة ما شوطًا طويلاً نحو شرح الغرض من الوظيفة وترتيب arguments والغرض منها
- الأفعال والكلمات المفتاحية:
يمكن أن يقطع اختيار الأسماء الجيدة لوظيفة ما شوطًا طويلاً نحو شرح الغرض من الوظيفة وترتيب arguments والغرض منها
يجب أن تشكل الوظيفة وargument زوج فعل / اسم بسيط للغاية
على سبيل المثال: write(name)
أيا كان هذا الشيء "الاسم name"، فإنه يتم "كتابته written"
ايضا من الممكن أن يكون الاسم الأفضل هو writeField (name) ، والذي يخبرنا أن الشيء "name" هو "field"
على سبيل المثال: write(name)
أيا كان هذا الشيء "الاسم name"، فإنه يتم "كتابته written"
ايضا من الممكن أن يكون الاسم الأفضل هو writeField (name) ، والذي يخبرنا أن الشيء "name" هو "field"
7️⃣ فصل الامر والاستعلام:
يجب أن تفعل الوظائف شيئًا ما أو تجيب عن شيء ما ، ولكن ليس كلاهما
إما أن تقوم وظيفتك بتغيير حالة الكائن، أو يجب أن تعرض بعض المعلومات حول متعة سيف ذلك الكائن
غالبًا ما يؤدي القيام بالأمرين إلى الارتباك
يجب أن تفعل الوظائف شيئًا ما أو تجيب عن شيء ما ، ولكن ليس كلاهما
إما أن تقوم وظيفتك بتغيير حالة الكائن، أو يجب أن تعرض بعض المعلومات حول متعة سيف ذلك الكائن
غالبًا ما يؤدي القيام بالأمرين إلى الارتباك
9️⃣ لا تكرر نفسك:
ليس من السهل تحديد التكرار لأن بعض الحالات تكون متداخلة مع كود آخر ولا تتكرر بشكل موحد
ومع ذلك، فإن التكرار يمثل مشكلة لأنه يزيد من تحميل الكود وسيتطلب تعديلًا في حالة ضرورة تغيير الخوارزمية
ليس من السهل تحديد التكرار لأن بعض الحالات تكون متداخلة مع كود آخر ولا تتكرر بشكل موحد
ومع ذلك، فإن التكرار يمثل مشكلة لأنه يزيد من تحميل الكود وسيتطلب تعديلًا في حالة ضرورة تغيير الخوارزمية
تم إنشاء العديد من المبادئ والممارسات لغرض السيطرة عليها أو القضاء عليها
مثال:
جميع النماذج العادية لقاعدة بيانات Codd تعمل على التخلص من الازدواجية في البيانات
ضع في اعتبارك أيضا كيف تعمل البرمجة الموجهة للكائنات على تركيز الكود في فئات أساسية قد تكون زائدة عن الحاجة
مثال:
جميع النماذج العادية لقاعدة بيانات Codd تعمل على التخلص من الازدواجية في البيانات
ضع في اعتبارك أيضا كيف تعمل البرمجة الموجهة للكائنات على تركيز الكود في فئات أساسية قد تكون زائدة عن الحاجة
♦️خاتمة:
كل نظام مبني من لغة مجال معينة صممها المبرمجون لوصف هذا النظام
يعتبر المبرمجون المتمكنون في الأنظمة على أنها قصص يجب روايتها بدلاً من كونها برامج يجب كتابتها
يستخدمون مرافق لغة البرمجة التي اختاروها لبناء لغة أكثر ثراءً وتعبيرًا يمكن استخدامها لرواية تلك القصة
كل نظام مبني من لغة مجال معينة صممها المبرمجون لوصف هذا النظام
يعتبر المبرمجون المتمكنون في الأنظمة على أنها قصص يجب روايتها بدلاً من كونها برامج يجب كتابتها
يستخدمون مرافق لغة البرمجة التي اختاروها لبناء لغة أكثر ثراءً وتعبيرًا يمكن استخدامها لرواية تلك القصة
هل تعلمت شيء جديد؟ لا تنس اعادة التغريد حتى يستفيد الجميع 🙏🏼
سأحاول الاستمرار بكتابة ما اتعلمه من هذا الكتاب
الفصل القادم: التعليقات
سأحاول الاستمرار بكتابة ما اتعلمه من هذا الكتاب
الفصل القادم: التعليقات
جاري تحميل الاقتراحات...