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

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

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

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

Íî âîò åñëè ýòîò ñïèñîê åñòü, âîçíèêàåò, âî-ïåðâûõ, âîïðîñ,êóäà åãî ïîìåñòèòü, è, âî-âòîðûõ, ÷òî äåëàòü, åñëè îí íå âëåç íà îäíóñòðîêó.Ïðåæäå âñåãî îòìåòèì, ÷òî îáû÷íî ñïèñîê èíèöèàëèçàòîðîâ ñíîñÿò íàîòäåëüíóþ ñòðîêó (êðîìå ñëó÷àÿ, êîãäà êîíñòðóêòîð îïèñûâàåòñÿ íåïîñðåäñòâåííî â çàãîëîâêå êëàññà, íî îá ýòîì ïîçæå). Êàê ïîêàçûâàåò ïðàêòèêà, ýñòåòè÷íåå ñìîòðèòñÿ âàðèàíò ñî ñäâèãîì ýòîé ñòðîêè íà ðàçìåðîòñòóïà, íàïðèìåð:MyGoodClass::MyGoodClass(int x, const char *s): MyBaseClass(s), int_field(x){// here the body comes}Íî ìîæíî, â ïðèíöèïå, íàïèñàòü è âîò òàê:MyGoodClass::MyGoodClass(int x, const char *s): MyBaseClass(s), int_field(x){// here the body comes}Èíîãäà âñòðå÷àåòñÿ è âîò òàêîå ôîðìàòèðîâàíèå:83MyGoodClass::MyGoodClass(int x, const char *s) :MyBaseClass(s),int_field(x){Íàäî îòìåòèòü, ÷òî ñ ðàçìåùåíèåì äâîåòî÷èÿ âîçíèêàþò íàèáîëåå íåîäíîçíà÷íûå âàðèàöèè. Ìîæíî âñòðåòèòü è âîò òàêîå:MyGoodClass::MyGoodClass(int x, const char *s): MyBaseClass(s),int_field(x){è âîò òàêîå:MyGoodClass::MyGoodClass(int x, const char *s):MyBaseClass(s),int_field(x){è âîò òàêîå:MyGoodClass::MyGoodClass(int x, const char *s):MyBaseClass(s),int_field(x){Ñðàçó õîòåëîñü áû ïðåäîñòåðå÷ü ÷èòàòåëÿ îò îäíîãî âàðèàíòà, êîòîðûé,õîòÿ è äîïóñòèì (êðîìå ñëó÷àÿ èñïîëüçîâàíèÿ òàáóëÿöèè äëÿ îòñòóïîâ),íî âñ¼ æå íå ñëèøêîì ïðàâèëåí, ïîòîìó ÷òî î÷åðåäíàÿ ñòðîêà îêàçûâàåòñÿ ñäâèíóòà íà íåïîíÿòíî êàêîé óðîâåíü îòñòóïà:MyGoodClass::MyGoodClass(int x, const char *s): MyBaseClass(s),int_field(x){Äîâîëüíî óäà÷íûì îêàçûâàåòñÿ ðåøåíèå, ñòðàííîâàòî âûãëÿäÿùåå íàïåðâûé âçãëÿä, êîãäà çàïÿòóþ çàïèñûâàþò íå ïîñëå èíèöèàëèçàòîðà, àïåðåä ñëåäóþùèì, ÷òî ïîçâîëÿåò ïðåäñòàâèòü äâîåòî÷èå è çàïÿòûå êàêñâîåãî ðîäà ¾ñèìâîë íà÷àëà èíèöèàëèçàòîðà¿ è ðàññòàâèòü èõ â ñòîëáèê:MyGoodClass::MyGoodClass(int x, const char *s): MyBaseClass(s), int_field(x), another_field(s){84Îòäåëüíîãî ðàññìîòðåíèÿ çàñëóæèâàåò ñëó÷àé, êîãäà ðåøåíî èíèöèàëèçàòîðû çàïèñûâàòü â ñòðî÷êó, íî ïðè ýòîì ñïèñîê èíèöèàëèçàòîðîâíå óìåùàåòñÿ íà îäíîé ñòðîêå.

Äëÿ ýòîãî ñëó÷àÿ ìîæíî ïîðåêîìåíäîâàòü ðàçîðâàòü ýòó ñòðîêó, ïî íåîáõîäèìîñòè â íåñêîëüêèõ ìåñòàõ; âûáðàòü êîíêðåòíûå ìåñòà ðàçðûâà ìîæíî ëèáî èç ñîîáðàæåíèé ðàâíîìåðíîñòè, ëèáî èñõîäÿ èç íåêîé ¾ãðóïïèðîâî÷íîé¿ ëîãèêè (íàïðèìåð, â ïåðâîé ñòðîêå çàïèñàòü èíèöèàëèçàòîðû áàçîâûõ êëàññîâ, à èíèöèàëèçàòîðû ïîëåé ñíåñòè íà ñëåäóþùóþ ñðîêó). Íåîáõîäèìî òîëüêî ïîìíèòü, ÷òîèíèöèàëèçàòîðû îáÿçàíû ïåðå÷èñëÿòüñÿ â òîì æå ïîðÿäêå, â êîòîðîì âêëàññå îáúÿâëåíû ñîîòâåòñòâóþùèå ïîëÿ.

Ðàñïîëîæèòü òàêèå ñòðîêè, àòàêæå çíàê äâîåòî÷èÿ ìîæíî ëþáûì èç ñïîñîáîâ, ïîêàçàííûõ âûøå äëÿ¾ñòîëáèêà¿ èíèöèàëèçàòîðîâ. Íàïðèìåð:MyGoodClass::MyGoodClass(int x, const char *s): MyBaseClass(s), int_field(x), first(0), last(0),sequence_counter(1), the_collection(0),helper(new MyHelperClass(*this)){2.9.5. Òåëà ôóíêöèé â çàãîëîâêå êëàññàÒåëî ôóíêöèè-÷ëåíà êëàññà ìîæíî âûíåñòè çà ïðåäåëû çàãîëîâêàêëàññà, íî ìîæíî íàïèñàòü è â ñàìîì çàãîëîâêå; êîìïèëÿòîð ïîïûòàåòñÿ(íî íå îáÿçàí) îáðàáîòàòü òàêèå ôóíêöèè êàê èíëàéíîâûå.Ïðåæäå âñåãî îòìåòèì, ÷òî ïîëüçîâàòüñÿ ýòîé âîçìîæíîñòüþ ñëåäóåò î÷åíü îñòîðîæíî.

Âàæíåéøàÿ ðîëü îïèñàíèÿ êëàññà ñîñòîèò â òîì,÷òîáû ïðè âçãëÿäå íà íåãî ìîæíî áûëî ïîíÿòü, êàê ñëåäóåò ðàáîòàòü ñîáúåêòàìè òàêîãî êëàññà, òî åñòü êàêîâ åãî íàáîð ìåòîäîâ è êàê èìè ñëåäóåò ïîëüçîâàòüñÿ. Äëÿ ýòîãî æåëàòåëüíî (åñëè íå ñêàçàòü íåîáõîäèìî),÷òîáû îïèñàíèå êëàññà îñòàâàëîñü êîìïàêòíûì, òàêèì, ÷òîáû îõâàòèòüåãî ìîæíî áûëî îäíèì âçãëÿäîì.

ßñíî, ÷òî íàëè÷èå òåë ôóíêöèé-÷ëåíîâîòíþäü íå ñïîñîáñòâóåò ëàêîíè÷íîñòè îïèñàíèÿ êëàññà. Êðîìå òîãî, åñëèêëàññ íå ÿâëÿåòñÿ âíóòðåííèì äëÿ îòäåëüíî âçÿòîãî ìîäóëÿ, òî åãî çàãîëîâîê íåîáõîäèìî âûíåñòè â çàãîëîâî÷íûé ôàéë, êîòîðûé ñ ïîìîùüþäèðåêòèâû #include (òî åñòü òåêñòóàëüíî) áóäåò âêëþ÷àòüñÿ â äðóãèåìîäóëè; êàê ñëåäñòâèå, îáúåêòíûé êîä âñåõ ôóíêöèé-÷ëåíîâ, òåëà êîòîðûõ ïðèñóòñòâóþò â çàãîëîâêå êëàññà, áóäåò ïðèñóòñòâîâàòü â êàæäîìèç òàêèõ ìîäóëåé, ÷òî äàëåêî íå ëó÷øèì îáðàçîì ñêàçûâàåòñÿ êàê íàðàçìåðå èñïîëíÿåìîãî ôàéëà, òàê è íà ñêîðîñòè êîìïèëÿöèè ïðîåêòà.Âñ¼ ýòî ïîçâîëÿåò ñôîðìóëèðîâàòü äîâîëüíî ïðîñòîå ïðàâèëî:â çàãîëîâêå êëàññà ìîãóò ïðèñóòñòâîâàòü òåëà ôóíêöèé-÷ëåíîâ, âåñüêîä êîòîðûõ ñîñòîèò èç îäíîé ñòðîêè, ðåæå èç äâóõ, â èñêëþ÷èòåëüíûõ ñëó÷àÿõ èç òð¼õ ñòðîê; îïèñàíèÿ ôóíêöèé-÷ëåíîâáîëüøåãî îáú¼ìà ñëåäóåò âûíîñèòü çà ïðåäåëû îïèñàíèÿ êëàññà.85Îñòà¼òñÿ âîïðîñ, êàê îôîðìèòü òåëî ôóíêöèè-÷ëåíà, åñëè òàêîâîå âñ¼æå ðåøåíî îñòàâèòü â çàãîëîâêå êëàññà, è çäåñü íåîáõîäèìî çàìåòèòü, ÷òîëàêîíè÷íîñòü îïèñàíèÿ êëàññà êàê öåëîãî ýòî ñàìîñòîÿòåëüíàÿ öåëü,ðàäè äîñòèæåíèÿ êîòîðîé èìååò ñìûñë ïîæåðòâîâàòü íåêîòîðûì äðóãèìè ïðèíöèïàìè.

Òàê, åñëè òåëî ôóíêöèè ñîñòîèò èç îäíîé ñòðîêè, òî÷àñòî òàêîå òåëî çàïèñûâàþò íà îäíîé ñòðîêå ñ å¼ çàãîëîâêîì (îñîáåííî÷àñòî òàêîå âñòðå÷àåòñÿ äëÿ òàê íàçûâàåìûõ àêñåññîðîâ):class Picture {// ...int color;public:// ...int GetColor() const { return color; }void SetColor(int col) { color = col; }// ...};Áîëåå òîãî, åñëè ôóíêöèÿ-÷ëåí ñîñòîèò èç áîëåå ÷åì îäíîãî îïåðàòîðà, íîâñå ýòè îïåðàòîðû ñïîñîáíû óìåñòèòüñÿ íà îäíîé ñòðîêå, ïðîãðàììèñòû÷àñòî èäóò è íà ýòî (õîòÿ â îáû÷íûõ óñëîâèÿõ òàê ïèñàòü íè â êîåìñëó÷àå íå ñëåäóåò):class FileStream {// ...void SetFd(int f) { if (fd != -1) close(fd); fd = f; }// ...};Åñëè òåëî íèêàê íå æåëàåò ïîìåùàòüñÿ â îäíó ñòðîêó ñ çàãîëîâêîì, åãîìîæíî (öåëèêîì) ñíåñòè íà ñëåäóþùóþ ñòðîêó, ïî-ïðåæíåìó çàïèñàâ îäíîé ñòðî÷êîé.  ýòîì ñëó÷àå îòêðûâàþùóþ ôèãóðíóþ ñêîáêó îáû÷íîñäâèãàþò íà ðàçìåð îòñòóïà (õîòÿ ýòî, ñòðîãî ãîâîðÿ, íå îáÿçàòåëüíî):class Table {// ...const char *GetNameById(int id) const{ return ProvideRecordById(id)->GetName(); }// ...};Åñëè âñ¼-òàêè âû ðåøèëè, ÷òî òåëî âàøåé ôóíêöèè áóäåò ëó÷øå ñìîòðåòüñÿ, áóäó÷è ðàñïèñàííûì íà íåñêîëüêî ñòðîê, òî îñòà¼òñÿ åù¼ âîçìîæíîñòü ñýêîíîìèòü îäíó ñòðîêó, ðàçìåñòèâ îòêðûâàþùóþ ôèãóðíóþñêîáêó íà îäíîé ñòðîêå ñ çàãîëîâêîì ôóíêöèè (îòìåòèì, ÷òî ýòî òîæåñïåöèôèêà ñèòóàöèè òåëà ôóíêöèè â çàãîëîâêå êëàññà; â èíûõ ñëó÷àÿõòàê íå äåëàþò):86class FileStream {// ...void SetFd(int f) {if (fd != -1)close(fd);fd = f;}// ...};×åãî òî÷íî íå ñëåäóåò äåëàòü, òàê ýòî ïðèíîñèòü ëàêîíè÷íîñòü çàãîëîâêà êëàññà â æåðòâó íåïîíÿòíûì ñòèëèñòè÷åñêèì êàíîíàì.

 ÷àñòíîñòè, åñëè âû íå íàøëè íè÷åãî ëó÷øåãî, íåæåëè íàïèñàòü âîò òàê:class FileStream {// ...void SetFd(int f){if (fd != -1)close(fd);fd = f;}// ...};òî áóäåò ãîðàçäî ïðàâèëüíåå âñ¼-òàêè óáðàòü òåëî ôóíêöèè èç çàãîëîâêàêëàññà. Îòìåòèì, ÷òî âû ïðè ýòîì âñ¼ åù¼ ìîæåòå îáúÿñíèòü êîìïèëÿòîðó, ÷òî ôóíêöèþ æåëàòåëüíî ñäåëàòü èíëàéíîâîé:class FileStream {// ...void SetFd(int f);// ...};inline void FileStream::SetFd(int f){if (fd != -1)close(fd);fd = f;}87Ãëàâà 3Î íåêîòîðûõ ÿçûêàõ ¾ñîñîáåííîñòÿìè¿3.1. ßçûê àññåìáëåðàßçûêè ïðîãðàììèðîâàíèÿ, â êîòîðûõ ñòðîêà èñõîäíîãî êîäà ïðåäñòàâëÿåò ñîáîé îñíîâíóþ ñèíòàêñè÷åñêóþ åäèíèöó, â íàøå âðåìÿ âñòðå÷àþòñÿ ðåäêî; áîëüøèíñòâî ÿçûêîâ ðàññìàòðèâàåò êîíåö ñòðîêè êàê îäèíèç ïðîáåëüíûõ ñèìâîëîâ, íè÷åì ïðèíöèïèàëüíûì íå îòëè÷àþùèéñÿ îòïðîáåëà è òàáóëÿöèè.

Îáû÷íî èìåþò ïîñòðî÷íûé ñèíòàêñèñ ÿçûêè àññåìáëåðà; ÷òî êàñàåòñÿ ÿçûêîâ âûñîêîãî óðîâíÿ, òî èç èñïîëüçóåìûõ íûíåìîæíî íàçâàòü ðàçâå ÷òî Ôîðòðàí. Èíòåðåñíî, ÷òî èìåííî Ôîðòðàí (òî÷íåå, åãî ðàííèå âåðñèè) çàëîæèë îïðåäåë¼ííóþ òðàäèöèþ îôîðìëåíèÿêîäà, êîòîðàÿ ñåé÷àñ èñïîëüçóåòñÿ äëÿ ÿçûêà àññåìáëåðà; ÷òî êàñàåòñÿñàìîãî Ôîðòðàíà, òî äëÿ íåãî â ïîñëåäíèå ãîäû ïîïóëÿðåí òàê íàçûâàåìûé ñâîáîäíûé ñèíòàêñèñ, ïîçâîëÿþùèé èñïîëüçîâàòü òðàäèöèîííûåñòðóêòóðíûå îòñòóïû; âñòðå÷àþòñÿ, âïðî÷åì, è òàêèå ïðîãðàììèñòû, êîòîðûå ïðåäïî÷èòàþò ïèñàòü íà Ôîðòðàíå ¾ïî-ñòàðèíêå¿.Òðàäèöèÿ ¾ôèêñèðîâàííîãî ñèíòàêñèñà¿ âîñõîäèò ê òåì âðåìåíàì,êîãäà ïðîãðàììà íà Ôîðòðàíå ïðåäñòàâëÿëà ñîáîé êîëîäó ïåðôîêàðò.Ðàííèå âåðñèè Ôîðòðàíà òðåáîâàëè, ÷òîáû ìåòêà, êîòîðàÿ â Ôîðòðàíåïðåäñòàâëÿåò ñîáîé öåëîå ÷èñëî, çàïèñûâàëàñü â ñòîëáöàõ ñ 1-ãî ïî 5-é,ïðè÷¼ì ÷àñòî ìåòêó êîðî÷å ïÿòè öèôð ñäâèãàëè âïðàâî, îñòàâëÿÿ ïåðâûå ïîçèöèè ïóñòûìè.  ïåðâîé ïîçèöèè ìîæíî áûëî òàêæå ïîìåñòèòüñèìâîë C, îáîçíà÷àþùèé êîììåíòàðèé; ïîçæå êîììåíòàðèé ñòàëî ìîæíîîáîçíà÷àòü ñèìâîëàìè * èëè !.

Òåêñò îïåðàòîðà äîëæåí áûë íà÷èíàòüñÿ ñòðîãî ñ 7-é ïîçèöèè, à ïåðåä íèì â 6-é ïîçèöèè íåîáõîäèìî áûëîïîìåñòèòü ïðîáåë; íåïðîáåëüíûé ñèìâîë â 6-é ïîçèöèè îçíà÷àë, ÷òî ýòà88ñòðîêà (òî÷íåå, ïåðôîêàðòà) ÿâëÿåòñÿ ïðîäîëæåíèåì ïðåäûäóùåé, ïðèýòîì ïóñòûìè äîëæíû áûëè îñòàòüñÿ ïåðâûå ïÿòü ïîçèöèé.Ñîâðåìåííûé òåêñò íà ÿçûêå àññåìáëåðà îáû÷íî íåñêîëüêî íàïîìèíàåò ïðîãðàììû íà ðàííèõ âåðñèÿõ Ôîðòðàíà.

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

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

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

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