ПредишенСледващото

10. Минимизиране на глобалната и споделени данни

Споделянето е въпрос на спор и раздор. Избягвайте обмен на данни, по-специално на глобалните данни. Споделени данни засилват сближаване, което води до по-ниски soprovozhdaemocti и често представяне.

дискусия

Тази декларация е по-общо, отколкото по-тесен изискване на препоръка 18.

Избягвайте данни с външна връзка в пространството от имена обхват или представлява член статичен клас. Тяхната употреба усложнява логика на програмата води до съгласуваност между различните (и, което е по-лошо, далечни) части от програмата. Споделени данни правят по-малко ефективни тестване единица, тъй като точността на кодовия фрагмент, който използва споделените данни, дължащи се на историята на промените на данните, и в допълнение, определя функционирането на някои от тях, все още неизвестен, кодът, който ще използва данните по-късно.

имена на обекти в глобалното пространство водят до допълнително неговото запушване.

Ако не можете да направите, без глобални обекти, обекти в обхвата на пространство от имена или членовете статични клас, се уверете, че те са правилно инициализира. Процедура за инициализация такива обекти от различни компилации единици не е дефиниран, така че са необходими за правилното функциониране на специалните техники в този случай (вж. Съпътстващите препратките). Правила процедура инициализация са доста сложни, така че е най-добре да ги избягвате; но ако все още трябва да се справят с тях, ги имате и да учат и да се използва с повишено внимание.

Обектите, които са в обхвата именни пространства статични членове или споделени от различни нишки или процеси, за да се намали нивото на паралелното multithread и многопроцесорни среди, и често са пречка по отношение на производителност и мащабируемост (вж. Препоръка 7). Опитайте се да се отърва от обмен на данни; Използвайте вместо средство за комуникация (например опашка съобщение).

За предпочитане е да се осигури съгласуваност с ниско и да се сведе до минимум класове взаимодействия.

изключения

Такова ниво програма средства като CIN. Cout и cerr. Те са специализирани и се реализира по специален начин. Фабриката трябва да поддържа функциите на регистъра, които трябва да бъдат призовани да създадете такъв тип, и на такъв регистър е обикновено цяло програма (все пак за предпочитане той да бъде вътрешен обект, по отношение на една фабрика, а не глобален споделен обект, виж точка 11). ,

Кодът, в която даден обект се споделя от различни теми, трябва да гарантира, сериализация на препратки към такъв обект.

11. Информация крие

Не позволявайте на вътрешната информация, извън площадката, която осигурява една абстракция.

дискусия

За да се намали зависимостта между кода за разговори, която работи с една абстракция, а изпълнението на абстракция, вътрешни данни, изпълнението трябва да бъде скрита. В противен случай, на обаждащия се да получите достъп до тази информация (или по-лошо, за да го промените), и това изтичане е предназначен само за вътрешна употреба на информация прави на повикващия в зависимост от вътрешното представяне на абстракция. Open абстракция трябва (за предпочитане в полето за тема, но като минимум, да получите / комплект абстракция), а не на данните.

Скриването на информация намалява стойността на проекта, времето за разработка и / или риска по два основни начина.

Тя е локализирана промените. Скриването на информация намалява район "вълна ефект" Промените и поради това нейната цена.

Той укрепва инварианти. Скриването на информация ограничава кода отговорен за поддържане (и в случай на грешка, за нарушение) програма инварианти (вж. Препоръка 41).

Не позволявайте на "леки" Данните от всеки обект, който осигурява абстракция (вж. Също Препоръка 10). Данни - само едно от въплъщенията на абстракция, концептуална държавата. Ако се съсредоточи върху идеята, а не на нейното представителство, вие ще бъдете в състояние да предложи замислен интерфейс и "оближе" изпълнение може да бъде и по-късно - например, чрез прилагане кеширане вместо да изчисляват "в движение", или използването на различни оптимизиране на изображения (например, полярни координати, а не декартово).

Типичен пример е, че класовете страните данни никога не са направени достъпни от външната страна с спецификатор обществеността (вж. Препоръка 41) или чрез указатели или дръжки (см. Препоръка 42). Този принцип в същата степен, приложим за по-големи лица - например, като библиотеки, които също трябва да позволяват достъп до вътрешна информация от външната страна. Модулите и библиотеките трябва да предоставят интерфейси, които определят абстракция и да работят с тях, като по този начин осигуряват по-голяма сигурност на кода на разговори и по-малък, отколкото връзка с общи данни.

изключения

Тестване код често се нуждае от възможност да подаде жалба до "вътрешния" тест клас или модул.

Набор от ценности (структура в C-стил), който е прост набор от данни, без да предоставят никакви абстракции не изискват скривалището на своите данни, които в този случай са интерфейса (вж. 41 от препоръката).

Свързани статии

Подкрепете проекта - споделете линка, благодаря!