عيوب البرمجة الشائعة لتجنب

الناس ، بطبيعتهم ، عرضة لارتكاب الأخطاء. ومع ذلك ، يمكن تجنب العديد من أوجه القصور الخاصة بالمطورين. إذا كان المبرمج قادرًا على التخلص من الأخطاء الشائعة التي ستتم مناقشتها في هذه المقالة ، فسيكون قادرًا على كتابة رمز أفضل وأنظف.



إن إزالة العيوب في الكود لن يفيد فقط أولئك الذين يتخلصون منها ، ولكن أيضًا أولئك المبرمجين الذين يتعين عليهم قراءة هذا الكود. نتيجة لذلك ، يمكننا أن نقول أن أولئك الذين يعملون في فريق ويسعون لتحسين قواعدهم يفعلون ذلك ليس فقط لأنفسهم ، ولكن أيضًا لأولئك الذين يعملون معهم.

فيما يلي بعض العيوب الشائعة التي يجب على مبرمج تجنبها.

1. الكثير من الإجراءات في الوظيفة


وفقًا لمبدأ المسؤولية الفردية ، يجب أن تكون الوظيفة مسؤولة فقط عن أداء أي عملية واحدة. وهذا يجب أن يكون عملية واحدة فقط. لقد رأيت الكثير من الوظائف التي تؤدي عملية التحميل والمعالجة وتقديم بعض البيانات. ويعتقد أن تنفيذ مثل هذه الإجراءات هو أفضل توزيع على العديد من الوظائف. وظيفة واحدة تحمل البيانات ، وعمليات أخرى ، والثالثة هي المسؤولة عن عرضها.

السبب في أهمية وظائف الكتابة التي تركز على حل مشكلة واحدة هو أن هذا النهج يجعل الكود أكثر موثوقية. افترض أنه في الحالة أعلاه ، يتم تحميل البيانات من واجهة برمجة تطبيقات معينة. إذا تغيرت واجهة برمجة التطبيقات هذه ، على سبيل المثال ، إذا تم إصدار إصدار جديد ، فمن المحتمل جدًا أن تتوقف الوظيفة بأكملها عن العمل. سوف يقوم الكود الذي يقوم بتحميل البيانات بتحميل شيء خاطئ ، وسيؤثر ذلك على معالجة البيانات وعرضها. لحل المشكلة ، يجب عليك أولاً العثور عليها ، ومعرفة ما فشل ، ثم تحرير رمز دالة كبيرة. إذا تم تقسيم تحميل ومعالجة وعرض البيانات إلى عدة وظائف ، فسيكون حل مثل هذه المشكلات أسهل بكثير.

2. وقد علق المشروع رمز


شاهد الجميع الكود ، حيث يتم تعليق أجزاء كبيرة منها ، على سبيل المثال ، تحتوي على وظائف معينة. ومع ذلك ، لا أحد يعرف سبب عدم إزالة هذه الأجزاء من قاعدة الشفرة. ولا أحد يعلم ما إذا كانت هذه القطع من التعليمات البرمجية ستعمل إذا لم يتم تنفيذها. ولكن في نفس الوقت لا يتم إزالتها. وتحتاج إلى حذفها. السبب وراء تلويث هذا الرمز للمشاريع هو أن الجميع يشير إلى أن شخصًا ما قد يحتاج إلى هذا الرمز.

يجب حذف أجزاء التعليمات البرمجية هذه ببساطة. وإذا لم تكن هذه الأجزاء البعيدة موجودة في أحدث إصدار من التعليمات البرمجية ، وفي الوقت نفسه يحتاجها شخص ما بالفعل ، فيمكنك العثور عليها في نظام التحكم في الإصدار. ألاحظ أن هذا هو رأيي فقط في هذه القضية.

3. أسماء متغير سيئة


بمجرد أن كتبت مقالة قدمت قواعد بسيطة لاختيار أسماء المتغيرات الجيدة. أسماء المتغيرات النوعية مهمة للغاية. والحقيقة هي أن المبرمجين عادة لا يعملون في المشاريع وحدها. يحتاج زملاؤهم إلى فهم الكود الذي يكتبونه. تساعد الأسماء المتغيرة الصديقة على تحسين إدراك رمز شخص آخر.

أكرر ما قلته في المادة أعلاه: "اختيار أسماء متغيرات جيدة يستغرق وقتًا ، لكنه يوفر وقتًا أكثر مما يتطلبه الأمر."

4. "الأرقام السحرية" والسلاسل


إذا واصلنا مناقشاتنا حول مشكلة أسماء المتغيرات الغامضة ، فيمكننا التوصل إلى فكرة استخدام قيم معينة في البرنامج أو "الأرقام السحرية" أو الأوتار التي ليس لها أسماء على الإطلاق ولا تتم كتابتها إلى أي متغيرات.

يمكنك أن تتعلم من ويكيبيديا أن "الأرقام السحرية" تسمى ممارسة البرمجة السيئة عندما يتم العثور على قيمة عددية في النص المصدر وليس من الواضح ما يعنيه ذلك.

ألقِ نظرة على مثال الكود التالي:

for ($i = 1; $i <= 52; $i++) {     ... } 

هنا القيمة 52 هي "الرقم السحري". لا أحد يعرف لماذا هذا هو بالضبط الرقم 52 ، وماذا يعني ذلك. لماذا 52؟ لماذا لا 64؟ ربما هذا هو عدد الأسابيع في السنة؟
سيصبح هذا الرمز أكثر وضوحًا إذا قمت بإعادة كتابته كما يلي:

 $cardDeckSize = 52; for ($i = 1; $i <= $cardDeckSize; $i++) {    ... } 

الآن سوف يفهم أي شخص أننا في دورة نمر بها مجموعة أوراق. يشير هذا إلى المطورين الآخرين إلى جوهر ما يحدث ، ويساعد على فهم سياق الإجراء الذي يتم تنفيذه. هذا النهج ، بالإضافة إلى ذلك ، يبسط تغيير هذه القيمة إلى حد كبير ، لأنه ، إذا تم استخدامه في أماكن مختلفة من البرنامج ، يتم تعيينه في مكان واحد فقط في التعليمات البرمجية.

ينطبق الشيء نفسه على العمل مع السلاسل:

 if (userPasswordIsValid($user, "6yP4cZ".$password)) {    ... } 

ما هو هذا 6yP4cZ ؟ يشبه مجموعة أحرف عشوائية.

نعيد كتابة هذا:

 $salt = "6yP4cZ"; if (userPasswordIsValid($user, $salt.$password)) {    ... } 

ولكن الآن أصبح كل شيء أكثر وضوحًا.

5. تنسيق رمز غير دقيق


تنسيق التعليمات البرمجية غير المرتب "مرض" للمبرمجين المبتدئين. يميل العديد من المطورين الذين لديهم بعض الخبرة إلى إيماءة عندما يتم سؤالك عما إذا كانوا يعرفون اختبار أو عالم بيانات لا يقوم بتنسيق الشفرة جيدًا. السبب في ذلك هو قلة الخبرة. الاستثناءات الوحيدة هي أولئك المبرمجين الذين يستخدمون لغة مثل Python ، حيث يؤثر تنسيق الكود على تنفيذ البرنامج.

واحدة من الطرق الأكثر شيوعا لحل هذه المشكلة هو استخدام linter. جميع IDEs الحديثة ، بالإضافة إلى ذلك ، تدعم القدرة على تنسيق التعليمات البرمجية تلقائيا. في بعض الأحيان يتم تنفيذ هذه الوظيفة عن طريق المكونات الإضافية التي تحتاج إلى تثبيت نفسك ، وأحيانا يتم تضمينها في ميزات IDE القياسية.

6. القيم الثابت ترميز في التعليمات البرمجية


إذا تم ترميز القيم في برامج ، فهذا يعني أن البيانات مضمنة مباشرة في التعليمات البرمجية المصدر أو في كائنات أخرى مماثلة. عكس هذا النهج هو الحصول على البيانات من مصادر خارجية أو توليدها أثناء تنفيذ البرنامج.

لا تسمح القيم الثابتة بالإعداد السهل للبرنامج. إنهم ، إذا جاز التعبير ، "منحوتون في الحجر". يعتبر هذا نمطًا مضادًا أو يشير ، على الأقل ، إلى مشاكل واضحة في التعليمات البرمجية.

غالبًا ما تكون كلمات المرور ومسارات الملفات مضغوطة. يفعلون ذلك لعدة أسباب ، وأحيانًا يمكن تبريرهم.

على سبيل المثال ، يمكن رؤية العديد من القيم المرمّزة في بعض أمثلة التعليمات البرمجية المسؤولة عن المصادقة على الخدمات الخارجية أو واجهات برمجة التطبيقات. من الأفضل عدم القيام بذلك.

إذا لاحظ شخص ما الاستخدام المتكرر للقيم التي يتم ترميزها بشكل ثابت ، فيجب عليه تقييم عمله بشكل نقدي. والحقيقة هي أن استخدام هذه القيم عادةً ليس هو أفضل طريقة لحل بعض المشكلات.

أعزائي القراء! ما أوجه القصور في التعليمات البرمجية التي واجهتها؟

Source: https://habr.com/ru/post/ar483680/


All Articles