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

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

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

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

Èòàê,, îñòàâüòå òàêîå èìåíîâàíèå ñèñòåìíûìçàãîëîâî÷íûì ôàéëàì.72íå íà÷èíàéòå èìåíà âàøèõ èäåíòèôèêàòîðîâ ñ ñèìâîëà ïîä÷¼ðêèâàíèÿÎòäåëüíîãî ðàññìîòðåíèÿ çàñëóæèâàþò èäåíòèôèêàòîðû ýëåìåíòîâïåðå÷èñëèìîãî òèïà (enum). Íà ïåðâûé âçãëÿä â íèõ íåò ðîâíûì ñ÷¼òîìíè÷åãî îñîáåííîãî, ýòî îáûêíîâåííûå èäåíòèôèêàòîðû.

Îòìåòèì, ÷òî èíà âòîðîé âçãëÿä îíè òîæå ÿâëÿþòñÿ îáû÷íûìè èäåíòèôèêàòîðàìè, òàê÷òî, åñëè âû èñïîëüçóåòå enum'û ïî íàçíà÷åíèþ äëÿ îáîçíà÷åíèÿ îäíîéñèòóàöèè èç ïðåäîïðåäåë¼ííîãî ìíîæåñòâà òî èäåíòèôèêàòîðû ìîæíî (è, ïîæàëóé, íóæíî) ïèñàòü, êàê îáû÷íî, íà íèæíåì ðåãèñòðå ñ èñïîëüçîâàíèåì ïîä÷¼ðêèâàíèÿ. Åñòü, îäíàêî, îäèí ñïîñîá èñïîëüçîâàíèÿenum'îâ, âíîñÿùèé â ïðîèñõîäÿùåå îïðåäåë¼ííûå êîððåêòèâû: â êàêîéòî ìîìåíò ïðîãðàììèñòû ñîîáðàçèëè, ÷òî ïåðå÷èñëèìûé òèï (à òî÷íåå,ââîäèìûå èì èäåíòèôèêàòîðû-çíà÷åíèÿ) ìîæíî èñïîëüçîâàòü â êà÷åñòâåîáû÷íûõ öåëî÷èñëåííûõ êîíñòàíò. Íàïðèìåð, âìåñòî ïðèâåä¼ííîãî âûøå VERY_DANGEROUS_MACRO ìîæíî áûëî áû ââåñòè ñîâåðøåííî íè÷åì íåîïàñíóþ êîíñòàíòó:enum { absolutely_safe_constant = 756 };Êîíå÷íî, enum çäåñü èñïîëüçóåòñÿ íå ïî íàçíà÷åíèþ, íî äëÿ ÿçûêà Ñèòàêàÿ ñèòóàöèÿ âïîëíå òèïè÷íà, ìîæíî ïðèâåñòè è äðóãèå ïðèìåðû õàêîâ ïîäîáíîãî ðîäà.

Òàê èëè èíà÷å, èäåíòèôèêàòîð, ïîä÷èíÿþùèéñÿ îáëàñòÿì âèäèìîñòè, â ëþáîì ñëó÷àå ëó÷øå, íåæåëè òàêîé èäåíòèôèêàòîð,êîòîðûé âåä¼ò ñåáÿ êàê ñëîí â ïîñóäíîé ëàâêå (à èìåííî òàêîâû ìàêðîñûâ Ñè), ïîýòîìó ìåòîä ââåäåíèÿ êîíñòàíò êàê èäåíòèôèêàòîðîâ äëÿ ïåðå÷èñëèìûõ òèïîâ ïîëó÷èë øèðîêîå ðàñïðîñòðàíåíèå. Çäåñü âñ¼ åù¼ êàêáóäòî áû íåò ïîâîäà äëÿ áåñïîêîéñòâà, íî îí ïîÿâèòñÿ, êàê òîëüêî ìûñäåëàåì ñëåäóþùèé âïîëíå ëîãè÷íûé øàã: ðåøèì ïåðåäåëàòü òàêèìñïîñîáîì âñå óæå èìåþùèåñÿ êîíñòàíòû, êîòîðûå áûëè ðàíåå îáúÿâëåíûñ ïîìîùüþ #define è â ñîîòâåòñòâèè ñ âûøåîïèñàííûìè ñîãëàøåíèÿìèíàçâàíû èìåíàìè, ñîñòîÿùèìè èç çàãëàâíûõ áóêâ.

Âîçìîæíî, íåêîòîðûå èç íèõ ìû äàæå ïåðåèìåíóåì. Íî ðàíî èëè ïîçäíî ìû ñòîëêí¼ìñÿ ñîñëó÷àåì, êîãäà ïåðåèìåíîâàíèå êîíñòàíòû íåäîïóñòèìî: íàïðèìåð, êîíñòàíòà ÿâëÿåòñÿ ÷àñòüþ èíòåðôåéñà ïîïóëÿðíîé áèáëèîòåêè, âêëþ÷åíàâ äîêóìåíòàöèþ è èñïîëüçóåòñÿ â ïàðå äåñÿòêîâ (à òî è â ïàðå äåñÿòêîâòûñÿ÷) ïðîãðàìì. Èòàê, ìû îáíàðóæèëè êîíñòàíòó, êîòîðóþ íåëüçÿ ïåðåèìåíîâàòü; ÷òî æå òåïåðü, òàê è îñòàâèòü å¼ â âèäå ìàêðîñà? Èíîãäà,÷òî õàðàêòåðíî, èìåííî òàê è ïîñòóïàþò, â ñîâðåìåííûõ ïðîãðàììàõ íàÑè êîíñòàíòû, ââåä¼ííûå #define'îì, âñ¼ åù¼ âñòðå÷àþòñÿ ÷àùå, íåæåëè enum'îâûå. Íî, åñëè ïîäóìàòü, âàëèäíûõ ïðè÷èí äëÿ òàêîãî ðåøåíèÿïîïðîñòó íåò: â ñàìîì äåëå, íó ÷åì õóæå ñòàíåò êîä, åñëè î÷åðåäíîéìàêðîñ çàìåíèòü íà áåçîïàñíóþ êîíñòàíòó ñ òåì æå èìåíåì? Ðåçóëüòàòîì ñòàíîâèòñÿ ìàññîâîå èñïîëüçîâàíèå â êà÷åñòâå èì¼í êîíñòàíò ïåðå÷èñëèìîãî òèïà èäåíòèôèêàòîðîâ, áîëåå ïðèâû÷íûõ â ðîëè ìàêðîèì¼í,òî åñòü ñîñòîÿùèõ èç çàãëàâíûõ ëàòèíñêèõ áóêâ:enum { VERY_DANGEROUS_MACRO = 756 };73Çäåñü íàøà êîíñòàíòà óæå è íå dangerous, è íå macro, íî åñëè ïåðåèìåíîâàòü å¼ ìû íå ñìîãëè, òî ÷òî æå òåïåðü ïîäåëàòü?Ê ñîæàëåíèþ, ïðè ýòîì íåñêîëüêî íàðóøàåòñÿ åäèíîîáðàçèå èì¼íèäåíòèôèêàòîðîâ: îäíè êîíñòàíòû èìåíóþòñÿ íà íèæíåì ðåãèñòðå, àäðóãèå íà âåðõíåì.

Ïîýòîìó â íåêîòîðûõ ñòèëÿõ îôîðìëåíèÿ êîäà íàÑè ïðèñóòñòâóåò òðåáîâàíèå èìåíîâàòü ñ èñïîëüçîâàíèåì áóêâ âåðõíåãî ðåãèñòðà ëþáûå êîíñòàíòû, â òîì ÷èñëå è òàêèå, êîòîðûå íèêîãäà íåáûëè ìàêðîñàìè:enum { ABSOLUTELY_SAFE_CONSTANT = 756 };Êàê ýòî ÷àñòî áûâàåò, îêîí÷àòåëüíîãî îòâåòà íà âîïðîñ, ïðàâèëüíîýòî èëè íåò, ìû äàòü íå ñìîæåì. Åñëè âàñ ïðèãëàñèëè â ñóùåñòâóþùèéïðîåêò, ñëåäóéòå èìåþùèìñÿ ñîãëàøåíèÿì; åñëè âû íà÷èíàåòå ïðîåêò ñíóëÿ, ïîäóìàéòå ñàìè, êàê âàì áóäåò óäîáíåå èìåíîâàòü êîíñòàíòû.2.8.2.

Îïèñàíèÿ è èíèöèàëèçàòîðû ÿçûêå Ñè ÷àñòî âñòðå÷àþòñÿ îïèñàíèÿ òèïîâ è ïåðåìåííûõ, èìåþùèå äîñòàòî÷íî ñëîæíóþ ñèíòàêñè÷åñêóþ ñòðóêòóðó.Íà÷í¼ì ñ êëàññè÷åñêîé ðåêîìåíäàöèè:typedefÒàê, ïðîôèëü ñèñòåìíîãî âûçîâà signal ñ èñïîëüçîâàíèåì typedef âûãëÿäèò äîñòàòî÷íî ïðîñòî:çîâàíèåì äèðåêòèâûíå ïðåíåáðåãàéòå èñïîëüäëÿ îñîáåííî ñëîæíûõ îïèñàíèé!typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);Òî æå ñàìîå ìîæíî íàïèñàòü è áåç typedef, è âûãëÿäåòü ýòî áóäåò âîòòàê:void (*signal(int signum, void (*handler)(int)))(int);Åñëè êòî-íèáóäü ñêàæåò âàì, ÷òî ýòî îïèñàíèå-äå âïîëíå ïîíÿòíî ëþáîìó âìåíÿåìîìó ïðîãðàììèñòó, íå âåðüòå: äàæå ñàìûå îïûòíûå ïðîãðàììèñòû âûíóæäåíû ðàçáèðàòü òàêèå îïèñàíèÿ, õîòÿ íåêîòîðûå (íå âñå!)äåëàþò ýòî äîâîëüíî áûñòðî. Îòìåòèì, ÷òî âûçîâ signal ïðåäñòàâëÿåò ñîáîé ñëó÷àé äîâîëüíî ïðîñòîé; â êà÷åñòâå óïðàæíåíèÿ ïîïðîáóéòåíàïèñàòü ôóíêöèþ, êîòîðàÿ ïðèíèìàåò íà âõîä îäíèì èç ïàðàìåòðîâôóíêöèþ, èìåþùóþ òàêîé æå ïðîôèëü, êàê ó signal.Ñ îïèñàíèåì òèïà, ïðåäïîëàãàþùèì èñïîëüçîâàíèå ôèãóðíûõ ñêîáîê(struct, union, enum) âñ¼ äîâîëüíî ïðîñòî: åäèíñòâåííàÿ ñòåïåíü ñâîáîäû ïîëîæåíèå îòêðûâàþùåé ôèãóðíîé ñêîáêè (å¼, êàê âîäèòñÿ, ìîæíîîñòàâèòü íà îäíîé ñòðîêå ñ èìåíåì ñòðóêòóðû, à ìîæíî ñíåñòè íà ñëåäóþùóþ ñòðîêó).

×åãî òî÷íî íå ñëåäóåò äåëàòü ýòî ñäâèãàòü ôèãóðíûå74ñêîáêè îòíîñèòåëüíî íà÷àëà îïèñàíèÿ òèïà, òî åñòü âîò òàê ïèñàòü ìîæíî:struct item{const char *str;item *next;};struct item {const char *str;item *next;};à âîò òàê óæå íå ñòîèò:struct item{const char *str;item *next;};Ñèòóàöèÿ çäåñü ïîäîáíà ñèòóàöèè ñ íà÷àëîì è êîíöîì òåëà ôóíêöèè:âñ¼ òåëî öåëèêîì íå ñäâèãàþò äàæå ïðè èñïîëüçîâàíèè ñòèëÿ, ïðåäïîëàãàþùåãî ñäâèã ñîñòàâíîãî îïåðàòîðà îòíîñèòåëüíî çàãîëîâêà ñëîæíîãîîïåðàòîðà.Îòìåòèì, ÷òî íå ñòîèò òàêæå è ¾âûòÿãèâàòü¿ îïèñàíèå ñòðóêòóðû âîäíó ñòðîêó:struct item { const char *str; item *next; };À âîò îïèñàíèå ïåðå÷èñëèìîãî òèïà ¾âûòÿíóòü¿ ìîæíî, è ñìîòðåòüñÿýòî áóäåò âïîëíå ëîãè÷íî, íî òîëüêî â ñëó÷àå, åñëè îíî óìåùàåòñÿ â îäíóñòðîêó è íå ñîäåðæèò ÿâíî çàäàííûõ çíà÷åíèé êîíñòàíò:enum state { home, whitespace, stringconst, ident, end };Åñëè â îäíó ñòðîêó îïèñàíèå íå ïîìåñòèëîñü, èëè åñëè èìååòñÿ ïîòðåáíîñòü â ÿâíîì çàäàíèè öåëî÷èñëåííûõ çíà÷åíèé8 , òî ëó÷øå áóäåòêàæäóþ êîíñòàíòó îïèñûâàòü íà îòäåëüíîé ñòðîêå.

Îáðàòèòå âíèìàíèå,÷òî äëÿ ëó÷øåé ÷èòàåìîñòè çíàêè ðàâåíñòâà ðåêîìåíäóåòñÿ ðàñïîëîæèòüâ îäíó êîëîíêó (èñïîëüçóéòå ïðîáåëû, åñëè ïîëüçóåòåñü èìè äëÿ ñòðóêòóðíûõ îòñòóïîâ; åñëè â êà÷åñòâå îòñòóïà ó âàñ òàáóëÿöèÿ, èñïîëüçóéòåå¼ æå äëÿ âûðàâíèâàíèÿ çíàêîâ ðàâåíñòâà):enum state {st_home,st_whitespace,st_stringconst,st_ident,st_end};enum state {st_homest_whitespacest_stringconstst_identst_end};=====0,32,12,77,-18 Êðîìå ñëó÷àÿ îïèñàíèÿ àíîíèìíîãî ïñåâäîòèïà ñ öåëüþ ââåäåíèÿ îäíîé êîíñòàíòû; ýòîò ñëó÷àé ðàññìîòðåí â ïðåäûäóùåì ïàðàãðàôå.75Êàê îáû÷íî, ïîëîæåíèå îòêðûâàþùåé ôèãóðíîé ñêîáêè îïðåäåëÿåòñÿèçáðàííûì ñòèëåì.

Åñëè âû ñíîñèòå å¼ â îïèñàíèÿõ ñòðóêòóð, ñäåëàéòåòî æå ñàìîå è ïðè îïèñàíèè enum'îâ:enum state{st_home,enum state{st_home= 0,Àíàëîãè÷íî îáñòîÿò äåëà ñ äëèííûìè èíèöèàëèçàòîðàìè (íàïðèìåð,ïðè îïèñàíèè èíèöèàëèçèðîâàííûõ ìàññèâîâ). Åñëè èíèöèàëèçàòîð ïîëíîñòüþ óìåùàåòñÿ â îäíó ñòðîêó, ëó÷øå åãî òàê è çàïèñàòü:const int some_primes[] = { 11, 17, 37, 67, 131, 257, 521 };Åñëè èíèöèàëèçàòîð â îäíó ñòðîêó íå ïîìåñòèëñÿ, èëè åñëè ê çíà÷åíèÿìòðåáóþòñÿ êîììåíòàðèè, èëè ïî êàêèì-ëèáî äðóãèì ïðè÷èíàì, ìîæíîçàïèñàòü êàæäûé ýëåìåíò èíèöèàëèçàòîðà íà îòäåëüíîé ñòðîêå:const unsigned11,/*17,/*37,/*67,/*131,/*257,/*521,/*1031, /*2053/*};long hash_sizes[] = {> 8 */> 16 */> 32 */> 64 */> 128 */> 256 */> 512 */> 1024 */> 2048 */Áîëåå òîãî, íåò íè÷åãî ñòðàøíîãî â ðàçáèåíèè èíèöèàëèçàòîðà íàíåñêîëüêî ñòðîê èç ñîîáðàæåíèé ðàâíîìåðíîñòè:const unsigned long hash_sizes[] = {11,17,37,67,521,1031,2053,4099,32771,65537,131101,262147,2097169, 4194319, 8388617, 16777259,};131,257,8209,16411,524309, 1048583,33554467Ïîëîæåíèå îòêðûâàþùåé ôèãóðíîé ñêîáêè â ýòèõ ñëó÷àÿõ òàêæå çàâèñèò îò èçáðàííîãî ñòèëÿ, ïðè÷¼ì, êàê íè ñòðàííî, ÷àñòî å¼ ñäâèãàþò, òîåñòü ñëåäóþùèé âàðèàíò íå òîëüêî äîïóñòèì, íî è äîâîëüíî ïîïóëÿðåí:const unsigned long hash_sizes[] ={11,/* > 8 */17,/* > 16 */76};37,67,131,257,5211031,2053/*/*/*/*/*/*/*>>>>>>>32 */64 */128 */256 */512 */1024 */2048 */Ïðè èíèöèàëèçàöèè äâóìåðíîãî ìàññèâà îáû÷íî êàæäûé ýëåìåíò (òîåñòü îäíîìåðíûé ìàññèâ) ñòàðàþòñÿ çàïèñàòü â îäíó ñòðîêó, íàïðèìåð:const{{{{{};int change_level_table[5][5] = {4, 4, 2, 1, 1 },3, 4, 3, 1, 1 },1, 3, 4, 3, 1 },1, 1, 3, 4, 3 },1, 1, 2, 4, 4 }Åñëè æå â îäíó ñòðî÷êó êîäà êàæäàÿ ñòðîêà âàøåé ìàòðèöû íå ïîìåùàåòñÿ (ñëó÷àé ñàì ïî ñåáå äîâîëüíî ðåäêèé), ïðèä¼òñÿ èõ ðàâíîìåðíîðàçáèòü íà íåñêîëüêî ñòðî÷åê.2.8.3.

Îïåðàòîð ïîñòóñëîâèÿ ÿçûêå Ñè êëþ÷åâîå ñëîâî while èñïîëüçóåòñÿ â äâóõ ðîëÿõ: â çàãîëîâêå öèêëà ñ ïðåäóñëîâèåì è â ýïèëîãå öèêëà ñ ïîñòóñëîâèåì (do-while). îáîèõ ñëó÷àÿõ ñðàçó ïîñëå ñëîâà while ñëåäóåò óñëîâíîå âûðàæåíèå âêðóãëûõ ñêîáêàõ; êîíå÷íî, â ñëó÷àå do-while ñëåäîì çà ýòèì âûðàæåíèåì èä¼ò òî÷êà ñ çàïÿòîé, íî äëÿ ñëó÷àÿ öèêëà ñ ïóñòûì òåëîì òàêàÿ æåòî÷êà ñ çàïÿòîé ìîæåò áûòü è â ñëó÷àå îáû÷íîãî while. Èòàê, ãëÿäÿ íàêîíåö öèêëà do-while, ìîæíî (è î÷åíü ëåãêî) ïåðåïóòàòü åãî ñ öèêëîìwhile, èìåþùèì ïóñòîå òåëî.Ðåøåíèå ýòîé ïðîáëåìû äîâîëüíî î÷åâèäíî äëÿ ñòèëÿ ðàññòàíîâêèôèãóðíûõ ñêîáîê, ïðè êîòîðîì îòêðûâàþùàÿ ñêîáêà íå ñíîñèòñÿ íà ñëåäóþùóþ ñòðîêó.

Ïðåæäå âñåãî îòìåòèì, ÷òîdo while9 . Ïðîáëåìà ñîñìûñëîì while òåïåðü ðåøàåòñÿ òåì, ÷òî ñëîâî while ïîïðîñòó îñòà¼òñÿ íà òîé æå ñòðîêå, ÷òî è ïðåäøåñòâóþùàÿ åìó çàêðûâàþùàÿ ñêîáêà,ïðèìåðíî òàê, êàê ìû äëÿ ýòîãî æå ñòèëÿ ïîñòóïàëè ñî ñëîâîì else:èñïîëüçîâàíèå ôèãóðíûõ ñêîáîê â öèêëå ñòðîãî îáÿçàòåëüíî âíå âñÿêîé çàâèñèìîñòè îò êîëè÷åñòâà îïåðàòîðîâ â ýòîì òåëå9 Íåêîòîðûå ïðîãðàììèñòû äàæå ïðåáûâàþò â óâåðåííîñòè, ÷òî ýòî òðåáîâàíèåÿçûêà Ñè; íà ñàìîì äåëå ýòî íå òàê, òåëîì do-while ìîæåò áûòü ëþáîé îïåðàòîð, íåòîëüêî ñîñòàâíîé; íî ýòà âîçìîæíîñòü Ñè íèêîãäà íå èñïîëüçóåòñÿ.77do {get_event(&event);res = handle_event(&event);} while (res != EV_QUIT_NOW);Òàêîå æå ðåøåíèå ìû ìîæåì ïðèìåíèòü è äëÿ ñòèëÿ, ïðè êîòîðîì îòêðûâàþùàÿ ôèãóðíàÿ ñêîáêà ñíîñèòñÿ íà ñëåäóþùóþ ñòðîêó, íî íå ñäâèãàåòñÿ:do{get_event(&event);res = handle_event(&event);} while (res != EV_QUIT_NOW);Êîíå÷íî, òàêîå ðåøåíèå íå ñëèøêîì èçÿùíî, ïîñêîëüêó âûíóæäàåò íàñââîäèòü èñêëþ÷åíèå èç îáùåãî ïðàâèëà, îäíàêî òàê âñ¼ æå ëó÷øå, ÷åìïóòàòü êîíåö öèêëà ñ íà÷àëîì íîâîãî öèêëà.

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

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

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

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