لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/18/23 في كل الموقع
-
لكل مهنة قواعد تنظمها وتضمن إنجاز الأعمال فيها بأفضل صورة ممكنة، ومهنة البرمجة ليست استثناء! حيث تعد قواعد البرمجة من الأمور التي ينبغي على أي مبرمج تعلمها، والحرص على اتباعها عند تطوير البرامج والتطبيقات المختلفة. نضعك في مقال اليوم على بداية الطريق، ونعرفك على أهم قواعد البرمجة، ونوضح لك أهمية استخدامها وكيف يمكنك تحقيقها، وبالتدريب والممارسة ستتمكن من اتباعها عندما تطور برامجك وتطبيقاتك. ما هي قواعد البرمجة؟ قواعد البرمجة هي مجموعة من التوصيات والإرشادات التي ينبغي للمبرمجين اتباعها والالتزام بها عند استخدام أي لغة من لغات البرمجة للحصول على كود برمجي عالي الجودة وسهل الصيانة. يضمن لك تطبيق قواعد البرمجة إنتاج برامج مفهومة وواضحة وسهلة القراءة والتعديل، وهو أمر مهم لأي مبرمج لاسيما عندما يعمل ضمن فريق عمل ويتشارك مع عدة مبرمجين أو مطورين على تطوير نفس المشروع. لاشك أن تطبيق قواعد البرمجة ليس بالأمر السهل ولن يتحقق بسرعة، فتطبيق القواعد يأتي في مرحلة لاحقة، فبعد أن تتمكن من أساسيات البرمجة، وتتدرب على طريقة التفكير البرمجي، وحل المشكلات، عليك أن تتقدم خطوة للأمام وتتعلم كيف تحسن من برامجك من خلال تطبيق القواعد البرمجية عليها. سنعرض الآن عددًا من أهم قواعد البرمجة فكن جاهزًا! أهم قواعد البرمجة إليك أهم ثمان قواعد أساسية ينبغي عليك اتباعها لتبرمج كالمحترفين: اتبع القواعد العرفية للغة التي تبرمج بها وثق الكود الذي تكتبه حافظ على البساطة KISS لا تكرر نفسك DRY ادمج الأجزاء الصغيرة لإنجاز الأعمال الكبيرة لا تبرمج ما لا تحتاجه افصل الأكواد في أجزاء مستقلة اكتب أكوادًا نظيفة نشرح في الفقرات التالية كل قاعدة من قواعد البرمجة هذه بمزيد من التفصيل ونوضح أهميتها وكيفية تطبيقها عند تطوير البرامج والتطبيقات. اتبع القواعد العرفية للغة التي تبرمج بها لكل لغة من لغات البرمجة قواعد كتابة خاصة بها تعرف باسم صياغة، واتباع هذه القواعد عند كتابة الكود البرمجي ليس خيارًا للمبرمج، لأن الكود البرمجي لن يعمل بشكل صحيح إذا لم يكن مكتوبًا وفق هذه القواعد. فليس المقصود هنا صياغة اللغة وقواعدها، ولكن ما أقصده هو مراعاة اصطلاحات اللغة المتعارف عليها أو ما يسمى في أوساط المبرمجين باسم "العرف" Conventions، فلكل لغة قواعد اصطلاحية متعارف عليها بين مبرمجي تلك اللغة، مثل ضرورة كتابة كل تعليمة على سطر جديد، ومراعاة قواعد التباعد، وأماكن وضع الأقواس مثل () و {} ضمن البرنامج، ووضع المسافات البادئة في كل سطر، وقواعد تسمية المتغيرات والدوال والأصناف …إلخ. هذه الأمور تتغير من لغة إلى لغة وليس لها معيار موحد، لذا عليك التعرف على اصطلاحات اللغة التي تبرمج بها وتحرص على اتباعها، فإن انتقلنا مثلًا إلى لغة جافاسكربت، فيعرض مقال نمط كتابة شيفرة جافاسكربت هذا الموضوع بالتفصيل ويتحدث عن العرف المتبع بين مبرمجي لغة جافاسكربت كما يشير أخيرًا في فقرة "شروحات لأنماط كتابة الشيفرة" أشهر المعايير والأعراف العالمية للغة جافاسكربت منها أسلوب Google وأسلوب Airbnb والأسلوب المعياري الرسمي وغيرها، فلا حاجة لكل فريق أي يخترع عرفًا ومعيارًا يسير عليه بل يقتدي بعرف شهير شائع منظم موجود مسبقًا. أضرب مثلًا عن أسلوب Airbnb في تعريف المتغيرات في لغة جافاسكربت بالشكل التالي: // سيء const items = getItems(), goSportsTeam = true; // جيد const items = getItems(); const goSportsTeam = true; لاحظ أن تعريف متغير واحد في كل سطر هو الأسلوب المتبع ويجب تجنب تعريف عدة متغيرات في سطر واحد رغم أنه لا فرق في التنفيذ بينهما. أتريد مثلًا آخر؟ خذ هذا المثال أيضًا من أسلوب PEP8 في لغة بايثون: # Line Break with Binary Operator # سيء income = (gross_wages + taxable_interest - student_loan_interest) # جيد income = (gross_wages + taxable_interest - student_loan_interest) # Imports # سيء import sys, os # جيد import os import sys قد تجد أن الاختلاف بسيط أحيانًا بين العُرف الجيد المتبع وبين الأسلوب السيء في كتابة الشيفرة وهذا صحيح، ولكن تذكر أن الشيفرة لا تُكتب مرة واحدة فقط ولن يعمل عليها شخص واحد فقط، بل ستُعدل مرارًا وتكرارًا ويمر عليها عشرات المبرمجين فإن اتبع كل مبرمج أسلوبه الخاص فُقد التنظيم وسادت العشوائية وأصبحت الشيفرة عرضة للخطأ عند تعديلها. وتذكر دومًا أن العُرف هذا يضعه مبرمجون أصحاب خبرة بعشرات السنوات يحاولون به نقل خبرتهم أفضل طريقة لكتابة شيفرة متسقة سهلة القراءة والتعديل وأقل عرضة للأخطاء. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن وثق الكود الذي تكتبه هذه القاعدة على بساطتها مفيدة للغاية، فمن الضروري أن تعتاد على كتابة تعليقات توضيحية في الأكواد التي تكتبها لتوثيق عملك، وتشرح ما الذي تقوم به، وتوضح وظائف الدوال والأصناف والمكتبات المختلفة. التعليقات أمر مهم لكل مبرمج، فهي من جهة تساعده على فهم ما كتبه عند العودة له لاحقًا لأن المبرمج سينسى الكثير مما كتبته ولماذا كتبته بعد مرور فترة من الزمن، كما أن التعليقات تفيد أي مبرمج آخر يقرأ الكود في فهمه بسرعة في حال احتاج إلى تطويره أو التعديل عليه. ومن الضروري أن تتعلم أفضل ممارسات كتابة التعليقات على الكود الخاص بك، وتعرف متى وأين يتوجب عليك كتابة التعليقات ومتى لا يلزمك ذلك. اكتب التعليقات عندما تحتاج لوصف أي ميزة غير واضحة في التعليمات البرمجية، وفي أي موضع ترى أنه يتطلب المزيد من الشرح والتوضيح للآخرين، أما عندما يكون الهدف من الكود واضحًا ومفهومًا فيمكنك الاستغناء عن كتابتها. باختصار التعليقات تساعد المبرمجين على فهم المشكلات التي كنت تحاول حلها في تعليماتك البرمجية دون الحاجة لبذل كثير من الجهد لفهم واستنباط ما كتبته ولكن الأفضل من كتابة التعليقات أن تكتب شيفرة مفهومة بدون تعليقات وهذه هي القاعدة دومًا. حافظ على البساطة KISS قاعدة KISS هي اختصار لعبارة "Keep It Simple, Sweetie" التي تعني أبقها بسيطة يا عزيزي! أو أبقِ أكوادك بسيطة ومباشرة، وهذه القاعدة تطبق عند تصميم كافة الأنظمة البرمجية فقد تبين أن هذه الأنظمة تعمل بشكل أفضل إذا كانت بسيطة وخالية من التعقيد. فإذا كنت تستطيع أن تحل مشكلة ما بعشرة أسطر من الكود البرمجي لا داعي لأن تكتب خمسين سطرًا لحلها، وإذا كنت تحتاج لبرمجة نموذج ما يحتوي 10 حقول، فلا تضع فيه 20 حقلًا من البيانات التي لن تقدم أي فائدة في سير عمل برنامجك. الخلاصة، إذا كنت تطور أحد البرامج وكنت تستطيع تجنب التعقيد في كتابة الكود، فتجنبه قدر الإمكان، واحرص على إبقاء الأكواد البرمجية التي تكتبها فيه بسيطة، وتلبي المتطلبات قدر المستطاع. لا تكرر نفسك DRY من قواعد البرمجة الهامة قاعدة DRY وهي اختصار للعبارة "Don't Repeat Yourself" التي تعني لا تكرر نفسك، والتي تؤكد على المبرمج أن لا يكرر كتابة نفس الكود البرمجي مرارًا وتكرارًا، وينبغي عليه عند وجود هذه الحالة أن يتخلص من هذا التكرار بطريقة ما. لا مشكلة من تكرار نفس الكود مرة واحدة، ولكن عندما تستخدم نفس الكود عدة مرات في مواضع مختلفة من برنامجك فعليك أن تفكر في تعديله، وتجد طريقة ذكية لكتابة الكود مرة واحدة وإعادة استخدامه كلما احتجت له لتكون مطبقًا لهذه القاعدة. من المنهجيات البرمجية التي تساعدك على تقليل الكود البرمجي المكرر وجعل برامجك سهلة القراءة والصيانة هي استخدام الحلقات التكرارية التي تجنبك تكرار نفس التعليمات البرمجية وتجعل الكود البرمجي أقصر، وأيضًا استخدام الدوال والإجراءات البرمجية، وتعريف المكتبات والوحدات البرمجية التي تغلف شيفراتك البرمجية وتمكنك من إعادة استعمالها كلما أردت. ستدرك أهمية هذه القاعدة البرمجية إذا احتجت لإجراء تعديل ما في هذا الكود البرمجي المكرر، أو اكتشفت فيه خطأً ما وأردت تصحيحه، عندها سيتوجب عليك إجراء التعديلات في جميع الأماكن التي قمت فيها بإدراج هذا الكود وسيكون الأمر مرهقًا وغالبًا ستنسى ما قد كتبته حقًا، و قد لا تعدله أنت بل يعدله مبرمج آخر قد لا يفطن للتكرار مما يولد أخطاء مستقبلية. وبالتالي عندما تطور برنامجًا لحل مشكلة ما، وتجد أنك تقوم بالكثير من عمليات النسخ واللصق لنفس الكود لاستخدامه في أكثر من موضع، فابحث عن طريقة أخرى لكتابة هذا الكود، وفكر كيف يمكن أن تتجنب تكرار نفسك. ادمج الأجزاء الصغيرة لإنجاز أعمال أكبر يعتبر الدمج Composition من قواعد البرمجة المهمة، وهو يعني تجزئة المسائل البرمجية إلى مجموعة عناصر أصغر، كل جزء يقوم بمهمة محددة وواضحة، بعدها يتم دمج هذه الأجزاء لتشكيل جزء أكبر وأكثر تعقيدًا ينجز العمل بأكمله. يمكنك على سبيل المثال تطبيق هذه القاعدة إذا كنت مطور واجهة أمامية وتريد تطوير واجهة تطبيق ما وكتابة الكود البرمجي اللازم لتحقيق تصميم معين، حيث يمكنك تحويل كل عنصر من عناصر التصميم إلى مكون مستقل له الكود الخاص به، ثم تجمع هذه المكونات مع بعضها في النهاية لتحصل على التصميم الكامل. كما يتم تطبيق هذا المبدأ بشكل واضح في البرمجة كائنية التوجه OOP، من خلال تعريف صنف Class مستقل لكل جزء أو سلوك محدد من نظامك البرمجي، وجعل هذه الأصناف تتعاون مع بعضها لتنجز العمل المطلوب. باتباع هذه القاعدة ستوفر على نفسك كتابة أكواد ضخمة ومعقدة وصعبة الفهم. وتركز على برمجة كل مكون ليقوم بشيء واحد فقط، وإذا احتجت لتعديل جزء ما في برامجك فستعدل فقط الأجزاء التي طرأ عليها التعديل بكل سلاسة. فإذا كانت لديك شيفرة برمجية ضخمة لمكون ما في أحد برامجك تنجز عدة أمور مختلفة في نفس الوقت، فكر إن كان بالإمكان تقسيمها لأجزاء منفصلة أكثر تحديدًا. لا تبرمج ما لا تحتاجه من أهم قواعد البرمجة التي عليك اتباعها قاعدة YAGNI وهي اختصار للعبارة "You Aren't Gonna Need It" التي تعني أنت لن تحتاجها! لذا لا تقم ببرمجتها. فلا ينبغي عليك أن تكتب في برامجك أي أكواد لإنجاز مهام أو وظائف معينة تحل من خلالها مشكلة غير موجودة بالأساس، أو تضيف ميزة لا تحتاجها الآن لكنك تتوقع أنك ستحتاجها في مرحلة لاحقة. فإذا طلب منك على سبيل المثال كتابة كود برمجي يتحقق من صحة البريد الإلكتروني وكلمة المرور عند تسجيل دخول المستخدمين، فلا داعي لأن تتحقق أيضًا من صحة اسم المستخدم ورقم هاتفه لأنك قد لا تحتاج لهذا أبدًا. باختصار، كي تطبق هذه القاعدة ركز فقط على كتابة القدر المطلوب من الكود البرمجي الذي يحقق متطلباتك الحالية بالضبط بلا زيادة ولا نقصان، ولا داعي لأن تستشرف المستقبل. افصل الأكواد في أجزاء مستقلة يطلق على هذه القاعدة اسم فصل الاهتمامات "Separation of Interests" وهي من قواعد البرمجة الضرورية، وتؤكد على أهمية تصميم البرنامج ضمن وحدات أو أجزاء فريدة معزولة عن بعضها البعض. يعتبر أسلوب نموذج وعرض ومتحكم MVC من أوضح الأمثلة على تطبيق هذه القاعدة، ففي هذا النموذج يتم تنظيم كود البرامج ضمن ثلاثة أجزاء هي: النموذج Model الذي يتفاعل مع البيانات ويجلبها من قاعدة البيانات، والعرض View الذي يمثل الواجهة المرئية التي يتفاعل معها المستخدم بشكل مباشر، والمتحكم Controller الذي يمثل الوسيط بين العرض والنموذج ويربط بينهما. فالمتحكم يتلقى طلبات المستخدم من العرض أو واجهة المستخدم، ويعالجها، ثم يتصل بالنموذج ويطلب منه جلب ما يريده المستخدم من قاعدة البيانات، ثم يعيد النتيجة مرة أخرى إلى العرض ويظهرها على واجهة المستخدم. عند كتابة برامجك بهذا الأسلوب لن يحتاج الكود البرمجي الذي يتعامل مع قاعدة البيانات إلى معرفة تفاصبل عمل كود عرض البيانات، فكود العرض يحصل على المدخلات من المستخدم، وكود المتحكم يعالج هذه البيانات، وبهذا يكون كل جزء من الكود مستقلًا تمامًا. إن اتباع هذه القاعدة في البرمجة يمكنك من الحصول على كود برمجي سهل التطوير والصيانة، فإذا احتجت على سبيل المثال إلى إعادة كتابة كود العرض، فيمكنك القيام بذلك أن يتأثر أي شيء في كود حفظ ومعالجة البيانات. هذا الأسلوب يستخدم في العديد لغات البرمجة وأطر العمل، فمن لغات البرمجة التي تستخدم نموذج MVC لغة C++ وC# و Java و Ruby …إلخ. ومن أطر العمل التي تستخدم نموذج MVC إطار العمل أنجولر Angular وجانغو Django وفلاسك Flask ولارافيل Laravel …إلخ. اكتب أكوادًا نظيفة تعد قاعدة كتابة الأكواد البرمجية النظيفة والمفهومة وسهلة الصيانة مهارة ضرورية على كل مبرمج إتقانها، ويشير مصطلح الكود النظيف Clean Code ببساطة إلى الكود سهل القراءة والفهم من قبل المبرمجين الآخرين، وعادةً عندما تتبع كافة قواعد البرمجة التي وردت أعلاه ستحصل بالنتيجة على كود نظيف بصورة تلقائية. احرص كذلك على تنظيف أكوادك من كافة التعليمات لن تستخدم عند تنفيذ البرنامج، واحذف المتغيرات التي صرحت عنها لكنك لم تستخدمها، والدوال البرمجية التي عرفتها لكنها لم تنادها على الإطلاق، والأصناف التي لم تشتق منها أي كائنات برمجية، وكذلك الأكواد التي كتبتها ثم حولتها إلى تعليقات ضمن الكود لإبطال عملها …إلخ. فهذه كلها أكواد ميّتة وأنت لا تريد أن تجعل برنامجك مقبرة! وكي تعرف بسهولة إن كان الكود الذي تكتبه نظيفًا، اعرضه على مبرمج آخر لم يسبق له أن اطلع عليه واطلب منه تعديل أمر ما فيه، فإذا تمكن المبرمج من فهم الغرض من التعليمات البرمجية الخاصة بك، وعدلها وأضاف أكواده الخاصة عليها بسهولة ومرونة، فهذا يعني أن كتبت بالفعل كودًا نظيفًا. وتذكر أن كتابة الكود النظيف ليس مهارة يمكن اكتسابها بين عشيّة وضحاها بل هو ميزة يتم تطويرها بالممارسة والتدرب على تطبيق كافة هذه القواعد كلما قمت بكتابة كود برمجي ما حتى تكتسب الخبرة المطلوبة. ملخص لأهم قواعد البرمجة التي ينبغي للمبرمج اتباعها نعرض ما يلي ملخص قواعد البرمجة التي ذكرناها ليسهل عليك تذكرها وحفظها: احرص على كتابة كود سهل القراءة والفهم مع إضافة التعليقات التوضيحية إن لزم فهي ضرورية لتوثيق وتسهيل فهم الكود وصيانته عند العودة له لاحقًا. اكتب أكوادًا بسيطة ومباشرة والمقصود هنا أن تصمم برامجك ببساطة، وتحذف أي ميزة لا تحتاجها، فالأنظمة البرمجية تعمل بشكل أفضل وتكون أسهل في الصيانة كلما كانت أبسط. افصل الأكواد في أجزاء معزولة بحيث يكون كل جزء مسؤولًا على إنجاز مهمة محددة. لا تكرر نفسك ولا تنسخ وتلصق نفس الكود في أكثر من موضع، بل اكتبه مرة وأعد استخدامه كلما دعت الحاجة. لا تضف ما لن تحتاجه كي لا تهدر وقتك ومالك على أشياء لمجرد أنك تتوقع أنك ستحتاجها لاحقًا، فقد لا تحتاجها أبدًا. اكتب كودًا نظيفًا غير مكرر أو معقد، وهو ما ستحصل عليه إذا اتبعت كل القواعد السابقة. ماذا سيحصل لو لم أتبع قواعد البرمجة؟ عندما تبدأ تعلم البرمجة ستكون سعيدًا عندما يعمل أي برنامج بالشكل الصحيح، وقد لا تعير اهتمامًا لمدى أهمية اتباع قواعد البرمجة، لكن يجب أن تضع في الحسبان أنك إذا لم تعتد على اتباع القواعد الصحيحة في كتابة أكوادك البرمجية، فإن هذا سينعكس سلبًا على أداء برامجك على المدى البعيد. في تلك الحالة قد تحصل على كود سيء وفوضوي وغير مفهوم، وصحيح أن برنامجك يعمل، لكنه سيكون مكتظَا بالأكواد البرمجية المكررة، أو الوظائف غير المستخدمة، أو المتغيرات التي لا فائدة من وجودها، وبرنامج كهذا قد يتعطل أو يفشل بعد أول تعديل أو تطوير مطلوب. فتعلم هذه القواعد وتطبيقها من شأنه أن يحسِّن من خبرتك ويطور أسلوب كتابة شيفراتك البرمجية، وأغلب أصحاب الأعمال سيطلعون على عينة من كود كتبته سابقًا وسيفضلون مبرمجًا محترفًا يتبع هذه القواعد عمن لا يتبعها. وتذكر أن البرمجة لا تقتصر على كتابة تعليمات برمجية تعمل فحسب، بل هي كتابة تعليمات برمجية فعالة ذات جودة عالية ويمكن صيانتها وتعديلها بكل مرونة سواء من قبلك أو من قبل أي مبرمج آخر، لذا احرص على اتباع هذه القواعد البرمجية والتدرب على تطبيقها قدر المستطاع لأنها سبيلك لتكون مبرمجًا ناجحًا ومتميزًا. ماذا بعد تعلم قواعد البرمجة؟ بعد أن تتقن أساسيات البرمجة وتتعلم تطبيق قواعد البرمجة قد تتساءل: كيف يمكنني المضي قدمًا وتطوير مهاراتي البرمجية بصورة أكبر؟ سؤال جيد، سأجيبك! من الأمور التي ينبغي عليك تعلمها في رحلتك لاحتراف البرمجة مهارات إعادة التصميم لمشاريعك الحالية، والتعرف على مفهوم أنماط التصميم وتطبيقها لحل المشكلات التقنية التي تواجهك مستقبلًا. يشير مفهوم إعادة التصميم "Refactoring" إلى الخطوات التي ينبغي للمبرمج اتباعها لتعديل الشيفرات البرمجية وإعادة هيكلتها وتحسينها والعثور على أي أخطاء أو ثغرات كامنة فيها، مع المحافظة على وظائفها الأساسية. أما أنماط التصميم "Design Patterns"، فهي عبارة عن نماذج يضعها المطورون لحل المشكلات المتكررة والمتشابهة، وستكتسب من خلال تعلمها القدرة على إعادة استخدام نفس الأنماط في كل مرة تظهر فيها نفس المشكلة، ويمكنك اعتبارها بمثابة فكرة مجردة توضح طريقة حل المشكلة وتسهل عليك تحقيقها برمجيًا. الخلاصة تعرفنا في مقال اليوم على أهم قواعد البرمجة التي على المبرمج اتباعها، فلا ينبغي أن تتعلم أساسيات البرمجة فقط، بل عليك أن تتقدم خطوة للأمام وتحرص على اتباع أفضل الممارسات البرمجية عند كتابة الكود كي يكون المنتج الرقمي الذي تنشؤه أكثر كفاءة وموثوقية واحترافية. وتذكر أنه يمكن للجميع كتابة كود برمجي يفهمه الحاسوب لكن القليلين فقط يمكنهم كتابة كود جيد يفهمه الإنسان أيضًا، ومن خلال حرصك على اتباع قواعد البرمجة التي شرحناها تضمن أن تكون من هذه الفئة القليلة من المبرمجين المحترفين، كل ما تحتاجه هو التدريب الجيد على كتابة الأكواد والبرامج بصورة محسنة تراعي هذه القواعد بأفضل طريقة. اقرأ أيضًا تعلم تطوير الويب دليلك الشامل إلى لغات البرمجة أسهل لغات البرمجة ما هي فوائد تعلم البرمجة؟1 نقطة
-
اريد عمل في صفحة ال login ,register , verfied email عند كتابة ال username ,password كيف ستعرف laravel هل هذا users او adminوعند تحديد ذلك تقوم بتوجيه كلا منهم الى صفحة ال dashboard الخاصة به كما انني لا افهم دور الدالة guard() , brocker1 نقطة
-
لدي تصميم موقع كامل بمقاس 1920 هل توافق عرض الموقع علي الهواتف يعتمد علي المبرمج ام المصمم يقوم بعمل اكثر من مقاس مختلف1 نقطة
-
اشكرك جدا استاذ اسامة علي الاجابة المطلوبة يعني مش شرط تسليم العمل اكثر من مقاس للمبرمج يعني المبرمج هوا من يقوم بجعل التصميم متوافق مع جميع الشاشات1 نقطة
-
السلام عليكم. الكود التالي يعمل بصفة جيدة const handlePrevClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft - width console.log(box.clientWidth); } const handleNextClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft + width console.log(box.clientWidth); } بينما لو حذفت console.log(box.clientWidth); تظهر لي رسالة خطأ في عدم التعرف على "clientWidth" Uncaught TypeError: Cannot read properties of undefined (reading 'clientWidth') at handleNextClick (Slider.jsx:30:1) كيف يمكنني معالجة الخطأ. شكرا.1 نقطة
-
عدل الكود للشكل التالي : const handlePrevClick = () => { const box = carrouselRef.current; let width = box.clientWidth; box.scrollLeft = box.scrollLeft - width; }; const handleNextClick = () => { const box = carrouselRef.current; let width = box.clientWidth; box.scrollLeft = box.scrollLeft + width; }; بحيث تعرف الـ box داخل كل وظيفة بدلاً م ان تعرفه خارج الوظائف. وسبب المشكلة انك تعرف الـ box والذي هو عبارة عن useRef قبل ان تقوم بإسناد الـ useRef للعنصر الذي تريد التحكم به وفي هذه الحالة تكون قيمته undefined وهو يعمل عند اضافة الـ console.log بسبب خواص react والتي تسمح للتطبيع بالتحديث بدون اعادة تحميل الصفحة بالكامل. بينما في الشكل الثاني تقوم بتعرفي الـ box بعد ان تم اسناد الـ useRef.1 نقطة
-
1 نقطة
-
1 نقطة
-
مرحبا ضمن صفحة حجز موعد احتاج الى فلترة اسماء الدكاترة حسب المركز الطبي المختار models.py class Appointment(Info_Patient): appointment_date = models.DateTimeField(default=datetime.now,max_length=100) center =models.ForeignKey('accounts.Center',verbose_name=_("Choose health center"), on_delete=models.CASCADE, unique=False) doctor =models.ForeignKey('accounts.Doctor',verbose_name=_("Choose your doctor"),on_delete=models.CASCADE, unique=False ) views.py def appointment(request): if request.method == "POST": appointment = AppointmentForm(request.POST, request.FILES) if appointment.is_valid(): appointment.save() messages.success(request, ('Your websit was successfully added!')) else: HttpResponse(request, 'Error saving form') return redirect("index:medical_index") appointment = AppointmentForm() add = Appointment.objects.all() return render(request, 'appointment.html',{ 'appointment':appointment, 'add':add, })1 نقطة
-
class AppointmentForm(forms.ModelForm): class Meta: model = Appointment fields = ('user','name_patient','Email','Gender', 'address_detials','number_phone','appointment_date', 'age','work','note','image')1 نقطة
-
1 نقطة
-
مرحبا زينة، من فضلك قومي بتوضيح السؤال أكثر حتى نقوم بمساعدتك. ماهي مدخلات (inputs) الفيلتر ؟ وماهي مخرجاته (outputs) ؟ شكرا لك.1 نقطة
-
بارك الله فيكم وشكرا على تجاوبكم وردودكم1 نقطة
-
تحتاج لحلقة for عادية تمر على الأرقام و ليس على السطور بشكل مباشر، حيث أنه يمكنك أن تجعل الخطوة بمقدار 2 و ذلك عن طريق ثالث وسيط في ال range. يمكنك تكوين اسم الخانة على شكل سلسلة نصية، لاحظ في كودك قمت بوضع E2 هنا بدل هذا يمكنك وضع E و رقم السطر بعدها. رقم السطر يكون في الحلقة.1 نقطة
-
أخي إستصعب علي الكود هل هذه البداية صحيحة حيث أنه أريد البحث في عمودين لكل إسم و إيجاد أكبر قيمة مثلا في مادة عربي يكشف عن العمود E و العمود F for row in ws.iter_rows(row=2, col=5,values_only=True): id=row1 نقطة
-
كيف اسوي استعلام يجيب لي أعلى خمس كاتبين في post عدد ال مقالات أعلى شي لاكن خمس سجلات1 نقطة
-
بعد انتهاءك من هذه الدورة سوف تكون قد حصلت على معلومات كبيرة في الأساسيات المطلوبة لأي مجال، و بالتالي يمكنك البدء بأعمال بسيطة. في حال أردت التخصص في مجال معين يجب عليك أن تتابع دراستك في هذا المجال، هذه الدورة لا تختص في مجال معين و إنما تعطيك الأساسيات اللازمة لأي مجال مرتبط بعلوم الحاسوب سواء كان تطبيقات سطح مكتب أو تطبيقات موبايل أو صفحات ويب. هناك دورات في الأكاديمية تساعدك في التخصص، كل تخصص له دورة.1 نقطة
-
سأعطيك الفكرة العامة و يمكنك محاولة تطبيقها لوحدك حيث أنها تقريبا نفس الكود الخاص بك. بشكل أساسي أنت تريد المرور على كل اسم، كل اسم يحوي سطرين، و بالتالي بدلاً من كودك الذي يقوم بوضع قيم الأسطر بشكل ثابت يمكننا القيام بذلك بشكل ديناميكي باستعمال حلقة for. إن الأسطر الخاصة بالأسماء تبدأ من السطر الثاني و بالتالي يمكننا بدء حلقة ال for من ال 2، و في كل مرة نقوم بزيادتها بمقدار 2 (حيث أن كل اسم يحتاج سطرين)، في حال كان اسم المتغير الخاص بالحلقة هو i فإننا نريد الأسطر i و i+1. الباقي نفس الشيء حيث أن الأعمدة لا تختلف هنا.1 نقطة
-
أولاً: شكراً لك وجزاك الله خيراً على هذه المقالة التي كنت أبحث عنها. ثانياً: هل يوجد شرح بالفيديو لهذه المقالة؟ وإذا لم يوجد، هل يمكن توجيهي لفيديو يفيدني في هذا؟ وهل ضروري استخدام sql ، أم يمكن الاكتفاء بالموديول تبع الجانجو، واستعمال هذا الكود معه لن يسبب مشكلة؟1 نقطة
-
مثلما اشار المدربون فإن طريقة اضافة تعليق في PHP تختلف، نعني بـ Doc comment النوع الاخير الذي يبدوا كـ: /** * */ التعليق الذي يحتويه هذا النوع يسمى DocBlock وهو نوع من التعليقات التي يمكن أن توفر معلومات مطولة حول عنصر او جزئية ما في التعليمات البرمجية الخاصة بك. وذلك اما للمطورين الذين سيشتغلون مستقبلا على هاته الشيفرة او حتى لبيئات التطوير المتكاملة IDEs من مثل VS code التي تستعمل قواعد كتابة هذا التعليق في توثيق الشيفرة وفي توثيق الواجهات البرمجية. وعموما، يتكون هذا التعليق من: الملخص Summary وهو شرح موجز لما ستقوم به الجزئية المراد توضيحها. التوصيف Description وهو شرح اكثر تفصيلا لما ستقوم به الجزئية. الوسوم Tags وهي سلسلة من التوصيفات الاخرى التي تسبق برمز @ وتعبر عن معلومات من مثل عائد الدالة او نوع المعاملات او غيرها. لاحظ المثال: /** * .حساب العمر انطلاقا من تاريخ الميلاد * * تستعمل هاته الدالة الكائن كذا وكذا في حساب * الفارق الزمني بين كذا وكذا * * @see path/to/resource.php * @param {string} $date_of_birth * @return integer */ function getAge($date_of_birth){ }1 نقطة
-
بالإضافة للتعليق السابق تحتاج لإضافة التعليقات في الكود للعديد من الفوائد منها لجعل الآخرين يفهمون التعليمات البرمجية الخاصة بك (مفيدة جداً إذا كنت تعمل ضمن فريقعمل) ذكّر نفسك بما فعلته - لقد جرب معظم المبرمجين العودة إلى عملهم بعد عام أو عامين واضطرارهم إلى إعادة اكتشاف ما فعلوه. يمكن أن تذكرك التعليقات بما كنت تفكر فيه عندما كتبت الكود يمكنك استخدام التعليقات من خلال php عن طريق <?php // تعليق سطر واحد # تعليق سطر واحد ?> /* تعليق يمكن أن يكون على عدة أسطر */ و يمكنك استخدام التعليقات من خلال laravel blade عن طريق {{-- This comment will not be in the rendered HTML --}}1 نقطة
-
تعتبر تعليقات PHP Doc طريقة لإضافة الوثائق إلى كود PHP . يمكن استخدامه من خلال كتابة شرطة مائلة وعلامتين نجميتين (/ **) في البداية وعلامة النجمة والشرطة المائلة للأمام (* /) في النهاية. هذه التعليقات غير مرئية في إخراج البرنامج أي لا يتم تنفيذها وليس لها نتيجة، ولكن يمكن استخدامها لإنشاء وثائق باستخدام أدوات مثل phpDocumentor. ضمن التعليق ، يمكنك استخدام tags خاصة ، مثلparam وreturn ، لوصف الوظيفة ومعلماتها وقيمة الإرجاع الخاصة بها, على سبيل المثال /** This function adds two numbers * * @param int $a The first number * @param int $b The second number * * @return int The sum of the two numbers */ function add($a, $b) { return $a + $b; }``` في المثال السابق يوجد دالة لارجاع مجموع عددين, وقمنا بكتابة تعليق يشرح الهدف من هذه الدالة, واستخدمنا العلامة الخاصة param التي نصف بها المعاملات التي استخدمناها في الدالة وهما المعامل $a والمعامل $b واستخدمنا العلامة الخاصة return لوصف ما هو الراجع من الدالة, لا يتم تنفيذ هذه التعليقات وتستخدم فقط لغرض التوثيق حيث تساعد المطورين على فهم الغرض من الوظيفة ، والمعلمات ، وقيمة الإرجاع ، مما يسهل قراءة التعليمات البرمجية والحفاظ عليها ومراجعتها.1 نقطة
-
مرحبا كم مسار علي ان اكمل في دورة علوم الحاسوب لكي استطيع العمل ؟ ارجو الاجابة وشكرا1 نقطة