Главная » Просмотр файлов » А.В. Столяров - Оформление программного кода

А.В. Столяров - Оформление программного кода (1108519), страница 15

Файл №1108519 А.В. Столяров - Оформление программного кода (А.В. Столяров - Оформление программного кода) 15 страницаА.В. Столяров - Оформление программного кода (1108519) страница 152019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 15)

Äåëîâ òîì, ÷òî ÷èòàòåëü âàøåé ïðîãðàììû èìåííî òàì (ãäå-òî ñïðàâà) îæèäàåò óâèäåòü òèï âîçâðàùàåìîãî çíà÷åíèÿ, è íà òî, ÷òîáû îòûñêàòü åãîíà ñëåäóþùåé ñòðî÷êå ñëåâà, à íå ñïðàâà, ÷èòàòåëþ ïðèä¼òñÿ ïîòðàòèòüëèøíèå óñèëèÿ. Âñ¼ âìåñòå ìîæåò âûãëÿäåòü ïðèìåðíî òàê:procedureVeryGoodProcedure(fpar: integer; spar: MyBestRecordPtr; str: string);begin{...}end;functionVeryGoodFunction(fpar: integer; spar: MyBestRecordPtr; str: string): ExcellentRecordPtr;begin{...}end;Äëÿ ÿçûêà Ñè ìîæíî ïîñîâåòîâàòü óêàçàòü íà îòäåëüíîé ñòðîêå òèïâîçâðàùàåìîãî çíà÷åíèÿ, à òàêæå âñåâîçìîæíûå ¾õèòðûå¿ àòðèáóòû,êàê-òî static, inline è òîìó ïîäîáíîå.

 Ñè++ âñòðå÷àþòñÿ àòðèáóòûôóíêöèé, çàïèñûâàåìûå ïîñëå ñïèñêà ïàðàìåòðîâ: const äëÿ êîíñòàíòíûõ ìåòîäîâ è àòðèáóò throw(), êîòîðûå òàêæå ìîæíî ðàçìåñòèòü íàîòäåëüíîé ñòðîêå, ñäâèíóâ ìàêñèìàëüíî âïðàâî. Íàêîíåö, åñëè ôóíêöèÿâîçâðàùàåò çíà÷åíèå ñëîæíîãî òèïà, ÷àñòü îïèñàíèÿ ýòîãî òèïà ìîæåòòàêæå îêàçàòüñÿ â êîíöå çàãîëîâêà7 . Ïîñêîëüêó òèï âîçâðàùàåìîãî çíà÷åíèÿ â Ñè ìîæåò çàíèìàòü äîâîëüíî ìíîãî ìåñòà, òàêîå ðàçáèåíèå èíîãäà ïîçâîëÿåò ñïðàâèòüñÿ ñ ÷ðåçìåðíî äëèííûì çàãîëîâêîì:static const char * const *make_commandline_vector(command_database_item *lst, int cmdid, int t){/* ... */}Îòìåòèì, ÷òî òàê âñ¼ æå ëó÷øå íå ïèñàòü; åñëè âîñïîëüçîâàòüñÿ äèðåêòèâîéäëÿ îïèñàíèÿ òèïà âîçâðàùàåìîãî çíà÷åíèÿ, ÿñíîñòü ïðîãðàììû ðåçêî âîçðàñò¼ò.

Ó÷òèòå, ÷òî, íàïðèìåð, îïèñàíèå ôóíêöèè, êîòîðàÿ âîçâðàùàåò óêàçàòåëü íàìàññèâ óêàçàòåëåé íà ôóíêöèè, ïðèíèìàþùèå íà âõîä óêàçàòåëü íà ôóíêöèþ, çàñòàâèò íàäîëãî çàäóìàòüñÿ áîëüøèíñòâî ïðîãðàììèñòîâ, äàæå î÷åíü îïûòíûõ, ÷òî áûîíè òàì íè ãîâîðèëè íà ýòó òåìó.7typedef64Åñëè âñå âûøåïðèâåä¼ííûå ñïîñîáû íå ïîìîãëè è çàãîëîâîê ïîïðåæíåìó íå ïîìåùàåòñÿ ïî øèðèíå â 79 çíàêîìåñò, âàì îñòà¼òñÿ òîëüêîîäèí âàðèàíò ðàçáèòü íà ÷àñòè ñïèñîê ïàðàìåòðîâ. Åñòåñòâåííî, ïåðåâîäû ñòðîê âñòàâëÿþòñÿ ìåæäó îïèñàíèÿìè îòäåëüíûõ ïàðàìåòðîâ.

Äëÿÿçûêà Ñè â ýòîì ïëàíå âñ¼ î÷åâèäíî, ñòðîêó ðàçðûâàþò ñðàçó ïîñëå çàïÿòîé, ñòîÿùåé ïîñëå î÷åðåäíîãî èìåíè ïàðàìåòðà, òîãäà êàê äëÿ Ïàñêàëÿåñòü åù¼ îäíà îñîáåííîñòü: åñëè íåñêîëüêî ïàðàìåòðîâ èìåþò îäèí òèïè ïåðå÷èñëåíû ÷åðåç çàïÿòóþ, æåëàòåëüíî îñòàâèòü èõ íà îäíîé ñòðîêå,à ðàçðûâû ñòðîê ðàçìåùàòü ïîñëå òî÷êè ñ çàïÿòîé, ñòîÿùåé ïîñëå èìåíè òèïà.  ëþáîì ñëó÷àå, îñòà¼òñÿ âîïðîñ îòíîñèòåëüíî ãîðèçîíòàëüíîãîðàçìåùåíèÿ (ñäâèãà) âòîðîé è ïîñëåäóþùèõ ñòðîê.

Êàê è äëÿ ðàññìîòðåííûõ âûøå ñëó÷àåâ äëèííîãî âûðàæåíèÿ è äëèííîãî âûçîâà ïîäïðîãðàììû, çäåñü åñòü òðè âàðèàíòà: (1) íà÷àòü ñïèñîê ïàðàìåòðîâ íà îäíîéñòðîêå ñ èìåíåì ïîäïðîãðàììû, à ïîñëåäóþùèå ñòðîêè ñäâèíóòü íà ðàçìåð îòñòóïà; (2) íà÷àòü ñïèñîê íà îäíîé ñòðîêå ñ èìåíåì ïîäïðîãðàììû,à ïîñëåäóþùèå ñòðîêè ñäâèíóòü òàê, ÷òîáû âñå îïèñàíèÿ ïàðàìåòðîâ íà÷èíàëèñü â îäíîé è òîé æå ïîçèöèè (ýòîò ñëó÷àé íå ãîäèòñÿ, êîãäà äëÿôîðìàòèðîâàíèÿ èñïîëüçóåòñÿ òàáóëÿöèÿ), è (3) ðàññìàòðèâàÿ èìÿ ïîäïðîãðàììû è îòêðûâàþùóþ ñêîáêó êàê çàãîëîâîê ñëîæíîé ñòðóêòóðû,ñíåñòè îïèñàíèå ïåðâîãî ïàðàìåòðà íà ñëåäóþùóþ ñòðîêó, ñäâèíóâ åãîíà ðàçìåð îòñòóïà, îñòàëüíûå ïàðàìåòðû ðàçìåñòèòü ïîä íèì, à êðóãëóþ ñêîáêó, çàêðûâàþùóþ ñïèñîê ïàðàìåòðîâ, ðàçìåñòèòü íà îòäåëüíîéñòðîêå â ïåðâîé ïîçèöèè (ïîä íà÷àëîì çàãîëîâêà).2.5.4.

Äëèííàÿ ñòðîêîâàÿ êîíñòàíòà (ñòðîêîâûéëèòåðàë)Ñëó÷àé, êîãäà â ñòðîêå íå ïîìåùàåòñÿ òåêñòîâàÿ êîíñòàíòà, çàñëóæèâàåò îñîáîãî îáñóæäåíèÿ. Êîíå÷íî, ñàìîå õóäøåå, ÷òî ìîæíî ñäåëàòü ýòî ¾çàýêðàíèðîâàòü¿ ñèìâîë ïåðåâîäà ñòðîêè, ïðîäîëæèâ ñòðîêîâûé ëèòåðàë â íà÷àëå ñëåäóþùåé ñòðî÷êè êîäà.:Íå äåëàéòå òàê íèêîãäàprintf("This is a string which unfortunately is \too long to fit on a single code line\n");ßçûê Ñè++ äëÿ òàêèõ ñëó÷àåâ ïîääåðæèâàåò êîíêàòåíàöèþ ñòðîêîâûõ ëèòåðàëîâ: äâå ñòðîêîâûå êîíñòàíòû, âñòðå÷åííûå â òåêñòå ïðîãðàììû ïîäðÿä (ðàçäåë¼ííûå òîëüêî ïðîáåëüíûìè ñèìâîëàìè, âêëþ÷àÿ,åñòåñòâåííî, ïåðåâîä ñòðîêè), êîìïèëÿòîð ¾ñîëü¼ò¿ â îäíó ñòðîêó, ÷òîïîçâîëÿåò íàïèñàòü òàê:printf("This is a string which unfortunately is ""too long to fit on a single code line\n");65 Ïàñêàëå òàêîé âîçìîæíîñòè íåò, íî åñòü îïåðàöèÿ ñëîæåíèÿ ñòðîê, ÷òîïîçâîëÿåò ñäåëàòü òàê:writeln('This is a string which unfortunately is ' +'too long to fit on a single code line');Îäíàêî â ÷èñòîì Ñè íåò íè îäíîé èç ýòèõ âîçìîæíîñòåé.

Êðîìå òîãî, åäèíîå òåêñòîâîå ñîîáùåíèå, âûäàâàåìîå êàê îäíà ñòðîêà (ò. å. íå ñîäåðæàùåå ñèìâîëîâ ïåðåâîäà ñòðîêè ñðåäè âûäàâàåìîãî òåêñòà), âîîáùå ëó÷øåíå ðàçíîñèòü íà ðàçíûå ñòðîêè êîäà (ñì. çàìå÷àíèå íà ñòð. 24). Îñòà¼òñÿïîïðîáîâàòü åù¼ äâà ñïîñîáà áîðüáû ñ äëèíîé ñòðîêîâîãî ëèòåðàëà.Âî-ïåðâûõ, êàê ýòî íè áàíàëüíî, ñòîèò ïîäóìàòü, íåëüçÿ ëè ñîêðàòèòü ñîäåðæàùóþñÿ â ñòðîêå ôðàçó áåç ïîòåðè ñìûñëà. Êàê èçâåñòíî,êðàòêîñòü ñåñòðà òàëàíòà. Íàïðèìåð, äëÿ ðàññìàòðèâàåìîãî ïðèìåðàâîçìîæåí òàêîé âàðèàíò:printf("String too long to fit on a line\n");Ñìûñë àíãëèéñêîé ôðàçû ìû îñòàâèëè ïðåæíèì, íî òåïåðü îíà, âîïðåêèñîáñòâåííîìó ñìûñëó, âïîëíå íîðìàëüíî ïîìåùàåòñÿ â ñòðîêå êîäà.Âî-âòîðûõ (åñëè ñîêðàùàòü íè÷åãî íå õî÷åòñÿ), ìîæíî çàìåòèòü, ÷òîíåêîòîðûå ñòðîêîâûå êîíñòàíòû óìåñòèëèñü áû â ñòðîêå êîäà, åñëè áûñîäåðæàùèé èõ îïåðàòîð íà÷èíàëñÿ â êðàéíåé ëåâîé ïîçèöèè, ò.

å. åñëèáû íå ñòðóêòóðíûé îòñòóï.  òàêîé ñèòóàöèè ñïðàâèòüñÿ ñ óïðÿìîé êîíñòàíòîé ñîâñåì ëåãêî äîñòàòî÷íî äàòü åé èìÿ. Íàïðèìåð, â ÿçûêå Ñèìîæíî âîñïîëüçîâàòüñÿ ìàêðîñîì:#define THE_LONG_STRING \"This string could be too long if it was placed in the code"/* ... */printf("%s\n", THE_LONG_STRING);Êîíå÷íî, òàêîå ìàêðîîïðåäåëåíèå ñëåäóåò ïîìåñòèòü âíå óïðàâëÿþùèõêîíñòðóêöèé, ÷òîáû íå ïðèøëîñü åãî ñäâèãàòü; ìîæíî âûíåñòè åãî â íà÷àëî ôàéëà èëè æå (÷òî â áîëüøèíñòâå ñëó÷àåâ ïðåäïî÷òèòåëüíî) ðàçìåñòèòü åãî íåïîñðåäñòâåííî ïåðåä îïèñàíèåì ôóíêöèè, â êîòîðîé îíèñïîëüçóåòñÿ.Ê ñîæàëåíèþ, áûâàþò ñèòóàöèè, â êîòîðûõ íå ïîìîãàåò íè îäèí èçïåðå÷èñëåííûõ ñïîñîáîâ.

Òîãäà îñòà¼òñÿ ëèøü ïîñëåäîâàòü ïðàâèëàì èçLinux Kernel Coding Style Guide è îñòàâèòü â êîäå ñòðîêó, äëèíà êîòîðîé ïðåâûøàåò 80 ñèìâîëîâ. Ñëåäèòå òîëüêî, ÷òîáû ýòî ïðåâûøåíèå íåâûõîäèëî çà ãðàíü ðàçóìíîãî. Òàê, åñëè ïîëó÷èâøàÿñÿ ñòðîêà êîäà ¾âûëåçëà¿ çà 100 ñèìâîëîâ, è ïðè ýòîì âàì êàæåòñÿ, ÷òî íè îäíèì èç âûøåïåðå÷èñëåííûõ ñïîñîáîâ ïîáîðîòü çëîâðåäíóþ êîíñòàíòó íåëüçÿ, òî ýòîâàì, ñêîðåå âñåãî, òîëüêî êàæåòñÿ; àâòîð ýòèõ ñòðîê íè ðàçó çà âñþ ñâîþïðàêòèêó íå âèäåë ñèòóàöèè, â êîòîðîé ñòðîêîâóþ êîíñòàíòó íåëüçÿ áûëîáû óìåñòèòü â îáû÷íûå 80 ñèìâîëîâ, íå ãîâîðÿ óæå î ñòà.662.6.

Ðàçäåëèòåëè è ïðîáåëûÇíàêè, êîòîðûå â òåêñòå ïðîãðàììû âûäåëÿþòñÿ â îòäåëüíûå ëåêñåìû íåçàâèñèìî îò íàëè÷èÿ èëè îòñóòñòâèÿ âîêðóã íèõ ïðîáåëüíûõ ñèìâîëîâ, íàçûâàþòñÿ ðàçäåëèòåëÿìè. Îáû÷íî ýòî çíàêè àðèôìåòè÷åñêèõîïåðàöèé, ñêîáêè è çíàêè ïðåïèíàíèÿ, òàêèå êàê çàïÿòàÿ, òî÷êà ñ çàïÿòîé è äâîåòî÷èå. Íàïðèìåð, îïåðàöèè + è - ÿâëÿþòñÿ ðàçäåëèòåëÿìèêàê â Ïàñêàëå, òàê è â Ñè, ò. å. â îáîèõ ÿçûêàõ ìîæíî íàïèñàòü a + b,à ìîæíî è a+b, ñìûñë îò ýòîãî íå èçìåíèòñÿ.

 òî æå âðåìÿ, îïåðàöèÿand â Ïàñêàëå ðàçäåëèòåëåì íå ÿâëÿåòñÿ: a and b ýòî íå òî æå ñàìîå,÷òî aandb; ìåæäó òåì, å¼ àíàëîã èç ÿçûêà Ñè îïåðàöèÿ && ÿâëÿåòñÿðàçäåëèòåëåì, ò. å. ìîæíî íàïèñàòü a&&b áåç óùåðáà äëÿ ñìûñëà. Ìîæíîóêàçàòü è òàêèå ÿçûêè, â êîòîðûõ àðèôìåòè÷åñêèå îïåðàöèè ðàçäåëèòåëÿìè íå ÿâëÿþòñÿ ýòî, íàïðèìåð, Ïðîëîã è Ëèñï, â êîòîðûõ ñèìâîëû+, - è ïðî÷èå ìîãóò âõîäèòü â èäåíòèôèêàòîðû.Íåñìîòðÿ íà òî, ÷òî ïðîáåëüíûå ñèìâîëû âîêðóã ðàçäåëèòåëåé íå îáÿçàòåëüíû, â ðÿäå ñëó÷àåâ èõ äîáàâëåíèå ìîæåò ñäåëàòü òåêñò ïðîãðàììûáîëåå ýñòåòè÷íûì è ÷èòàåìûì íî íå âñåãäà. Ïðè ýòîì, êàê âîäèòñÿ,íåâîçìîæíî ïðåäëîæèòü åäèíûé óíèâåðñàëüíûé ñâîä ïðàâèë ïî ïîâîäóðàññòàíîâêè òàêèõ ïðîáåëîâ; ñóùåñòâóþò ðàçëè÷íûå ïîäõîäû ê ýòîìó,èìåþùèå ñâîè äîñòîèíñòâà è íåäîñòàòêè.Ñ óâåðåííîñòüþ ìîæíî ñêàçàòü, ÷òî ëó÷øå âñåãî ïîäõîäèò îäíîïðîñòîå ïðàâèëî:(ýòî ìîæåò áûòü êàê ñîáñòâåííî ïðîáåë, òàê è ïåðåâîä ñòðîêè).Íåêîòîðûå ïðîãðàììèñòû ñòàâÿò ïðîáåëû ñ âíóòðåííåé ñòîðîíû ñêîáîê (êðóãëûõ, êâàäðàòíûõ, ôèãóðíûõ è óãëîâûõ), ïðèìåðíî òàê:äëÿ çíàêîâ ïðåïèíàíèÿ çàïÿòûõ, òî÷åê ñ çàïÿòîé è äâîåòî÷èéïåðåä íèìè ïðîáåëû íå ñòàâÿòñÿ, à ïîñëå íèõ íàîáîðîò, ñòàâÿòñÿMyProcedure( a, b[ idx + 5 ], c );Ìû íå ðåêîìåíäóåì òàê äåëàòü, õîòÿ ýòî è äîïóñòèìî.

Åäèíñòâåííîå èñêëþ÷åíèå , êîòîðûå âîñïðèíèìàþòñÿñêîðåå íå êàê ñêîáêè, à êàê ñòðóêòóðèðóþùèå ñèìâîëû; èõ. Âî âñåõ îñòàëüíûõ ñëó÷àÿõ ïðîáåëû ñ âíóòðåííåé ñòîðîíû ñêîáîê ñòàâèòü íå ðåêîìåíäóåòñÿ;ëó÷øå íàïèñàòü òàê:ôèãóðíûå ñêîáêè ÿçûêà Ñèåòñÿ âûäåëÿòü ïðîáåëàìè ñ îáåèõ ñòîðîíðåêîìåíäó-MyProcedure(a, b[idx + 5], c);Ïðè îáðàùåíèè ê ïðîöåäóðàì è ôóíêöèÿì ïðîáåë ìåæäó èìåíåìâûçûâàåìîé ïîäïðîãðàììû è îòêðûâàþùåé ñêîáêîé îáû÷íî íåñòàâÿò, òàê æå êàê è ïðîáåë ìåæäó èìåíåì ìàññèâà è îòêðûâàþùåéêâàäðàòíîé ñêîáêîé îïåðàöèè èíäåêñèðîâàíèÿ. Èíòåðåñíî, ÷òî äëÿ ÿçûêà Ñè ÷àñòî ðåêîìåíäóþò ñòàâèòü ïðîáåë â çàãîëîâêå ñëîæíîãî îïåðàòîðà67ìåæäó åãî íàçâàíèåì (êëþ÷åâûì ñëîâîì if, while, for, switch) è îòêðûâàþùåé ñêîáêîé, îáðàìëÿþùåé óñëîâíîå âûðàæåíèå ÷òîáû îòëè÷èòüýòè ñëó÷àè îò ñëó÷àÿ âûçîâà ôóíêöèè. Ñðàâíèòå:for (i = 0; f(i) < g(); i++) {if (!cond(i)) {proceed(i);break;}} ýòîì ôðàãìåíòå ìû ïîñòàâèëè ïðîáåëû ïåðåä îòêðûâàþùèìè ñêîáêàìè â çàãîëîâêàõ îïåðàòîðîâ for è if, íî íå ïîñòàâèëè ïðîáåëîâ ïåðåäñêîáêàìè ïîñëå èì¼í ôóíêöèé f, g, cond è proceed.

Характеристики

Тип файла
PDF-файл
Размер
1,1 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее