А.В. Столяров - Оформление программного кода (1108519), страница 16
Текст из файла (страница 16)
 ïðèíöèïå, ñëåäîâàíèå ýòîìó ïðàâèëó íå îáÿçàòåëüíî (ìîæíî îáîéòèñü áåç ïðîáåëîâïîñëå íàçâàíèé îïåðàòîðîâ), íî èìåííî òàêàÿ ðåêîìåíäàöèÿ âñòðå÷àåòñÿâî ìíîãèõ ðóêîâîäñòâàõ ïî ñòèëþ îôîðìëåíèÿ êîäà.Âîçâðàùàÿñü ê ïðîáåëàì âíóòðè ñêîáîê, äîáàâèì, ÷òî èíîãäà ìîæíîâñòðåòèòü âàðèàíò ñòèëÿ, ïðè êîòîðîì òàêèå ïðîáåëû ñòàâÿòñÿ â çàãîëîâêàõ îïåðàòîðîâ, íî íå â âûçîâàõ ôóíêöèé:for( i = 0; f(i) < g(); i++ ) {if( !cond(i) ) {proceed(i);break;}}Ìîæíî ïðèäóìàòü è äðóãèå âàðèàíòû äîïóñòèìûõ ñòèëåé. Âûáîð, êàêîáû÷íî, çà âàìè.Íåñêîëüêî îñîáíÿêîì ñòîèò âîïðîñ î òîì, êàêèå èç àðèôìåòè÷åñêèõîïåðàöèé ñëåäóåò âûäåëÿòü ïðîáåëàìè, è êàê (ñ îäíîé ñòîðîíû èëè ñîáåèõ). Îäíà èç ñàìûõ ïîïóëÿðíûõ è ïðè ýòîì âíÿòíûõ ðåêîìåíäàöèéçâó÷èò òàê:ñèìâîëû áèíàðíûõ îïåðàöèé âûäåëÿþòñÿ ïðîáåëàìèñ îáåèõ ñòîðîí, ñèìâîëû óíàðíûõ îïåðàöèé ïðîáåëàìè íå âûäåëÿþòñÿ.
Ïðè ýòîì ñëåäóåò ó÷èòûâàòü, ÷òî îïåðàöèè âûáîðêè ïîëÿ èçñëîæíîé ïåðåìåííîé (òî÷êà â Ïàñêàëå è Ñè, ¾ñòðåëêà¿ â Ñè) áèíàðíûìè íå ÿâëÿþòñÿ, ïîñêîëüêó ñïðàâà ó íèõ íå îïåðàíä, à íàçâàíèå ïîëÿ,êîòîðîå íå ìîæåò áûòü çíà÷åíèåì âûðàæåíèÿ. Ïîä÷åðêí¼ì, ÷òî òàêîéñòèëü ÿâëÿåòñÿ íàèáîëåå ïîïóëÿðíûì, íî íèêîèì îáðàçîì íå åäèíñòâåííûì; âîçìîæíî ñëåäîâàíèå ñîâñåì äðóãèì ïðàâèëàì, íàïðèìåð â ëþáîì âûðàæåíèè âûäåëÿòü ïðîáåëàìè áèíàðíûå îïåðàöèè íàèìåíüøåãîïðèîðèòåòà (òî åñòü îïåðàöèè ñàìîãî ¾âåðõíåãî¿ óðîâíÿ), à îñòàëüíûåïðîáåëàìè íå âûäåëÿòü, è òàê äàëåå.682.7.
Îñîáåííîñòè ÏàñêàëÿÎôîðìëåíèå êîäà íà ëþáîì ÿçûêå ïðîãðàììèðîâàíèÿ èìååò ñâîè îñîáåííîñòè, îáóñëîâëåííûå èìåííî ýòèì ÿçûêîì. Âûøå ìû óæå îñòàíàâëèâàëèñü íà öåëîì ðÿäå ìîìåíòîâ, ðàçëè÷àþùèõñÿ äëÿ Ïàñêàëÿ è Ñè; ýòîòïàðàãðàô ìû ïîëíîñòüþ ïîñâÿòèì Ïàñêàëþ.2.7.1. Ðåãèñòð áóêâ, êëþ÷åâûå ñëîâà èèäåíòèôèêàòîðûÎäíà èç îñîáåííîñòåé Ïàñêàëÿ åãî ïðèíöèïèàëüíàÿ íå÷óâñòâèòåëüíîñòü ê ðåãèñòðó áóêâ: îäèí è òîò æå èäåíòèôèêàòîð ìîæíî íàïèñàòüêàê myname, MYNAME, MyName, mYnAmE è òàê äàëåå.
Òî æå ñàìîå êàñàåòñÿ èêëþ÷åâûõ ñëîâ: begin, Begin, BEGIN, bEgIn... êîìïèëÿòîð âñ¼ ñòåðïèò.Òåì íå ìåíåå, íàèáîëåå ðàñïðîñòðàíåíî ìíåíèå, ÷òîêëþ÷åâûå ñëîâàñëåäóåò ïèñàòü íà íèæíåì ðåãèñòðå (ò. å. ìàëåíüêèìè áóêâàìè)è íå ïðèäóìûâàòü íà ýòó òåìó íè÷åãî ëèøíåãî. Èç ýòîãî ïðàâèëà ìîæíîñäåëàòü îäíî âïîëíå ëîãè÷íîå èñêëþ÷åíèå: íàïèñàòü áîëüøèìè áóêâàìèòå BEGIN è END, êîòîðûå îáðàìëÿþò ãëàâíóþ ïðîãðàììó.Èíîãäà ìîæíî âñòðåòèòü ïðîãðàììû íà Ïàñêàëå, â êîòîðûõ êëþ÷åâûåñëîâà íàïèñàíû ñ áîëüøîé áóêâû: Begin, End, If è ò. ä.; ïîïàäàþòñÿ òàêæå ïðîãðàììû, â êîòîðûõ ñ áîëüøîé áóêâû íàïèñàíû òîëüêî íàçâàíèÿóïðàâëÿþùèõ îïåðàòîðîâ (If, While, For, Repeat), à âñå ïðî÷èå, âêëþ÷àÿ begin è end, ïèøóòñÿ íà íèæíåì ðåãèñòðå. Âñ¼ ýòî äîïóñòèìî, õîòÿè ýêçîòè÷íî; íåîáõîäèìî òîëüêî ÷¼òêî ñôîðìóëèðîâàòü äëÿ ñåáÿ ïðàâèëà, â êàêèõ ñëó÷àÿõ êàê ìû ïèøåì êëþ÷åâûå ñëîâà, è íåóêîñíèòåëüíîñëåäîâàòü èì âî âñåé ïðîãðàììå.Ñîâñåì ðåäêî ìîæíî âñòðåòèòü òåêñò, ãäå âñå êëþ÷åâûå ñëîâà âîñïðîèçâåäåíû çàãëàâíûìè áóêâàìè.
Êàê ïîêàçûâàåò ïðàêòèêà, òàêîé òåêñò÷èòàåòñÿ òÿæåëåå; ñëåäîâàòåëüíî, òàê ïèñàòü íå íàäî. Íó è, åñòåñòâåííî,íå íàäî ïðèáåãàòü ê èçûñêàì âðîäå BeGiN èëè, ñêàæåì, FunctioN òàêîåòîæå âñòðå÷àåòñÿ â ïðîãðàììàõ, íî îòíîñèòñÿ ê îáëàñòè áåññìûñëåííîãîïîç¼ðñòâà.×òî êàñàåòñÿ âûáîðà èì¼í äëÿ èäåíòèôèêàòîðîâ, òî â Ïàñêàëå ñëîæèëèñü îïðåäåë¼ííûå òðàäèöèè íà ýòó òåìó. Åñëè èìÿ ïåðåìåííîéñîñòîèò èç îäíîé áóêâû èëè ïðåäñòàâëÿåò ñîáîé êîðîòêóþ àááðåâèàòóðó (÷òî âïîëíå äîïóñòèìî äëÿ ëîêàëüíûõ ïåðåìåííûõ, ñì. 1.2.1),èìÿ òàêîé ïåðåìåííîé îáû÷íî ïèøóò íà íèæíåì ðåãèñòðå: i, j, t,tmp, res, cnt è ò. ï.
Åñëè æå èìÿ ïåðåìåííîé (à ðàâíî èìÿ òèïà, ïðîöåäóðû èëè ôóíêöèè, êîíñòàíòû, ìåòêè è òàê äàëåå) ñîñòîèò èç îäíîãî èëè íåñêîëüêèõ ñëîâ, òî ýòè ñëîâà çàïèñûâàþò ñëèòíî,ïðè ýòîì êàæäîå ñëîâî íà÷èíàþò ñ áîëüøîé áóêâû: Counter, Summa,69StrangeGlobalVariable, ListPtr, UserListItem, ExcellentFunction,KillThemAll, ProduceSomeCompleteMess è òîìó ïîäîáíîå.2.7.2. Âëîæåííûå ïîäïðîãðàììûÏàñêàëü îäèí èç íåìíîãèõ ÿçûêîâ, â êîòîðûõ âîçìîæíû ïîäïðîãðàììû âíóòðè ïîäïðîãðàìì. Áåçäóìíîå èñïîëüçîâàíèå ýòîé âîçìîæíîñòè ïðèâîäèò ê òîìó, ÷òî â êîäå ñòàíîâèòñÿ òðóäíî ¾íàéòè êîíöû¿: ïîäïðîãðàììû âåðõíåãî óðîâíÿ íà÷èíàþò ðàçáóõàòü, âáèðàÿ â ñåáÿ âñ¼ íîâûåè íîâûå âëîæåííûå ïîäïðîãðàììû, èòîãîì ÷åãî âïîëíå ìîæåò ñòàòü ðàññòîÿíèå â íåñêîëüêî ýêðàíîâ êîäà ìåæäó çàãîëîâêîì ïîäïðîãðàììû èïîñëåäíèì å¼ end'îì.
Ðàñïóõíóòü òàêàÿ ¾ìàòð¼øêà¿ ìîæåò íå òîëüêî ââûñîòó, íî è â øèðèíó: ÷àñòî âîçíèêàåò ñîáëàçí âíóòðè âëîæåííîé ïðîöåäóðû èëè ôóíêöèè ïðåäóñìîòðåòü åù¼ îäíó âëîæåííóþ ïîäïðîãðàììó, èòàê äàëåå. Åñòåñòâåííî, êàæäóþ òàêóþ ¾áîëåå âëîæåííóþ¿ ïîäïðîãðàììó ïðèõîäèòñÿ ñäâèãàòü âñ¼ äàëüøå è äàëüøå âïðàâî, îñòàâëÿÿ ìåíüøåðåçåðâà íà âëîæåííîñòü óïðàâëÿþùèõ êîíñòðóêöèé. ëèòåðàòóðå âñòðå÷àåòñÿ ðåêîìåíäàöèÿ âîâñå íå èñïîëüçîâàòü âëîæåííûå ïîäïðîãðàììû, íî ýòî âñ¼ æå ñëèøêîì êàòåãîðè÷íûé âàðèàíò.Âëîæåííûå ïîäïðîãðàììû ñîñëóæàò âàì õîðîøóþ ñëóæáó, åñëè âû áóäåòå ïðèäåðæèâàòüñÿ íåñêîëüêèõ ïðîñòûõ ïðàâèë:1. óðîâåíü âëîæåííîñòè ïîäïðîãðàìì äîëæåí áûòü òîëüêî îäèí; íåñëåäóåò âêëàäûâàòü íîâûå ïîäïðîãðàììû âíóòðü óæå èìåþùèõñÿâëîæåííûõ ïîäïðîãðàìì;2.
âëîæåííûå ïîäïðîãðàììû äîëæíû áûòü íåáîëüøèìè: îáû÷íî èõòåëî íå ïðåâûøàåò òð¼õ-÷åòûð¼õ ñòðîê;3. îáùàÿ äëèíà ïîäïðîãðàììû âíåøíåãî óðîâíÿ íå äîëæíà ïðåâûøàòü 5070 ñòðîê, âêëþ÷àÿ âñå âëîæåííûå ïîäïðîãðàììû.Åñëè ó âàñ âîçíèêëî æåëàíèå íàïèñàòü ïîäïðîãðàììó, â êîòîðóþ âëîæåíî áîëüøîå êîëè÷åñòâî ëîêàëüíûõ ïîäïðîãðàìì, ïðè÷¼ì íåêîòîðûå èçíèõ èìåþò çíà÷èòåëüíûé ðàçìåð ñêîðåå âñåãî, ýòî çíà÷èò, ÷òî âàì ñëåäóåò ðàññìîòðåòü âûäåëåíèå âñåãî ýòîãî êîäà â îòäåëüíûé ìîäóëü.2.7.3. Êàê óïðàâèòüñÿ ñ ñåêöèÿìè îïèñàíèéÑòàíäàðò Ïàñêàëÿ òðåáóåò æåñòêîãî ïîðÿäêà ñëåäîâàíèÿ ñåêöèé îïèñàíèé, íî, ê ñ÷àñòüþ, ñóùåñòâóþùèå ðåàëèçàöèè ýòîìó òðåáîâàíèþ íåñëåäóþò, ïîçâîëÿÿ ðàñïîëàãàòü ñåêöèè îïèñàíèé â ïðîèçâîëüíîì ïîðÿäêåè ñîçäàâàòü áîëüøå îäíîé ñåêöèè ëþáîãî òèïà â ÷àñòíîñòè, íå îáÿçàòåëüíî îãðàíè÷èâàòüñÿ òîëüêî îäíîé ñåêöèåé îïèñàíèÿ ïåðåìåííûõ.70Âñ¼ ýòî äà¼ò âîçìîæíîñòü îòëè÷àòü íàñòîÿùèå ãëîáàëüíûå ïåðåìåííûå îò ïåðåìåííûõ, êîòîðûå íóæíû â îñíîâíîé ïðîãðàììå, íî ê êîòîðûìïðè ýòîì íå íóæåí äîñòóï èç ïîäïðîãðàìì.
Íàïðèìåð, åñëè â ãëàâíîéïðîãðàììå ïðèñóòñòâóåò öèêë è äëÿ íåãî íóæíà öåëî÷èñëåííàÿ ïåðåìåííàÿ öèêëà, òî, çà íåèìåíèåì ëó÷øåãî, îïèñàòü òàêóþ ïåðåìåííóþ ïðèä¼òñÿ â ñåêöèè îïèñàíèé ïåðåìåííûõ, îòíîñÿùåéñÿ êî âñåé ïðîãðàììå,îäíàêî ñîâåðøåííî ÿñíî, ÷òî íèêàêîãî îòíîøåíèÿ ê ãëîáàëüíûì ïåðåìåííûì îíà íå èìååò.
 ñâÿçè ñ ýòèì áóäåò ëó÷øå, åñëèâñ¼, ÷òî íóæíî â ãëàâíîé ïðîãðàììå è òîëüêî â íåé ïåðåìåííûå, ìåòêè,èíîãäà òèïû, êîòîðûå íå èñïîëüçóþòñÿ íèãäå, êðîìå ãëàâíîéïðîãðàììû ñëåäóåò îïèñàòü íåïîñðåäñòâåííî ïåðåä ñëîâîìbegin, îáîçíà÷àþùèì íà÷àëî ãîëîâíîé ïðîãðàììû, ò. å.
ïîñëåâñåõ îïèñàíèé ïîäïðîãðàìì. Åñëè âàì íóæíû íàñòîÿùèå ãëîáàëüíûå ïåðåìåííûå òî åñòü òàêèå, äîñòóï ê êîòîðûì îñóùåñòâëÿåòñÿ èçáîëåå ÷åì îäíîé ïîäïðîãðàììû, ëèáî èç ãëàâíîé ïðîãðàììû è ïîäïðîãðàììû òî äëÿ èõ îïèñàíèé ñëåäóåò ñîçäàòü åù¼ îäíó ñåêöèþ var, íàýòîò ðàç ïåðåä îïèñàíèÿìè ïîäïðîãðàìì.Çàìåòèì, ÷òî ïåðåõîä ìåæäó ÷àñòÿìè ïðîãðàììû ïî ìåòêàì íåâîçìîæåí, òàê ÷òî, òîãäà êàê ìåòêè, îïèñûâàåìûå â ¾ãëîáàëüíîé¿ ñåêöèè îïèñàíèÿ ìåòîê, äîëæíû ïðåäíàçíà÷àòüñÿ äëÿ ãëàâíîé ïðîãðàììû.
Ñëåäîâàòåëüíî,ìåòêè, èñïîëüçóåìûå â ïîäïðîãðàììàõ, äîëæíûâ íèõ æå è îïèñûâàòüñÿåñëè â ãëàâíîé ïðîãðàììå èñïîëüçóþòñÿìåòêè, ñåêöèÿ èõ îïèñàíèé äîëæíà íàõîäèòüñÿ íåïîñðåäñòâåííîïåðåä íà÷àëîì ãëàâíîé ïðîãðàììû.2.8. Îñîáåííîñòè ÿçûêà Ñè2.8.1. Ñîãëàøåíèÿ îá èìåíàõ îòëè÷èå îò Ïàñêàëÿ, ÿçûê Ñè ÷óâñòâèòåëåí ê ðåãèñòðó áóêâ, òàê ÷òîíèêàêîé ñâîáîäû â íàïèñàíèè êëþ÷åâûõ ñëîâ çäåñü íå îáíàðóæèâàåòñÿ:íàïðèìåð, if ýòî íàçâàíèå îïåðàòîðà, òîãäà êàê If, iF è IF ýòîîáûêíîâåííûå èäåíòèôèêàòîðû, ïðèòîì ðàçëè÷íûå.Êàê è äëÿ Ïàñêàëÿ, äëÿ ÿçûêà Ñè ìîæíî óêàçàòü îïðåäåë¼ííûå òðàäèöèè, ñëîæèâøèåñÿ âîêðóã èìåíîâàíèÿ îáúåêòîâ ïðîãðàììû, è ýòè òðàäèöèè îêàçûâàþòñÿ ñîâåðøåííî èíûìè.
Èäåíòèôèêàòîðû, ñîñòîÿùèå èç íåñêîëüêèõ ñëîâ, íàáèðàþò îáû÷íî ïîëíîñòüþ íà íèæíåì ðåãèñòðå, ðàçäåëÿÿ ñëîâà çíàêîì ïîä÷¼ðêèâàíèÿ:counter, summa, strange_global_variable, list_ptr, user_list_item,excellent_function, kill_them_all, produce_some_complete_mess è òîìó ïîäîáíîå.
Ëîêàëüíûå ïåðåìåííûå îáû÷íî îáîçíà÷àþò êîðîòêèìè èìåíàìè, òàêèìè êàê i, ch, tmp, str è ò. ï.71Êàê èçâåñòíî, ìàêðîïðîöåññîð ÿçûêà Ñè îòðàáàòûâàåò ïîñëå ëåêñè÷åñêîãî àíàëèçà, íî äî àíàëèçà ñèíòàêñè÷åñêîãî (è, åñòåñòâåííî, ñåìàíòè÷åñêîãî). Êàê ñëåäñòâèå, èäåíòèôèêàòîðû ìàêðîñîâ (ìàêðîèìåíà) âÿçûêå Ñè íå ïîä÷èíÿþòñÿ îáëàñòÿì âèäèìîñòè, ÷òî äåëàåò èõ îïàñíûìè.Ïîýòîìó ïðîãðàììèñòû, ðàáîòàþùèå íà Ñè, îáû÷íî ñëåäóþò òðàäèöèè,ïî êîòîðîé èäåíòèôèêàòîðû ìàêðîñîâ íàáèðàþòñÿ öåëèêîì íà âåðõíåìðåãèñòðå (áîëüøèìè áóêâàìè). Åñòåñòâåííî, â èìåíà ìàêðîñîâ ìîãóò âõîäèòü òàêæå ñèìâîë ïîä÷¼ðêèâàíèÿ è, ïðè íåîáõîäèìîñòè, öèôðû:#define VERY_DANGEROUS_MACRO 756Èäåíòèôèêàòîðû, ñî÷åòàþùèå â ñåáå áóêâû îáîèõ ðåãèñòðîâ,ïðè ðàáîòå íà ÿçûêå Ñè îáû÷íî íå èñïîëüçóþòñÿ.
Åñëè âû óâèäåëèïðîãðàììó íà Ñè, â êîòîðîé èìåþòñÿ èäåíòèôèêàòîðû ¾ñìåøàííîãî ðåãèñòðà¿, òàêèå êàê MixedCase, isItGood, CamelIsAnAnimal, exGF è ïðî÷ååâ òàêîì äóõå ñêîðåå âñåãî, àâòîð òàêîé ïðîãðàììû ðåäêî ïèøåò íà Ñè,ÿâëÿÿñü ïîêëîííèêîì êàêîãî-íèáóäü äðóãîãî ÿçûêà. Îòìåòèì, ÷òî ñêàçàííîå âåðíî ëèøü äëÿ ÷èñòîãî Ñè; òðàäèöèè ÿçûêà Ñè++ ñîâåðøåííîèíûå, è ê íèì ìû åù¼ âåðí¼ìñÿ.Èíîãäà ìîæíî âñòðåòèòü, â òîì ÷èñëå â ñèñòåìíûõ áèáëèîòåêàõ è çàãîëîâî÷íûõ ôàéëàõ, ïðèìåíåíèå ¾ñìåøàííîãî ðåãèñòðà¿ äëÿ èìåíîâàíèÿ ñòðóêòóðíûõòèïîâ, à â íåêîòîðûõ ñëó÷àÿõ è äëÿ äðóãèõ öåëåé. Áûëî áû íåïðàâèëüíî óòâåðæäàòü, ÷òî ýòî íåäîïóñòèìî, êîëü ñêîðî ÿñíîñòè ïðîãðàìì òàêîé ñòèëü íå âðåäèò.Òåì íå ìåíåå, ìû íå ðåêîìåíäóåì èñïîëüçîâàòü òàêèå îòñòóïëåíèÿ îò òðàäèöèîííîãî èìåíîâàíèÿ.Íåñêîëüêî îñîáíÿêîì ñòîÿò èäåíòèôèêàòîðû, èìåíà êîòîðûõ íà÷èíàþòñÿ ñ ïîä÷¼ðêèâàíèÿ.
Òðàäèöèîííî ñ÷èòàåòñÿ, ÷òî ýòè èìåíà çàðåçåðâèðîâàíû çà ñèñòåìîé ïðîãðàììèðîâàíèÿ, òî åñòü, íàïðèìåð, ðàçðàáîò÷èêèñèñòåìíûõ çàãîëîâî÷íûõ ôàéëîâ ìîãóò èñïîëüçîâàòü òàêèå èìåíà äëÿñâîèõ âíóòðåííèõ íóæä, íå âíîñÿ èõ â äîêóìåíòàöèþ.  ñâÿçè ñ ýòèìíå ñëåäóåò ïîëüçîâàòüñÿ èìåíàìè, íà÷èíàþùèìèñÿ ñ ïîä÷¼ðêèâàíèÿ,â ñâîèõ ïðîãðàììàõ: òàêèå èìåíà (íàïðèìåð, _counter, _error_code,__LINES_NUM è ò. ï.) ìîãóò âñòóïèòü â êîíôëèêò ñ çàãîëîâî÷íûìè ôàéëàìè, ïîñòàâëÿåìûìè âìåñòå ñ êîìïèëÿòîðîì. Ñëåäóåò ó÷èòûâàòü, ÷òî,äàæå åñëè îäíî êîíêðåòíîå èìÿ íè ê êàêèì êîíôëèêòàì íå ïðèâåëî,ýòî íå ÿâëÿåòñÿ îñíîâàíèåì äëÿ äàëüíåéøåãî åãî èñïîëüçîâàíèÿ: îäíèìèç îñíîâíûõ äîñòîèíñòâ ÿçûêà Ñè ÿâëÿåòñÿ ïåðåíîñèìîñòü ïðîãðàìì,à èñïîëüçîâàíèå ïîòåíöèàëüíî ¾êîíôëèêòíûõ¿ èì¼í ýòó ïåðåíîñèìîñòü,åñòåñòâåííî, ñíèæàåò, âåäü åñëè â âàøåé êîíêðåòíîé âåðñèè áèáëèîòå÷íûõ çàãîëîâî÷íèêîâ ñîîòâåòñòâóþùåãî èìåíè íåò, òî ýòî íå çíà÷èò, ÷òîòàêîå æå èìÿ íå ïîÿâèòñÿ ïðè ðàáîòå ñ äðóãèì êîìïèëÿòîðîì, íà äðóãîéïëàòôîðìå, äà è ïðîñòî â îäíîé èç áóäóùèõ âåðñèé âàøåé ñèñòåìû ïðîãðàììèðîâàíèÿ.