بسم الله الرحمن الرحيم
9. من الأفضل تحويل الأكواد الشائعة إلى دالة
عند تبدأ في البرمجة ، يفضل أن تضع أي كود في المكان الذي يجب أن يكون فيه
وعندما يكون كودك واضحا هكذا فسوف تبدأ بالملاحظة إن بعض الأجزاء من الكود تظهر مرارا وتكرارا. وهذه الأجزاء ستبدو كا حقل ألغام عندما نحاول التعديل فيها أو عندما تبدأ في تطوير برنامجك ،وذلك لأنك ستعمل على تحديد هذه الاكواد لتحويلها إلى دوال.
إذا كنت ترى أن هناك تكرار لأكواد حتى ولو مرتين ، فيفضل إن تنظر إلى تحويله إلى دالة
انظر إلى هذا المثال
01 $unclean1 = '<a href="javascript:alert(\'Holy Crap!\');">Click Me!</a>'; 02 03 $detagged1 = strip_tags($unclean1); 04 $deslashed1 = stripslashes($detagged1); 05 $clean1 = htmlentities($deslashed1, ENT_QUOTES, 'UTF-8'); 06 07 $unclean2 = "Let's call Björn!"; 08 09 $detagged2 = strip_tags($unclean2); 10 $deslashed2 = stripslashes($detagged2); 11 $clean2 = htmlentities($deslashed2, ENT_QUOTES, 'UTF-8'); 12 13 echo $clean1." ".$clean2;
كما ترون ، كل هذه النصوص تطلب عدة خطوات قبل أن تعتبر جاهزة للاستخدام. وستلاحظ أيضا أن هذه الخطوات يجب أن تأخذ بالاعتبار أهمية كل جزء من البيانات التي يعتمد عليها الكود
هذا مثال على استخدام الوظائف بدلاً من الأجزاء الزائدة.
01 unclean1 = 'Click Me!'; $unclean2 = "Let's call Bj?rn!";
02
03 $clean1 = sanitize_input($unclean1);
04 $clean2 = sanitize_input($unclean2);
05
06 echo $clean1." ".$clean2;
07
08 function sanitize_input( $input )
09 {
10 $detagged = strip_tags($input);
11 $deslashed = stripslashes($detagged);
12 return htmlentities($deslashed, ENT_QUOTES, 'UTF-8');
13 }بتحويل الأكواد المتكررة إلى دالة ، ترى أنة سهل قليلاً على المطور معرفة ما يجرى في الكود وأيضا سهل عملية تحرير بعض الخطوات .
10. تحويل الوظائف ذات الصلة إلى فئة
اعتيادك على التعامل مع البرمجة الشيئية هو أحد الأشياء التي أرى سرعة تعلمها لهذا أضعها في قائمة “أفضل الممارسات”
“إذا كان لديك مجموعة من الدوال التي تتعامل مع قواعد البيانات ، فيمكنك أن توفر على نفسك الكثير من الوقت والمجهود من خلال تجميعهم داخل فئة معينة”
…………..
تعلم البرمجة الشيئية هو بالتأكيد خارج نطاق هذه القائمة ، ولكنني شعرت أنة يجب ذكره في قائمة المبتدئين
11. أستخدم المتغير ” الثابت” وليس “العام”.
عندما بدأت في برمجة المشاريع الكبيرة , وجدت نفسي استخدم المتغير العام في كثير من الأحيان
كنت أخزن البيانات العامة للتطبيقات مثل (اسم المواقع وعرض الصور) ومتغيرات قواعد البيانات ، ووجدت نفسي بعد ذلك أستخدم المتغير العام $GLOBALS superglobal لكي أصل لهذه المعلومات
بعد ذلك أدركت أن بى أتش بى تسمح لك بتعريف المتغيرات الثابتة الخاصة بك باستخدام الدالة define().
المتغير الثابت هو وسيلة رائعة لتخزين معلومات مثل (aforementioned app-wide data) وبيانات قاعدة البيانات. ويقدم وميزة إضافية ، هي أنة لا يمكنك التعديل ، بحيث يضمن عدم إعادة الكتابة على أي من البيانات بطريق الخطأ
ومن ناحية “أفضل الممارسات” ، فليس مشجعا استخدام المتغير العام كبداية ، وبالتالي فإن الأفضل استخدام الثابت
ركز في المثال القادم وانظر بنفسك.
01 <!--?php
02
03 define('FOO', 'constant value');
04
05 $bar = 'global value';
06
07 echo baz();
08
09 function baz()
10 {
11 $constant = ' Constant: ' . FOO;
12 $global = 'Global: ' . $GLOBALS['bar'];
13
14 return $constant . "<br /-->\n" . $global;
15 }
16
17 ?>12. لا تخاف من استخدام (Includes).
الطريقة المقبولة عموما لتعريف (Includes) هي وضع أي جزء من الأكواد البرمجية التي ستستخدم بصورة متكررة فى ملف Includes) مثل (تفاصيل اتصال قاعدة البيانات ، الرأس والتزيل المشتركة عبر الموقع ككل، الوظائف ) بحيث يمكن استدعائها من قبل الملف الذى يحتاجها ، بدلا من نسخها ولصقها.
على سبيل المثال ، على موقع مكون من صفحات عديدة ، القالب القياسى ، قد يظهر بهذا الشكل .
<?php // Application-wide data and database connection require_once 'constants.inc.php'; require_once 'database.inc.php'; // Utility functions require_once 'utilities.inc.php'; // Header markup require_once 'header.inc.php'; /* * Page-specific processing goes here */ // Footer markup require_once 'footer.inc.php'; ?>
13. لا تجعل الأداء يستحوذ على كل تفكيرك بصورة زائدة
هذا نوع من أنواع تعطيل الوقت “للمطورين” ، وهذا سئ جدا ، هناك خط غير واضح بين الكتابة بكفاءة وبين إضاعة الوقت لمحاولة تقليل وقت تنفيذ الكود. لـ 5ملى ثانية .
فقط عليك بقراءة بعض المقالات التي تتكلم عن الأداء للبعد عن الأشياء التي تجعل الكود بطئ ، ولكن لا تضيع الوقت لإعادة عمل برنامجك من أجل تحويل علامة الاقتباس المزدوجة لعلامة واحدة لأنك فقط اكتشفت أنها كانت أسرع نسبياً
استخدم عقلك وتجنب المشاكل الكبيرة ، وابق مطلعاً ، في حال وجدت نصائح ستجعل الكود أسرع ولم تسمع بها من قبل .
لا أحد يستطيع معرفة الفرق بين تحميل الصفحة بوقت 25 ملى ثانية و 40 ثانية
فقط تأكد أنها ليست 700 ملى ثانية وانتقل لأشياء أكثر أهمية.
14. تجنب دمج أكواد الهتمل داخل برامجك النصية.
هذا قد يكون صعبا ، ولكن حاول بقدر ما تستطيع تجنب دمج كود الهتمل داخل كود ا ل بى اتش بى ، أنة من المستحيل تقريبا حدوث ذلك ، ولكن تأكد من أنك لا تدمج أكواد غير ضرورية داخل برنامجك النصي.
انظر إلى المثال
echo '<div class="example-div"><p>This is some test content.</p></div>';
أكان من الضروري دمج الفقرة داخل وسم (div) ؟ هل من الممكن أن يتم تعديلها لتشمل فقط وسم الفقرة التي تحتوى على النص ؟
ألق نظرة على الحل البديل:
<div class="example-div"> <?php echo '<p>This is some test content.</p>'; ?> </div>
ملحوظة : هذا المثال بسيط بطريقة كبيرة. إنشاء كود هتمل مع كود بى اتش بى هو عادة معقد وخصوصا حينما يتم التعامل مع دوال معقدة أو إجراء مسئول عن متغير .
فى معظم الحالات يمكنك وضع كود الهتمل خارج كود بى اتش بى ، وهذا يجهل الأمور أسهل في القراءة ، وأسهل في العمل أيضا
15. عند العمل في مشروع حاول إن تستخدم على الأقل مفهوم واحد جديد.
لن تتعلم أبدا إذا ما كنت تستمر في فعل الشيء نفسه كل مرة . حاول على قدر الإمكان. أن تجرب مفهوم جديد لم تتعود على التعامل معه في كل مشروع تعمل به
لا تبالغ في طموحك، ولكن أدفع نفسك خارج المنقطة إلتى أنت معتاد عليها فهذا يوفر لك تحديات جديدة ، ويبعد عنك الملل ، ويجبرك على التقدم كا مطور.
إنظر الى المشروع ككل ، وابحث عن الأشياء التي تعرفها جيدا أو على الأقل فعلتها قبل ذلك ، واختر منطقة لما تعمل بها قبل ذلك . ثم أبدا العمل بها
16. لا تكن فخورا جدا بالتغير .
سوف تخطأ. في كثير من الأحيان.0 ولكن هذا ليس شيئا سيئا .
كلما تتحسن ، ستجد حلول جديدة للمشاكل التي كنت تواجها من قبل ، لا تشعر بالجهل ، فأنت تتعلم .
ولكن من المهم جدا أن لا تصبح متعلق بالكود الذي تكتبه. لا تعتقد أن طريقتك أفضل لأنها فقط طريقتك ، راقب أي شئ مختلف و اسألأ نفسك ما الذي يمكن أن أفعلة لأصبح أفضل . وضع هذه الأشياء في ملف تحت عنوان “أشياء قد تعلمتها”.
لا تتسمح لنفسك أن تعتقد بان “هذا الحل” هو الحل المقبول ، فقط لأنك ترى ذلك ، فهذا هو الغرور (وإن لم تكن واع لهذا فالغرور فهو عادة لا يؤدى إلى شئ جيدا)
17. التحقق من صحة النتائج.
إذا كنت مبرمج ويب ، فأبدا بالاعتياد على التحقق من صحة المدخلات في أقرب وقت ممكن
“إن التحقق من صحة المدخلات يتم من اجل التأكد من تطابق الصيغة التي طلبتها ، مثل التحقق من حقل البريد الالكتروني بكتابة بريد صحيح ، أو التحقق من أسم المستخدم .”
من الممكن أن يكون ممل وشاق ، ولكن التأكد من صحة البيانات سيحسن لديك الخبرة كمستخدم وسيجنبك العديد من الأخطاء .
ملحوظة :فريق البرمجة بشركة سبوت لاير ينصح بشدة بهذة النقطة, حيث انها تعتبر الفارق الآخير في حساب قوة برمجياتك
18. قوائم بيضاء بدلا من قوائم سوداء.
في كثير من الحالات ، سترغب في منع أو التخلص من وسوم معينة ، مثل عناوين البريد الالكتروني ،و كلمات وغيرها من مختلف البيانات
وهناك حل شائع وهو عمل قائمة سوداء تضم كل الوسوم والمصطلحات الممنوعة
وهذا يطرح مشكلة ، فيجب عليك أن كون أكثر ذكاء من الشخص الذي يحاول أن يفعل بك شئ ضاراً فعلى سيبل المثال ، في حالة تعطيل الجافا اسكربت في المشاركات ، فهذا قد منع الضغطة الواحدة (onclick attribute) فضلا عن الباقي .
و ماذا لو نسيت واحدة ؟ وماذا لو تم إضافة واحدة جديدة في المستقبل ؟
إذا لم تكن هذة على رأس القائمة السوداء ، فستظهر نقاط ضعف.
ومع ذلك ، لإنقاذ نفسك من هذا الصداع استخدم القائمة البيضاء كلما أمكن . القائمة البيضاء هي عكس السوداء : تحتوى على العلامات المسموح بها .
على سبيل المثال ، فى وظيفة strip_tags() ، يمكنك توفير القائمة البيضاء لتحديد العلامات المسموح بها في النص
strip_tags($string, '<em><strong><tt>');
لا يمكن التهرب من المشاكل عن طريق القوائم ، ولكن القول أن هناك مسموح بة و وليس مسموح بة
يوفر لك مزيد من الثقة ومزيد من التحكم في الكود.
19. تعلم العد مثل الكومبيوتر .
هل تبحث عن نصيحة رقم 20 ؟ ، تذكر أنة في جميع الحالات ، العد في بى اتش بى يبدأ من صفر لذلك هذه هي النصيحة رقم 20 ، وستجد أن هذا هو الحال في معظم اللغات .
ملخص:
إذا كنت مبتدئا ، النصائح الموجودة في الأعلى ستساعدك على اتخاذ خطوات كبيرة للأمام نحو عادات جيدة وممارسه أفضل . لا تخف إذا كانت كل هذه النصائح جديدة عليك .
فقط أبدا خطوة بخطوة …(انظر نصيحة رقم 15)
النهاية ......
.........................................
ترجم من قبل "محمد فوزى" من فريق عمل " سبوت لاير "
