Ïðè èñïîëüçîâaíèè öènëîâ íaäî ñòðåìèòüñя îáúåäèíяòü èíèöèaëèçaöèþ, ïðîâåðnó óñëîâèя âûõîäa è ïðèðaùåíèå â îäíîì ìåñòå. Ðåêîìåíäaöèè ïî âûáîðó íaèáîëåå ïîäõîäяùåãî îïåðaòîða öèêëa áûëè ïðèâåäåíû ía ñ. 49. Ïðè çaïèñè èòåðaòèâíûõ öèêëîâ (â êîòîðûõ äëя ïðîâåðêè óñëîâèя âûõîäa èñïîëüçóþòñя ñîîòíîøåíèя ïåðåìåííûõ, ôîðìèðóþùèõñя â òåëå öèêëa), íåîáõîäèìî ïðåäóñìaòðèâaòü aâa- ðèñíûñ âûõîä ïî äîñòèæåíèè çaðaíåå çaäaííîãî ìaêñèìaëüíîãî êîëè÷åñòâa èòå- ðaöèé.
Íåîáõîäèìî ïðîâåðяòü nîäû âîçâðaòa îøèáîn è ïðåäóñìaòðèâaòü ïå÷aòü ñîîáùå- íèé â òåõ òî÷êaõ ïðîãðaììû, êóäa óïðaâëåíèå ïðè íîðìaëüíîé ðaáîòå ïðîãðaì- ìû ïåðåäaâaòüñя íå äîëæíî (èìåííî ýòî ñîîáùåíèå âû ñ áîëüøîé âåðîяòíîñòüþ ïîëó÷èòå ïðè ïåðâîì æå çaïóñêå ïðîãðaììû). Íaïðèìåð, îïåðaòîð switCh äîëæåí èìåòü ñëîâî default ñ îáðaáîòêîé ñèòóaöèè ïî óìîë÷aíèþ, îñîáåííî åñëè â íåì ïåðå÷èñëåíû âñå âîçìîæíûå çía÷åíèя ïåðåêëþ÷aòåëя.
Ñîîáùåíèå îá îøèánå äîëæíî áûòü èíôîðìaòèâíûì è ïîäñêaçûâaòü ïîëüçîâaòå- ëþ, êaê åå èñïðaâèòü. Íaïðèìåð, ïðè ââîäå íåâåðíîãî çía÷åíèя â ñîîáùåíèè äîë- æåí áûòü óêaçaí äîïóñòèìûé äèaïaçîí.
Îïåðaöèè âûäåëåíèя è îñâîáîæäåíèя äèíaìè÷åñêîé ïaìяòè ñëåäóåò ïîìåùaòü â îäíó è òó æå ôóíêöèþ. Óòå÷êè ïaìяòè, êîãäa åå âûäåëèëè, a îñâîáîäèòü çaáû- ëè, ñîçäaþò áîëüøèå ïðîáëåìû â ïðîãðaììaõ, ïðîäîëæèòåëüíîñòü ðaáîòû êîòî- ðûõ íå îãðaíè÷åía: ía ñåðâåðaõ áaç äaííûõ, â îïåðaöèîííûõ ñèñòåìaõ è ò. ä.
Ïîñëå íaïèñaíèя ïðîãðaììó ñëåäóåò òùaòåëüíî îòðåäanòèðîâaòü (äëя ýòîãî ïî- ëåçíî ïðåäñòaâèòü ñåáå, ê ïðèìåðó, ÷òî åå ïèñaë âaø çëåéøèé âðaã, êîòîðîãî âû õîòèòå óëè÷èòü â ïîëíîé íåêîìïåòåíòíîñòè) — óáðaòü íåíóæíûå ôðaãìåíòû, ñãðóïïèðîâaòü îïèñaíèя, îïòèìèçèðîâaòü ïðîâåðêè óñëîâèé è öèêëû, ïðîâåðèòü, îïòèìaëüíî ëè ðaçáèåíèå ía ôóíêöèè è ò. ä. Ïîäõîäèòü ê íaïèñaíèþ ïðîãðaììû íóæíî òaêèì îáðaçîì, ÷òîáû åå ìîæíî áûëî â ëþáîé ìîìåíò ïåðåäaòü äðóãîìó ïðîãðaììèñòó. Ïîëåçíî äaòü ïî÷èòaòü ñâîþ ïðîãðaììó êîìó-íèáóäü èç äðóçåé
èëè êîëëåã (a åùå ëó÷øå — âðaãîâ èëè çaâèñòíèêîâ), è â òåõ ìåñòaõ, êîòîðûå íå áóäóò èì ïîíяòíû áåç óñòíûõ êîììåíòaðèåâ, âíåñòè èõ ïðяìî â òåêñò ïðî- ãðaììû.
Êîììåíòaðèè èìåþò î÷åíü âaæíîå çía÷åíèå, ïîñêîëüêó ïðîãðaììèñò, êaê íè ñòðaííî, ÷aùå ÷èòaòåëü, ÷åì ïèñaòåëü. Äaæå åñëè ñîïðîâîæäaþùèì ïðîãðaììè- ñòîì яâëяåòñя aâòîð ïðîãðaììû, ðaçáèðaòüñя ÷åðåç ãîä â ïëîõî äîêóìåíòèðîâaí- íîì òåêñòå — ñîìíèòåëüíîå óäîâîëüñòâèå.
Äaëüíåéøèå ñîâåòû êañaþòñя êîììåíòaðèåâ è ôîðìaòèðîâaíèя òåêñòa ïðîãðaì- ìû. Ïðîãðaììû ía C++ âåñüìa ïëîõî ÷èòaåìû (ëó÷øå, ÷åì ïðîãðaììû ía Perl, íî õóæå, ÷åì ía Pascal), è â íèõ îñîáåííî âaæíî ïðèäåðæèâaòüñя õîðîøåãî ñòèëя ïðè ôîðìaòèðîâaíèè è äîêóìåíòaöèè.
«Ïðîãðaììa áåç êîììåíòaðèåâ íåñîïðîâîæäaåìa. Ýòî… ÷añîâaя áîìáa, a íå êîì- ïüþòåðíaя ïðîãðaììa» [9]. Ïðîãðaììa, åñëè îía èñïîëüçóåòñя, æèâåò íå îäèí ãîä, ïîòðåáíîñòü â êaêèõ-òî åå íîâûõ ñâîéñòâaõ ïîяâëяåòñя ñðaçó æå ïîñëå ââîäa â ýêñïëóaòaöèþ, è ñîïðîâîæäåíèå ïðîãðaììû çaíèìaåò ãîðaçäî áîëüøèé ïðîìå- æóòîê âðåìåíè, ÷åì åå íaïèñaíèå. Îñíîâíaя ÷añòü äîêóìåíòaöèè äîëæía íaõî- äèòüñя â òåêñòå ïðîãðaììû. Õîðîøèå êîììåíòaðèè íaïèñaòü ïî÷òè òaê æå ñëîæ- íî, êaê è õîðîøóþ ïðîãðaììó.
Êîììåíòaðèè äîëæíû ïðåäñòaâëяòü ñîáîñ ïðaâèëüíûå ïðåäëîæåíèя áåç ñînðaùå- íèñ è ñî çíanaìè ïðåïèíaíèя1 è íå äîëæíû ïîäòâåðæäaòü î÷åâèäíîå (êîììåíòa- ðèè â ýòîé êíèãå íå ìîãóò ñëóæèòü îáðaçöîì, ïîñêîëüêó îíè ïðåäíaçía÷åíû äëя îáó÷åíèя, a íå äëя ñîïðîâîæäåíèя). Íaïðèìåð, áåññìûñëåííû ôðaçû òèïa «âû- çîâ ôóíêöèè f» èëè «îïèñaíèå ïåðåìåííûõ». Åñëè nîììåíòaðèñ n ôðaãìåíòó ïðî- ãðaììû çaíèìaåò íåñnîëünî ñòðîn, ëó÷øå ðaçìåñòèòü åãî äî ôðaãìåíòa, ÷åì ñïðaâa îò íåãî, è âûðîâíяòü ïî âåðòènaëè. Àáçaöíûñ îòñòóï nîììåíòaðèя äîë- æåí ñîîòâåòñòâîâaòü îòñòóïó nîììåíòèðóåìîãî áëîna.
// Êîììåíòaðèé, îïèñûâaþùèé,
// ÷òî ïðîèñõîäèò â ñëåäóþùåì íèzå
// áëîêå ïðîãðaììû.
{ /* Íåïîíяòíûé áëîê
ïðîãðaììû */}
Äëя ðaçäåëåíèя ôóíêöèé è äðóãèõ ëîãè÷åñêè çaêîí÷åííûõ ôðaãìåíòîâ ïîëüçóé- òåñü ïóñòûìè ñòðîêaìè èëè êîììåíòaðèåì âèäa
//------------------------------------------------------
Âëîæåííûå áëînè äîëæíû èìåòü îòñòóï â 3–4 ñèìâîëa, ïðè÷åì áëîêè îäíîãî óðîâíя âëîæåííîñòè äîëæíû áûòü âûðîâíåíû ïî âåðòèêaëè. Æåëaòåëüíî, ÷òîáû çaêðûâaþùaя ôèãóðíaя ñêîáêa íaõîäèëañü ñòðîãî ïîä îòêðûâaþùåé. Ôîðìaòè- ðóéòå òåêñò ïî ñòîëáöaì âåçäå, ãäå ýòî âîçìîæíî:
inClude inClude int main(){
1 Cîâñåì õîðîøî, åñëè îíè ïðè ýòîì íå áóäóò ñîäåðæaòü îðôîãðaôè÷åñêèõ îøèáîê.
dOuble
|
m[10];
|
// êîììåíòaðèé
|
COnst Char
|
s[] = "2, 38.5, 70, 0, 0, 1";
|
// êîììåíòaðèé
|
Char
|
*p = s;
|
// êîììåíòaðèé
|
int
|
i = 0;
|
// êîììåíòaðèé
|
//
dO{
m[i++] = atOf(p); if (i > 9) break;
}while(p = strChr(p, ','), p++); fOr( intk= 0; kprintf("%5.2f ", m[k]); return 0;
}
Äëя óëó÷øåíèя яñíîñòè ìîæíî îòñòóïèòü îò ïðaâèëa îòñòóïîâ:
if ( is_best ) best(); else if ( is_bad ) wOrse(); else if ( is_vOvOChka ) wOrst();
Ïîìå÷añòå nîíåö äëèííîãî ñîñòaâíîãî îïåðaòîða:
while(1){
while(gets(s)){
fOr(i = 0; i<10; i++){ fOr(j = 0; j<10; j++){
// äâå ñòðaíèöû êîäa
} // fOr(j = 0; j<10; j++)
} // fOr(i = 0; i<10; i++)
} // while(gets(s))
} // while(1)
Íå ñëåäóåò ðaçìåùaòü â îäíîé ñòðîêå ìíîãî îïåðaòîðîâ. Êaê è â ðóññêîì яçûêå,
ïîñëå çíanîâ ïðåïèíaíèя äîëæíû èñïîëüçîâaòüñя ïðîáåëû:
f=a+b; // ïëîõî! Ëó÷øåf=a+ b;
Î÷åíü ìíîãî êîíêðåòíûõ ðåêîìåíäaöèé ïî ïðîãðaììèðîâaíèþ è ïðîåêòèðîâa- íèþ ïðîãðaìì ía C++ ñîäåðæèòñя â êíèãå Àëåía È. Ãîëóáa [9]. Ìaññó èíòåðåñ- íîãî ìîæíî ïî÷åðïíóòü, îñèëèâ áåç ìaëîãî 1000 ñòðaíèö êíèãè Á. Còðaóñòðóïa [17].  çaêëþ÷åíèå õîòåëîñü áû ïðèâåñòè öèòaòó èç ýòîé êíèãè: «Âîïðîñ “Êaê ïè- ñaòü õîðîøèå ïðîãðaììû ía C++?” íaïîìèíaåò âîïðîñ “Êaê ïèñaòü õîðîøóþ aíã- ëèéñêóþ ïðîçó?”. Åñòü äâa ñîâåòa: “Çíaé, ÷òî õî÷åøü ñêaçaòü” è “Òðåíèðóéñя. Ïîäðaæaé õîðîøåìó ñòèëþ”. Îáa ñîâåòa ãîäяòñя êaê äëя C++, òaê è äëя aíãëèé- ñêîé ïðîçû, è îáîèì îäèíaêîâî ñëîæíî ñëåäîâaòü.»
Do'stlaringiz bilan baham: |