Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ программирования Π½Π° Π‘++. 101 ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ рСкомСндация». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 5

Автор Π“Π΅Ρ€Π± Π‘Π°Ρ‚Ρ‚Π΅Ρ€

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΡŒ, Π½ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ это вслух. Π”Π°, вашС эго ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ свои исходныС тСксты для всСобщСй ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ, Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΎΠΌΡƒ Π³Π΅Π½ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ программисту Π²Π½ΡƒΡ‚Ρ€ΠΈ вас ΠΏΠΎ Π΄ΡƒΡˆΠ΅ Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ½ смоТСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Бсылки

[Constantine95] Β§10, Β§22, Β§33 β€’ [McConnell93] Β§24 β€’ [MozillaCRFAQ]

Π‘Ρ‚ΠΈΠ»ΡŒ проСктирования

Π”ΡƒΡ€Π°ΠΊΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ слоТности. ΠŸΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΠΊΠΈ тСрпят ΠΈΡ…. НСкоторыС ΡƒΡ…ΠΈΡ‚Ρ€ΡΡŽΡ‚ΡΡ ΠΈΡ… ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π΅Π½ΠΈΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ ΠΈΡ….

β€” Алан ΠŸΠ΅Ρ€Π»ΠΈΡ (Alan Perlis)

Π― Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Π», Π½ΠΎ Π·Π°Π±Ρ‹Π» Π°Ρ„ΠΎΡ€ΠΈΠ·ΠΌ Π₯ΠΎΠ°Ρ€Π° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прСТдСврСмСнная оптимизация β€” ΠΊΠΎΡ€Π΅Π½ΡŒ всСх Π·ΠΎΠ» Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

β€” Π”ΠΎΠ½Π°Π»ΡŒΠ΄ ΠšΠ½ΡƒΡ‚ (Donald Knuth), The Errors of TeX [Knuth89]

ΠžΡ‡Π΅Π½ΡŒ слоТно ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ проСктирования ΠΎΡ‚ стиля кодирования. ΠœΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ‚Π΅ вопросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ΠΈ практичСским вопросам, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС, Ρ‡Π΅ΠΌ просто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс ΠΈΠ»ΠΈ функция. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ β€” баланс ΠΌΠ΅ΠΆΠ΄Ρƒ простотой ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒΡŽ (рСкомСндация 6), ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (рСкомСндация 8) ΠΈ пСссимизации (рСкомСндация 9). Π­Ρ‚ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ кодирования ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΊ большим областям β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ классов ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ с Π΄Π°Π»Π΅ΠΊΠΎ ΠΈΠ΄ΡƒΡ‰ΠΈΠΌΠΈ послСдствиями ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. (Они ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ для всСх программистов. Если Π²Ρ‹ считаСтС ΠΈΠ½Π°Ρ‡Π΅ β€” Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Ρ†ΠΈΡ‚Π°Ρ‚Ρƒ ΠšΠ½ΡƒΡ‚Π° ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π΅Π΅ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ.)

МногиС ΠΈΠ· ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ этого ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ зависимостями β€” ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°ΠΌΠ½Π΅ΠΌ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Ρ‚Π΅ΠΌΠΎΠΉ. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ ΠΈ Π·Π°Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ Π½Π°Π΄ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΎΠΉ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния β€” любой Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΎΠΉ. ΠšΠ°ΠΊΡƒΡŽ Π±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ Π²Ρ‹ Π½ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ослаблСниСм зависимостСй. НаслСдованиС? Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½Π΅Π΅ зависимым ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ использования Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…? Π‘Π½ΠΈΠΆΠ°Π΅Ρ‚ Π΄Π°Π»ΡŒΠ½ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ зависимости, осущСствляСмыС посрСдством ΡˆΠΈΡ€ΠΎΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Ρ€Π°Π·Π½Ρ‹ΠΌ частям ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Абстракция? УстраняСт зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт концСпциями, ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚. Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ? Π”Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠ΅Π½Π΅Π΅ зависимым ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π°Π±ΠΎΡ‚Π° ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ зависимостями отраТаСтся Π² устранСнии совмСстного использования состояния (рСкомСндация 10), ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ сокрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (рСкомСндация 11) ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΌ.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ самой Π²Π°ΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ каТСтся рСкомСндация 6: "Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ, простота ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒ".

5. Один ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” ΠΎΠ΄Π½Π° Π·Π°Π΄Π°Ρ‡Π°

РСзюмС

ΠšΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (пСрСмСнная, класс, функция, пространство ΠΈΠΌΠ΅Π½, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π‘ ростом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², СстСствСнно, увСличиваСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΡ… отвСтствСнности, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ своСго прСдназначСния.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ идСя, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ высказанной вслух, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ пояснСна ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Аналогично, каТдая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ясноС ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ прСдназначСниями ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ нСсоразмСрно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ прСдставляСт собой Π½Π΅Ρ‡Ρ‚ΠΎ большСС, Ρ‡Π΅ΠΌ просто сумму Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, слоТностСй ΠΈ ошибок ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ частСй. Π’Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ большС ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ (Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π±Π΅Π· особых Π½Π° Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½) ΠΈ слоТнСС Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ вСсьма ΡƒΠ±ΠΎΠ³ΠΈΠΉ интСрфСйс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· своих ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ частичноС ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Ρ… областСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСвозмоТности Ρ‡Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ….

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ функциями ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ для проСктирования ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. "ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Π°Ρ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ" Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ количСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² повСдСния ΠΈ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² разрастаСтся Π² соотвСтствии с Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈΠΊΠΈ. ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Ρ‡Π΅Ρ‚ΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ СдинствСнным ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (см. Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 39), малСнькиС классы, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‡Π΅Ρ€Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ.

Абстракции высокого уровня ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ· ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… абстракций. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… абстракций Π² большой Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΊΠΎΠ½Π³Π»ΠΎΠΌΠ΅Ρ€Π°Ρ‚. РСализация слоТного повСдСния ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° простых сущСствСнно Π»Π΅Π³Ρ‡Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. realloc. Π’ стандартС Π‘ функция realloc ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΡƒΡ€Π½ΠΎΠΉ славой ΠΏΠ»ΠΎΡ…ΠΎ спроСктированной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Она Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π΅Π»: выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ссли Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, освобоТдаСт Π΅Π΅, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, пСрСраспрСдСляСт Π΅Π΅ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π΅, Ссли Ρ‚Π°ΠΊΠΎΠ΅ пСрСраспрСдСлСниС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π΅ просто Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Данная функция ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рассматриваСтся всСми ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ нСдальновидного, ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ проСктирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. basic_string. Π’ стандартС Π‘++ std::basic_string слуТит Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΡΡ Π΄ΡƒΡ€Π½ΠΎΠΉ славой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ проСктирования ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ класса. Π’ этот Ρ€Π°Π·Π΄ΡƒΡ‚Ρ‹ΠΉ Π΄ΠΎ Π½Π΅ΠΈΠΌΠΎΠ²Π΅Ρ€Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² класс Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ класс пытаСтся Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ совсСм Π΅ΠΌΡƒ удаСтся; Π² Π½Π΅ΠΌ Ρ‚Π°ΠΊ ΠΈ остаСтся Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΌ вопрос ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ индСксированиСм. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½Π΅ΠΌ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСобоснованно дублируСтся мноТСство стандартных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя этот класс оставляСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ возмоТностСй для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. (Π‘ΠΌ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 44).

Бсылки

[Henney02a] β€’ [Henney02b] β€’ [McConnell93] Β§10.5 β€’ [Stroustrup00] Β§3.8, Β§4.9.4, Β§23.4.3.1 β€’ [Sutter00] Β§10, Β§12, Β§19, Β§23 β€’ [Sutter02] Β§1 β€’ [Sutter04] Β§37-40

6. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ, простота ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒ

РСзюмС

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ быстроты. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Π»ΡƒΡ‡ΡˆΠ΅ слоТности. Π―ΡΠ½ΠΎΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ хитроумия. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ нСнадСТности (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 83 ΠΈ 99).

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ простоты проСктирования ΠΈ ясности ΠΊΠΎΠ΄Π°. Π›ΡŽΠ΄ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄, скаТут Π²Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ спасибо Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сдСлали ваш ΠΊΠΎΠ΄ понятным. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ это Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ сами β€” ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ, ΠΎ Ρ‡Π΅ΠΌ это Π²Ρ‹ Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ ΠΈ ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ‚ΠΎΠ³Π΄Π° написали... ΠŸΡ€ΠΈΡΠ»ΡƒΡˆΠ°ΠΉΡ‚Π΅ΡΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ словам.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ написана для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ β€” для ΠΌΠ°ΡˆΠΈΠ½Ρ‹, которая Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.

β€” Π“Π°Ρ€ΠΎΠ»ΡŒΠ΄ АбСльсон (Harold Abelson) ΠΈ Π”ΠΆΠ΅Ρ€Π°Π»ΡŒΠ΄ Бассман (Gerald Jay Sussman)

ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для людСй, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ для машин.

β€” Π‘Ρ‚ΠΈΠ² Мак-КоннСлл (Steve McConnell)

Π‘Π°ΠΌΡ‹Π΅ Π΄Π΅ΡˆΠ΅Π²Ρ‹Π΅, быстрыС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы β€” Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π½Π΅ΠΉ Π½Π΅Ρ‚.

β€” Π“ΠΎΡ€Π΄ΠΎΠ½ Π‘Π΅Π»Π» (Gordon Bell)

Π­Ρ‚ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ (ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡˆΠΈΠ±Π°ΡŽΡ‚ΡΡ), Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ (Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π»ΠΎΠΌΠ°ΡŽΡ‚ΡΡ) ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ просты Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, тСстировании ΠΈ сопровоТдСнии. Π’Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ простоты Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ.

β€” Ион Π‘Π΅Π½Ρ‚Π»ΠΈ (Jon Bentley)

МногиС ΠΈΠ· Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ этой ΠΊΠ½ΠΈΠ³ΠΈ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ приводят ΠΊ Π»Π΅Π³ΠΊΠΎ измСняСмому Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ ΠΈ ΠΊΠΎΠ΄Ρƒ, Π° ΡΡΠ½ΠΎΡΡ‚ΡŒ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΆΠ΅Π»Π°Π½Π½Ρ‹ΠΌ качСством для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π² состоянии ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π²Ρ‹ Π½Π΅ смоТСтС ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ.

ВСроятно, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнным сопСрничСством Π² Π΄Π°Π½Π½ΠΎΠΉ области являСтся сопСрничСство ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 7, 8 ΠΈ 9). Когда β€” Π½Π΅ Ссли β€” Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄ соблазном ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, пСссимизации для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ясности, β€” вспомнитС, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ рСкомСндация 8: Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ быстрой, Ρ‡Π΅ΠΌ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ "Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… Π·Π°ΠΊΡƒΡ‚ΠΊΠΎΠ²" языка. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΈΠ· эффСктивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ нСумСстной ΠΈ/ΠΈΠ»ΠΈ чСрСсчур Ρ…ΠΈΡ‚Ρ€ΠΎΡƒΠΌΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π΅Π· Π½ΡƒΠΆΠ΄Ρ‹ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ w+c; для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΠΊΠ½ΠΎ w Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнт с (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 26).