А.В. Столяров - Оформление программного кода (1108519), страница 8
Текст из файла (страница 8)
Êîíå÷íî,îñòà¼òñÿ âîçìîæíîñòü ñëèòü òàêèå ìîäóëè â îäèí, è â íåêîòîðûõ ðåäêèõ ñëó÷àÿõ èìåííî òàê è ñëåäóåò ïîñòóïèòü, íî íå âñåãäà. Ê ïðèìåðó,ïðè ðåàëèçàöèè ìíîãîïîëüçîâàòåëüñêîé èãðû ìû ìîãëè áû âûäåëèòü âîäèí ìîäóëü îáùåíèå ñ ïîëüçîâàòåëåì, à â äðóãîé ïîääåðæêó ñâÿçè ñäðóãèìè ýêçåìïëÿðàìè íàøåé ïðîãðàììû, êîòîðûå îáñëóæèâàþò äðóãèõ28èãðîêîâ; ïðàêòè÷åñêè íåèçáåæíî òàêèå ìîäóëè áóäóò âûíóæäåíû îáðàùàòüñÿ äðóã ê äðóãó, íî ïîñêîëüêó êàæäûé èç íèõ îòâå÷àåò çà ñâîþ(÷¼òêî ñôîðìóëèðîâàííóþ!) ïîäçàäà÷ó, îáúåäèíÿòü èõ â îäèí ìîäóëü íåíóæíî ÿñíîñòü ïðîãðàììû îò ýòîãî íèñêîëüêî íå âûèãðàåò.
Ìîæíîñêàçàòü, ÷òî âçàèìíîé çàâèñèìîñòè ìîäóëåé ñëåäóåò ïî âîçìîæíîñòè èçáåãàòü, íî âñåðü¼ç áîÿòüñÿ å¼ âîçíèêíîâåíèÿ íå ñòîèò ýòî íå êðèìèíàë.Èíà÷å îáñòîèò äåëî ñî ñöåïëåííîñòüþ ïî ïåðåìåííûì è ïî äàííûì.Áåç ãëîáàëüíûõ ïåðåìåííûõ ìîæíî îáîéòèñü âñåãäà ; ïðè ýòîì ãëîáàëüíûå ïåðåìåííûå çàòðóäíÿþò ïîíèìàíèå ðàáîòû ïðîãðàììû, âåäü ôóíêöèîíèðîâàíèå òîé èëè èíîé ïîäïðîãðàììû íà÷èíàåò çàâèñåòü íå òîëüêîîò ïîäàííûõ åé íà âõîä ïàðàìåòðîâ, íî è îò òåêóùèõ çíà÷åíèé ãëîáàëüíûõ ïåðåìåííûõ, à îáíàðóæèòü òàêóþ çàâèñèìîñòü ìîæíî òîëüêî ïóò¼ìâíèìàòåëüíîãî ïðîñìîòðà òåêñòà ïîäïðîãðàììû. Âî âðåìÿ îòëàäêè ìûìîæåì îáíàðóæèòü, ÷òî íåêàÿ ïîäïðîãðàììà ðàáîòàåò íåïðàâèëüíî èççà ¾ñòðàííîãî¿ çíà÷åíèÿ ãëîáàëüíîé ïåðåìåííîé, ïðè÷¼ì ìîæåò îñòàòüñÿ ñîâåðøåííî íåïîíÿòíî, êòî è êîãäà çàí¼ñ â íå¼ ýòî çíà÷åíèå. Ãîâîðÿò,÷òî ãëîáàëüíûå ïåðåìåííûå íàêàïëèâàþò ñîñòîÿíèå.
Òàêîå íàêàïëèâàíèå ñîñòîÿíèÿ ñïîñîáíî çàòðóäíèòü îòëàäêó, äàæå åñëè ãëîáàëüíûå ïåðåìåííûå ëîêàëèçîâàíû â ñâîèõ ìîäóëÿõ, íî â ýòîì ñëó÷àå ìû õîòÿ áû çíàåì, ãäå èñêàòü ïðè÷èíû ñòðàííîãî ïîâåäåíèÿ ïðîãðàììû: îäèí ìîäóëü ýòî åù¼ íå âñÿ ïðîãðàììà. Åñëè æå ãëîáàëüíàÿ ïåðåìåííàÿ âèäíà âîâñåé ïðîãðàììå (ýêñïîðòèðóåòñÿ èç ñâîåãî ìîäóëÿ), òî, âî-ïåðâûõ, ëþáîåå¼ èçìåíåíèå ïîòåíöèàëüíî ìîæåò íàðóøèòü ðàáîòó ëþáîé èç ïîäñèñòåìïðîãðàììû, è, âî-âòîðûõ, èçìåíåíèÿ â íå¼ ìîæåò âíåñòè êòî óãîäíî, òîåñòü ïðèõîäèòñÿ áûòü ãîòîâûìè èñêàòü ïî âñåé ïðîãðàììå ïðè÷èíó ëþáîãî ñáîÿ.Ñöåïëåííîñòü ïî ïåðåìåííûì èìååò è äðóãîé íåãàòèâíûé ýôôåêò:òàêèå ìîäóëè ñëîæíåå ìîäèôèöèðîâàòü.
Ïðåäñòàâüòå ñåáå, ÷òî êàêîéòî èç âàøèõ ìîäóëåé äîëæåí ¾ïîìíèòü¿ êîîðäèíàòû íåêîåãî îáúåêòà âïðîñòðàíñòâå. Äîïóñòèì, ïðè åãî ñîçäàíèè âû ðåøèëè õðàíèòü îáû÷íûåîðòîãîíàëüíûå (äåêàðòîâû) êîîðäèíàòû. Óæå â ïðîöåññå ýêñïëóàòàöèèïðîãðàììû ìîæåò âûÿñíèòüñÿ, ÷òî óäîáíåå õðàíèòü íå äåêàðòîâû, à ïîëÿðíûå êîîðäèíàòû; åñëè ìîäóëè îáùàþòñÿ ìåæäó ñîáîé òîëüêî ïóò¼ìâûçîâà ïîäïðîãðàìì, òàêàÿ ìîäèôèêàöèÿ íèêàêèõ ïðîáëåì íå ñîñòàâèò,íî âîò åñëè ïåðåìåííûå, â êîòîðûõ õðàíÿòñÿ êîîðäèíàòû, äîñòóïíû èçäðóãèõ ìîäóëåé è àêòèâíî èìè èñïîëüçóþòñÿ, òî î ìîäèôèêàöèè, ñêîðååâñåãî, ïðèä¼òñÿ çàáûòü ïåðåïèñûâàíèå âñåé ïðîãðàììû ìîæåò îêàçàòüñÿ ÷ðåçìåðíî ñëîæíûì. Êðîìå òîãî, ÷àñòî âîçíèêàåò òàêàÿ ñèòóàöèÿ,êîãäà çíà÷åíèÿ íåñêîëüêèõ ïåðåìåííûõ êàê-òî äðóã ñ äðóãîì ñâÿçàíû,òàê ÷òî ïðè èçìåíåíèè îäíîé ïåðåìåííîé äîëæíà òàêæå èçìåíèòüñÿ èäðóãàÿ (äðóãèå); â òàêèõ ñëó÷àÿõ ãîâîðÿò, ÷òî íåîáõîäèìî îáåñïå÷èòüöåëîñòíîñòü ñîñòîÿíèÿ. Ñöåïëåííîñòü ïî ãëîáàëüíûì ïåðåìåííûì ëèøàåò ìîäóëü âîçìîæíîñòè ãàðàíòèðîâàòü òàêóþ öåëîñòíîñòü.29Ìîæíî íàçâàòü åù¼ îäíó ïðè÷èíó, ïî êîòîðîé ãëîáàëüíûõ ïåðåìåííûõ ñëåäóåò ïî âîçìîæíîñòè èçáåãàòü.
Âñåãäà (sic!) ñóùåñòâóåò âåðîÿòíîñòü òîãî, ÷òî îáúåêò, êîòîðûé â íàñòîÿùåå âðåìÿ â âàøåé ïðîãðàììåîäèí, ïîòðåáóåòñÿ ¾ðàçìíîæèòü¿. Íàïðèìåð, åñëè âû ðåàëèçóåòå èãðó è ââàøåé ðåàëèçàöèè èìååòñÿ èãðîâîå ïîëå, òî âàì âåñüìà è âåñüìà âåðîÿòíîâ áóäóùåì ìîãóò ïîíàäîáèòüñÿ äâà èãðîâûõ ïîëÿ. Åñëè âàøà ïðîãðàììàðàáîòàåò ñ áàçîé äàííûõ, òî ìîæíî (è íóæíî) ïðåäïîëîæèòü, ÷òî ðàíî èëè ïîçäíî ïîòðåáóåòñÿ îòêðûòü îäíîâðåìåííî äâå èëè áîëüøå òàêèõáàç äàííûõ (íàïðèìåð, äëÿ èçìåíåíèÿ ôîðìàòà ïðåäñòàâëåíèÿ äàííûõ).Ðÿä ïðèìåðîâ ìîæíî ïðîäîëæàòü áåñêîíå÷íî.
Åñëè òåïåðü ïðåäïîëîæèòü, ÷òî èíôîðìàöèÿ, êðèòè÷íàÿ äëÿ ðàáîòû ñ âàøåé áàçîé äàííûõ(èëè èãðîâûì ïîëåì, èëè ëþáûì äðóãèì îáúåêòîì) õðàíèòñÿ â ãëîáàëüíîé ïåðåìåííîé è âñå ïîäïðîãðàììû çàâÿçàíû íà èñïîëüçîâàíèå ýòîéïåðåìåííîé, òî ñîâåðøèòü ¾ìåòàïåðåõîä¿ îò îäíîãî ýêçåìïëÿðà îáúåêòàê íåñêîëüêèì ó âàñ íå ïîëó÷èòñÿ.Õóæå âñåãî îáñòîÿò äåëà ñî ñöåïëåííîñòüþ ïî äèíàìè÷åñêèì ñòðóêòóðàì äàííûõ. Îäèí èç ìîäóëåé ìîæåò ïîñ÷èòàòü ñòðóêòóðó äàííûõíåíóæíîé è óäàëèòü å¼, òîãäà êàê â äðóãèõ ìîäóëÿõ ñîõðàíÿòñÿ óêàçàòåëè íà ýòó ñòðóêòóðó äàííûõ, êîòîðûå áóäóò ïî-ïðåæíåìó èñïîëüçîâàòüñÿ.
Âîçíèêàþùèå ïðè ýòîì îøèáêè ïðàêòè÷åñêè íåâîçìîæíî ëîêàëèçîâàòü. Ïîýòîìó ñëåäóåò ñòðîãî ïðèäåðæèâàòüñÿ ¾ïðàâèëà îäíîãî âëàäåëüöà¿: ó êàæäîé ñîçäàâàåìîé äèíàìè÷åñêîé ñòðóêòóðû äàííûõ äîëæåíáûòü ¾âëàäåëåö¿ (ïîäñèñòåìà, ìîäóëü, ñòðóêòóðà äàííûõ, à â îáúåêòíîîðèåíòèðîâàííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ ñîîòâåòñòâåííî, îáúåêò),è ïðèòîì òîëüêî îäèí. Çà âðåìÿ ñâîåãî ñóùåñòâîâàíèÿ äèíàìè÷åñêàÿñòðóêòóðà äàííûõ ìîæåò â ñëó÷àå êðàéíåé íåîáõîäèìîñòè ïîìåíÿòü âëàäåëüöà (íàïðèìåð, îäíà ïîäñèñòåìà ìîæåò ñîçäàòü ñòðóêòóðó äàííûõ, àèñïîëüçîâàòü å¼ áóäåò äðóãàÿ ïîäñèñòåìà), íî ïðàâèëî ñóùåñòâîâàíèÿ èåäèíñòâåííîñòè âëàäåëüöà äîëæíî ñîáëþäàòüñÿ íåóêîñíèòåëüíî.
Èñïîëüçîâàòü ñòðóêòóðó äàííûõ èìååò ïðàâî ëèáî ñàì âëàäåëåö, ëèáî êòî-òî,êîãî âëàäåëåö âûçâàë; â ýòîì ïîñëåäíåì ñëó÷àå âûçâàííûé íå âïðàâåïðåäïîëàãàòü, ÷òî ñòðóêòóðà äàííûõ ïðîñóùåñòâóåò äîëüøå, ÷åì äî âîçâðàòà óïðàâëåíèÿ âëàäåëüöó, è íå äîëæåí, ñîîòâåòñòâåííî, çàïîìèíàòüêàêèå-ëèáî óêàçàòåëè íà ýòó ñòðóêòóðó äàííûõ èëè íà å¼ ÷àñòè.Îòìåòèì, ÷òî ïîíÿòèå ¾âëàäåëüöà¿ äèíàìè÷åñêîé ñòðóêòóðû äàííûõîáû÷íî íå ïîääåðæèâàåòñÿ ñðåäñòâàìè ÿçûêà ïðîãðàììèðîâàíèÿ è, ñëåäîâàòåëüíî, ñóùåñòâóåò ëèøü â ãîëîâå ïðîãðàììèñòà.
Åñëè îòíîøåíèå¾âëàäåíèÿ¿ íå âïîëíå î÷åâèäíî èç òåêñòà ïðîãðàììû, îáÿçàòåëüíî íàïèøèòå ñîîòâåòñòâóþùèå êîììåíòàðèè.Îáùèé ïîäõîä ê ñöåïëåííîñòè ìîäóëåé ìîæíî ñôîðìóëèðîâàòü ñëåäóþùèìè êðàòêèìè ïðàâèëàìè:30Èçáåãàéòå âîçíèêíîâåíèÿ âçàèìíûõ (äâóíàïðàâëåííûõ)çàâèñèìîñòåé ìåæäó ìîäóëÿìè, åñëè ýòî íå ñëîæíî, íî íåñ÷èòàéòå èõ êðèìèíàëîì.• Èçáåãàéòå èñïîëüçîâàíèÿ ãëîáàëüíûõ ïåðåìåííûõ, ïîêóäà ýòî âîçìîæíî; ïðèìåíÿéòå èõ òîëüêî â ñëó÷àå, åñëèòàêîå ïðèìåíåíèå ñïîñîáíî ñýêîíîìèòü ïî ìåíüøåé ìåðåíåñêîëüêî äíåé ðàáîòû (ýêîíîìèþ íåñêîëüêèõ ÷àñîâ ðàáîòû ïîâîäîì äëÿ ââåäåíèÿ ãëîáàëüíûõ ïåðåìåííûõ ëó÷øåíå ñ÷èòàòü).• Èçáåãàéòå ñöåïëåííîñòè ïî äàííûì, à åñëè ýòî íåâîçìîæíî, òî íåóêîñíèòåëüíî ñîáëþäàéòå ïðàâèëî îäíîãî âëàäåëüöà.•1.4.4. Âûäåëåíèå ìîäóëåé âî âíåøíèå áèáëèîòåêèÏîä áèáëèîòåêîé â ïðîãðàììèðîâàíèè îáû÷íî ïîíèìàþò íåêèé íàáîð áîëåå-ìåíåå óíèâåðñàëüíîãî ïðîãðàììíîãî êîäà, ðåøàþùåãî îïðåäåë¼ííóþ çàäà÷ó èëè ëîãè÷åñêè ñâÿçàííóþ ìåæäó ñîáîé ãðóïïó ÷àñòíûõïîäçàäà÷ è äîïóñêàþùåãî âêëþ÷åíèå â ïðîãðàììû, â êîòîðûõ òàêèå ïîäçàäà÷è âîçíèêàþò.×àñòî ðàçðàáîòêà áèáëèîòåêè ñ ñàìîãî íà÷àëà ðàññìàòðèâàåòñÿ êàêîòäåëüíûé ñàìîñòîÿòåëüíûé ïðîåêò, òî åñòü å¼ ñîçäàòåëè èñõîäÿò èçïðåäïîëîæåíèÿ, ÷òî èçáðàííûå èìè ïîäçàäà÷è äîñòîéíû óíèâåðñàëüíîãîðåøåíèÿ è ïðåäëîæåííîå ðåøåíèå ¾îáÿçàòåëüíî êîìó-íèáóäü ïðèãîäèòñÿ¿.
Ê ñîæàëåíèþ, áûâàåò è òàê, ÷òî áèáëèîòå÷íîå ðåøåíèå, íà ñîçäàíèåêîòîðîãî ïîòðà÷åíî ìíîãî ñèë è âðåìåíè, òàê íèêîìó è íå ïðèãîæäàåòñÿ. Íî âîçìîæåí êà÷åñòâåííî èíîé ïîäõîä ê ñîçäàíèþ áèáëèîòåê, êîòîðûé ãàðàíòèðóåò, ÷òî ñèëû íå ïðîïàäóò äàðîì; ïîäõîä ñîñòîèò â òîì,÷òî èçíà÷àëüíî êîä áóäóùåé áèáëèîòåêè ïðåäñòàâëÿåò ñîáîé ÷àñòü îáû÷íîé ïðîãðàììû, è ðåøàåò, ñîîòâåòñòâåííî, òàêèå ïîäçàäà÷è, êîòîðûå ïîòðåáîâàëèñü (óæå ïîòðåáîâàëèñü!) â õîäå ðàáîòû íàä ýòîé ïðîãðàììîé.Ðåøåíèå î ôîðìèðîâàíèè îòäåëüíîé áèáëèîòåêè íà îñíîâå èìåþùèõñÿìîäóëåé ïðèíèìàåòñÿ óæå â ïðîöåññå ðàáîòû.Êîëü ñêîðî òàêîå ðåøåíèå ïðèíÿòî, èç èìåþùåãîñÿ íàáîðà èñõîäíûõôàéëîâ âûäåëÿåòñÿ îïðåäåë¼ííûé íàáîð ìîäóëåé, êîòîðûå ïåðåìåùàþòñÿ â äðóãóþ äèðåêòîðèþ è èñêëþ÷àþòñÿ èç îñíîâíîãî ïðîåêòà; â îñòàëüíûå ôàéëû ïðîåêòà ïî íåîáõîäèìîñòè âíîñÿòñÿ èçìåíåíèÿ, òðåáóþùèåñÿ,÷òîáû ñîîòâåòñòâóþùèå âîçìîæíîñòè áðàëèñü íå èç ¾ñâîèõ¿ ìîäóëåé, àèç âíåøíåé áèáëèîòåêè (êîíêðåòèêà çàâèñèò îò èñïîëüçóåìîãî ÿçûêà ïðîãðàììèðîâàíèÿ, à â íåêîòîðûõ ñëó÷àÿõ è îò èñïîëüçóåìûõ èíñòðóìåíòîâ, ñðåä, ñèñòåìû ñáîðêè è ò.
ï.). Ñ ýòîãî ìîìåíòà ïðîåêò è áèáëèîòåêàæèâóò ñàìîñòîÿòåëüíûìè æèçíÿìè.31Ïðè ïðèíÿòèè ðåøåíèÿ î ñîçäàíèè îòäåëüíîé áèáëèîòåêè íà îñíîâåèìåþùèõñÿ ìîäóëåé íåîáõîäèìî ðóêîâîäñòâîâàòüñÿ ñëåäóþùèìè ñîîáðàæåíèÿìè. Ïðåæäå âñåãî, çàäàéòå ñåáå âîïðîñ ¾êàêèå çàäà÷è áóäåò ðåøàòüíîâàÿ áèáëèîòåêà¿. Êàê îáû÷íî â òàêèõ ñëó÷àÿõ, îòâåò äîëæåí ñîñòîÿòüèç îäíîé ôðàçû.Âòîðîé âîïðîñ ìîæåò îêàçàòüñÿ íåñêîëüêî ñëîæíåå: êàêèå ìîäóëèäîëæíû áûòü âûäåëåíû â áèáëèîòåêó è êàêèìè âîçìîæíîñòÿìè, íå âîøåäøèìè â áèáëèîòåêó, ýòè ìîäóëè áóäóò ïîëüçîâàòüñÿ. Êàòåãîðè÷åñêèíåäîïóñòèìà ñèòóàöèÿ, ïðè êîòîðîé ñîçäàâàåìàÿ áèáëèîòåêà áóäåò â êàêîì áû òî íè áûëî ñìûñëå çàâèñåòü îò âîçìîæíîñòåé, êîòîðûå îñòàþòñÿâ îñíîâíîé ïðîãðàììå.
Êðîìå òîãî, íåæåëàòåëüíà ñèòóàöèÿ, ïðè êîòîðîéáèáëèîòåêà èñïîëüçóåò âîçìîæíîñòè äðóãîé áèáëèîòåêè íåâàæíî, âàøåé ñîáñòâåííîé èëè âíåøíåé. Ìíîãèå ïðîãðàììèñòû ñ÷èòàþò òàêóþ ñèòóàöèþ äîïóñòèìîé, íî íà ïðàêòèêå îíà ïðèâîäèò ê êîíôëèêòàì âåðñèéè äðóãèì ôååðè÷åñêèì ¾ïðèêëþ÷åíèÿì¿ ïðè ïîïûòêàõ âîñïîëüçîâàòüñÿáèáëèîòåêîé, òàê ÷òî â èòîãå êòî-òî âïîëíå ìîæåò ïðåäïî÷åñòü ðåøèòüòó æå çàäà÷ó ñ íóëÿ, íåæåëè ÷åì ïîëüçîâàòüñÿ âàøåé áèáëèîòåêîé.
Òàêèëè èíà÷å, çàâèñèìîñòü îäíîé áèáëèîòåêè îò äðóãîé òåîðåòè÷åñêè äîïóñòèìà, íî âîò ïåðåêð¼ñòíûå çàâèñèìîñòè äâóõ è áîëåå áèáëèîòåê äðóãîò äðóãà íåäîïóñòèìû íè â êîåì ñëó÷àå âû, ñêîðåå âñåãî, ïðîñòî íåñìîæåòå ñëèíêîâàòü òàêîé ïðîåêò. Åñëè ìîäóëè äâóõ è áîëåå áèáëèîòåêîáíàðóæèâàþò âçàèìîçàâèñèìîñòè, èõ íóæíî îáúåäèíèòü â îäíó áèáëèîòåêó; ïîìíèòå òîëüêî, ÷òî ïðàâèëî îäíîé ôðàçû ïðè îòâåòå íà âîïðîñ¾÷òî äåëàåò ýòà áèáëèîòåêà¿ íèêòî íå îòìåíÿë.Òðåòèé è ïîñëåäíèé âîïðîñ, íà êîòîðûé íàäî îòâåòèòü ïðè âûäåëåíèèìîäóëåé â áèáëèîòåêó ýòî âîïðîñ î òîì, ìîæåòå ëè âû ñåáå ïðåäñòàâèòü ïðîãðàììó, ñîâåðøåííî íå ïîõîæóþ íà òó, ÷òî âû ñåé÷àñ ïèøåòå,íî â êîòîðîé, òåì íå ìåíåå, ìîãóò ïðèãîäèòüñÿ âîçìîæíîñòè âàøåé íîâîéáèáëèîòåêè.Åñëè îòâåòû íà âñå âîïðîñû ïîëó÷åíû, âû ìîæåòå ñìåëî îáúÿâèòü÷àñòü âàøèõ ìîäóëåé îòäåëüíîé áèáëèîòåêîé è ïîçâîëèòü èì æèòü ñâîåéíåçàâèñèìîé æèçíüþ.