الآن كيف نقيمها ؟ لا بد من معايير ..
موضوع رائع وطويل.. مشرفنا ...
وهو يلامس جانب من جوانب ((هندسة البرمجيات)) ..
على كل حال ..
سأتكلم عن جانب ((الأكواد)) فعندما نريد أن نقيم أي من المبرمج والبرنامج, ستكون بحسب هذه الأربع النقاط..
أولاً: أن يكون الكود واضح.
ثانياً: أن يكون الكود فعال.
ثالثاً: إستخدام الطرق السهلة والبعد عن التعقيد.
رابعاً: سهولة عمل صيانه للكود حتى مع مرور الزمن
---------------------
نأتي الآن لشرح النقاط بالأعلا ..
أولاً: أن يكون الكود واضح.
لكي يكون لدي الكود واضح .. يجب إتباع عدة خطوات, سنأخذ هذا الكود ونطبق علية النقاط.
كود:
case WM_MOUSEMOVE:
if (gMouseDown){gRect.left = LOWORD(lParam);
gRect.top = HIWORD(lParam);int move = HIWORD(lParam);
gRect.right = LOWORD(lParam);bool stop= LOWORD(lParam);
gRect.bottom = HIWORD(lParam);int fight = HIWORD(lParam);
InvalidateRect(hWnd,0,true);}
else{bool InitMainWindow();
int Run();
if (i >5){ for (int x=0; x<=GetColor(Col1,Col2,Col3); x++);}}
أولاً: White space (ترك مسافة بين جمل الأكواد)
كود:
case WM_MOUSEMOVE:
if (gMouseDown)
{
gRect.left = LOWORD(lParam);
gRect.top = HIWORD(lParam);
int move = HIWORD(lParam);
gRect.right = LOWORD(lParam);
bool stop= LOWORD(lParam);
gRect.bottom = HIWORD(lParam);
int fight = HIWORD(lParam);
InvalidateRect(hWnd,0,true);
}
else
{
bool InitMainWindow();
int Run();
if (i >5)
{
for (int x=0; x<=GetColor(Col1,Col2,Col3); x++)
}
}
bool InitMainWindow();
int Run();
ثانياً: Indentation (ترك مسافة في أول الفقرة)
كود:
case WM_MOUSEMOVE:
if (gMouseDown)
{
gRect.left = LOWORD(lParam);
gRect.top = HIWORD(lParam);
int move = HIWORD(lParam);
gRect.right = LOWORD(lParam);
bool stop= LOWORD(lParam);
gRect.bottom = HIWORD(lParam);
int fight = HIWORD(lParam);
InvalidateRect(hWnd,0,true);
}
else
{
bool InitMainWindow();
int Run();
if (i >5)
{
for (int x=0; x<=GetColor(Col1,Col2,Col3); x++)
}
}
ثالثاً: Alignment (جعل المتغيرات أو الدوال على خط واحد)
كود:
case WM_MOUSEMOVE:
if (gMouseDown)
{
gRect.left = LOWORD(lParam);
gRect.top = HIWORD(lParam);
int move = HIWORD(lParam);
gRect.right = LOWORD(lParam);
bool stop = LOWORD(lParam);
gRect.bottom = HIWORD(lParam);
int fight = HIWORD(lParam);
InvalidateRect(hWnd,0,true);
}
else
{
bool InitMainWindow();
int Run();
if (i >5)
{
for (int x=0; x<=GetColor(Col1,Col2,Col3); x++)
}
}
رابعاً: Grouping (جمع المتغيرات التي تنتمي لبعضها البعض)
كود:
case WM_MOUSEMOVE:
if (gMouseDown)
{
gRect.left = LOWORD(lParam);
gRect.top = HIWORD(lParam);
gRect.right = LOWORD(lParam);
gRect.bottom = HIWORD(lParam);
int move = HIWORD(lParam);
bool stop = LOWORD(lParam);
int fight = HIWORD(lParam);
InvalidateRect(hWnd,0,true);
}
else
{
bool InitMainWindow();
int Run();
if (i >5)
{
for (int x=0; x<=GetColor(Col1,Col2,Col3); x++)
}
}
خامساً:and named Comments (كتابة التعليقات والتسمية)..
توجد أربع أنواع لكتابة التعليقات وهي ..
c- style
كود:
/*
This is my comments
*/
c++ style
كود:
//Raad
//This is my comments
endline
كود:
em tt; // Instance of class
tt.d (); // to display the employ
nest end
كود:
if (play == 0)
{
if (!win)
{
for (int x = 0; x > 17; x++)
{
...
} // end for
} // end if
} // end if
الآن السؤال .. هل كتابة التعليقات تعني شرح كامل البرنامج .... أليس هذا الأمر يأخذ الكثير من الوقت... حسناً .. الذي أريد أن أقولة .. التالي ...
لو قمنا بتسمية المتغيرات والدوال بأسماء لها علاقة بعملها الفعلي .. أليس هذا الأمر سيوفر علي كتابة التعليقات ... أنظر إلى المثال من الحالة الأولي إلى الرابعة ..
كود:
//First Case
int x = 4; // x position for the player
//Second Case
int xpos = 4; // position for the player
//Third Case
int xPosition = 4; //player
//Fourth Case
int PlayerPostionX = 4;
ونفس الشئ بالنسبة للدوال
كود:
int dis();
int Display()
int DisplayFinallResult();
سادساً: جعل للدالة مهمة واحدة وعدم خلط المهام ..
كود:
void ShowAndUpdateWindows();
جعلها كالتالي:
كود:
void ShowWindows();
void UpdateWindows();
==================
لي عودة ..... لنكمل ...
ثانياً: أن يكون الكود فعال.
ثالثاً: إستخدام الطرق السهلة والبعد عن التعقيد.
رابعاً: سهولة عمل صيانه للكود حتى مع مرور الزمن