---
title: Clean Code Guidelines
localeTitle: تعليمات كود نظيفة
---
# تعليمات كود نظيفة

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

## استخدم أسماء المتغيرات الجيدة وقم بالتعليقات

تأكد من إنشاء أسماء متغيرة جيدة ، على سبيل المثال ، إذا كنت تقوم بإنشاء لعبة ، تجنب استخدام المتغير "a" استخدم شيئًا مثل "p1" يشير إلى اللاعب 1. إن [الترميز الهنغاري](https://en.wikipedia.org/wiki/Hungarian_notation) منتشر بشكل شائع ويمكن أن يعطيك بعض الخطوط الجانبية للإعلان المتغيرات.

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

## المتغيرات العالمية

يمكن أن تكون المتغيرات العالمية سهلة الاستخدام ، ومع القليل من التعليمات البرمجية قد تبدو وكأنها حل رائع. ولكن عندما يصبح الرمز أكبر وأكبر ، يصبح من الصعب معرفة متى يتم استخدامه.

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

 `#include <iostream> 
 using namespace std; 
 
 // Global variables are declared outside functions 
 int cucumber; // global variable "cucumber" 
` 

## استخدام الانتقال والمتابعة وما إلى ذلك.

هذا هو النقاش المعتاد بين المبرمجين ، تماما مثل المتغيرات العالمية ، وعادة ما تعتبر هذه الأنواع من البيانات ممارسة سيئة. تعتبر سيئة لأنها تؤدي إلى ["رمز spaguetti"](https://en.wikipedia.org/wiki/Spaghetti_code) . عندما نبرمج نحن نريد التدفق الخطي ، عند استخدام هذه العبارات يتم تعديل التدفق ويؤدي إلى تدفق "ملتوي ومتشابك".

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

استخدام الفاصل والمتابعة من الناحية العملية هو نفسه. استخدمها في المحولات ومحاولة جعل الوظائف ذات غرض وحيد بحيث يكون لديك نقطة خروج واحدة فقط.

![IMG](https://imgs.xkcd.com/comics/goto.png)

## تجنب تغيير متغير التحكم داخل حلقة for

عادة ما تكون هناك أعمال حول هذا تبدو أكثر وضوحا وأقل إرباكا ، على سبيل المثال. بينما الحلقات. فعل:

 `int i=1; 
 while (i <= 5) 
 { 
    if (i == 2) 
        i = 4; 
 
    ++i; 
 } 
` 

بدلا من:

 `for (int i = 1; i <= 5; i++) 
 { 
    if (i == 2) 
    { 
       i = 4; 
    } 
    // Do work 
 } 
` 

## أعلن الثوابت وأنواع في الجزء العلوي

عادة ما يتم الإعلان عنها بعد المكتبات ، وهذا يجعلها أكثر سهولة وقراءة أسهل. بالنسبة للمتغيرات المحلية ، يحدث الأمر نفسه ، وتعلن عنه في الأعلى (يقوم الآخرون بإعلانه بشكل أكبر في وقت لاحق من أجل توفير الذاكرة انظر: [cplusplus.com](http://www.cplusplus.com/forum/general/33612/)

## استخدم وظيفة إرجاع واحدة فقط في النهاية

وكما قلنا من قبل ، فإننا نميل إلى إدخال مدخل وخروج واحد فقط لجعل التدفق أكثر وضوحًا.

## استخدم الأقواس المتعرجة حتى عند كتابة إحدى الخطوط

سيساعدك جعلها بشكل منتظم على القيام بها بشكل أسرع وفي حالة رغبتك في تغيير الشفرة في المستقبل ، ستتمكن من القيام بذلك دون قلق.

بدلا من:

 `for (int i = 1; i <= 5; i++) 
    //CODE 
` 

فعل:

 `for (int i = 1; i <= 5; i++) 
 { 
    //CODE 
 } 
` 

## توصيات أخرى

*   #### استخدمه عندما تعرف عدد التكرارات ، بينما تفعل عندما لا تفعل ذلك.
    
*   #### استخدم const ، مررًا حسب القيمة / المرجع عندما يكون مناسبًا. هذا سوف يساعد في توفير الذاكرة.
    
*   \#### كتابة const في أحرف استهلالية ، أنواع البيانات تبدأ بـ T والمتغيرات في الحالة الصغيرة.
    

 `const int MAX= 100;             //Constant 
 typedef int TVector[MAX];       //Data type 
 TVector vector;                 //Vector 
`