C ïðèîáðåòåíèåì îïûò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 nîòîðîñ íóæíî ñòðåìèòüñя, — ïîëó÷èòü ëåãnî ÷èòaåìóþ ïðî- ãðaììó âîçìîæíî áîëåå ïðîñòîñ ñòðónòóðû. Øèðîêî èçâåñòåí âåðíûé â áîëü- øèíñòâå ñëó÷aåâ äåâèç — «Better simpler than clever» (ëó÷øå ïî-ïðîñòîìó, ÷åì ïî-óìíîìó).  êîíå÷íîì ñ÷åòå âñå òåõíîëîãèè ïðîãðaììèðîâaíèя íaïðaâëåíû ía äîñòèæåíèå èìåííî ýòîé öåëè, ïîñêîëüêó òîëüêî òaê ìîæíî äîáèòüñя íaäåæíî-
ñòè è ïðîñòîòû ìîäèôèêaöèè ïðîãðaììû1. Cìûñë äåâèç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åò:
inClude
main (int t, int _, Char *a){return!0?_<13?main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?
main(_,t,"@n'+, '/*s{}w+/w Cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w q n+,/ {l+,/n\
{n+,/+ n+,/ ; q n+,/+k ;*+,/'r :'d*'3,}{w+K w'K:'+}e ';dq 'l q '+d'K !\
/+k ;q 'r}eKK }w'r}eKK{nl]'/ ; q n'){) }w'){){nl]'/+ n';d}rw' i; ){nl]!\
/n{n '; r{ w'r nC{nl]'/ {l,+'K {rw' iK{;[{nl]'/w q n'wk nw' iwk{KK{nl]!/\
w{%'l w ' i; :{nl]'/*{q 'ld;r'}{nlwb!/*de}'C ;;{nl'-{}rw]'/+,} '*}\
nC,', nw]'/+kd'+e}+; 'rdq w! nr'/ ') }+}{rl '{n' ') }'+} (!!/")
:t<-50?_==*a?putChar(31[a]):
main(-65,_,a+1):
main((*a=='/')+t,_,a+1):
0:*a=='/'||main(0,main(-61,*a,
"!ek;dC i@bK'(q)-[w]*%n+r3 l,{}:\nuwlOCa-O;m .vpbks,fxntdCeghiry"
),a+1);
}
Äëя òåõ, êòî ïîëåíèëñя íaáðaòü ïðèâåäåííûé âûøå òåêñò ía êëaâèaòóðå, ñêîìïè- ëèðîâaòü åãî è çaïóñòèòü ïðîãðaììó ía âûïîëíåíèå, ïðèâåäó ôðaãìåíò åå âû- âîäa:
On the first day Of Christmas my true lOve gave tO me a partridge in a pear tree.
On the seCOnd day Of Christmas my true lOve gave tO me twO turtle dOves
and a partridge in a pear tree.
On the third day Of Christmas my true lOve gave tO me three frenCh hens, twO turtle dOves
and a partridge in a pear tree.
…
On the twelfth day Of Christmas my true lOve gave tO me
1 Ìîæåò ïîêaçaòüñя ñòðaííûì, ça÷åì ñ ñaìîãî ía÷aëa äóìaòü î ìîäèôèêaöèè ïðîãðaììû. Íî âåäü äëя ëþáîãî ñêîëüêî-íèáóäü óäa÷íîãî êîììåð÷åñêîãî ïðîäóêòa âûõîä íîâûõ âåð- ñèé — åäèíñòâåííûé ñïîñîá íå ïîòåðяòü aêòóaëüíîñòü ñðåäè ïîëüçîâaòåëåé.
twelve drummers drumming, eleven pipers piping, ten lOrds a-leaping, nine ladies danCing, eight maids a-milking, seven swans a-swimming, six geese a-laying, five gOld rings;
fOur Calling birds, three frenCh hens, twO turtle dOves and a partridge in a pear tree.
Ïåðâûé øaã â íaïèñaíèè ïðîãðaììû — çaïèñaòü ía åñòåñòâåííîì яçûnå (âîç- ìîæíî, ñ ïðèìåíåíèåì îáîáùåííûõ áëîê-ñõåì), ÷òî èìåííî è êaê îía äîëæía äåëaòü. Åñëè âû íå ìîæåòå ñôîðìóëèðîâaòü aëãîðèòì ïî-ðóññêè, âåëèêa âåðîяò- íîñòü òîãî, ÷òî îí ïëîõî ïðîäóìaí (åñòåñòâåííî, я íå èìåþ â âèäó, ÷òî íaäî «ïðî- ãîâaðèâaòü» âñå ía óðîâíå îòäåëüíûõ îïåðaòîðîâ, íaïðèìåð, «èçìåíяя èíäåêñ îò 1 äî 100 ñ øaãîì 1…»). Ò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êîí÷åííîå äåéñòâèå îôîðìëяåòñя â âèäå ôóí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 1–2 ýêðaía: îäèíaêîâî ñëîæíî ðaçáèðaòüñя â ïðîãðaì- ìå, ñîäåðæaùåé íåñêîëüêî íåîáúяòíûõ ôóíêöèé, è â ðîññûïè èç ñîòåí ïîäïðî- ãðaìì ïî íåñêîëüêî ñòðîê êaæäaя.
Åñëè íåêîòîðûå äåéñòâèя âñòðå÷aþòñя â òåëå ïðîãðaììû õîòя áû äâaæäû, èõ òaê- æå íóæíî îôîðìèòü â âèäå ôóíêöèè. Îäíîòèïíûå äåéñòâèя îôîðìëяþòñя â âèäå ïåðåãðóæåííûõ ôóíêöèé èëè ôóíêöèé ñ ïaðaìåòðaìè. Êîðîòêèå ôóíêöèè èìååò ñìûñë îáúяâèòü ñ äèðåêòèâîé inline.
Íåîáõîäèìî òù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 i, j èëè k. Èìåía ìaêðîñîâ ïðåäïî÷òèòåëü- íåå çaïèñûâaòü çaãëaâíûìè áóêâaìè, ÷òîáû îòëè÷aòü èõ îò äðóãèõ îáúåêòîâ ïðîãðaììû. Íå ðåêîìåíäóåòñя èñïîëüçîâaòü èìåía, ía÷èíaþùèåñя ñ ñèìâîëa ïîä÷åðêèâaíèя, èìåía òèïîâ, îêaí÷èâaþùèåñя ía _t, a òaêæå èäåíòèôèêaòîðû, ñîâïaäaþùèå ñ èìåíaìè ðåñóðñîâ ñòaíäaðòíîé áèáëèîòåêè C++.
Do'stlaringiz bilan baham: |