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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Как пасти ΠΊΠΎΡ‚ΠΎΠ². НаставлСниС для программистов, руководящих Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ программистами». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 71

Автор Π”ΠΆ.Π₯Π°Π½ΠΊ Π Π΅ΠΉΠ½Π²ΠΎΡ‚Π΅Ρ€

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘

Как Π΄Π°Ρ‚ΡŒ скотинС Π² Π³Π»Π°Π· – критичСский ΠΎΠ±Π·ΠΎΡ€ ΠΊΠΎΠ΄Π° элСктронного администратора

Π’ Π³Π»Π°Π²Π΅ 6, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Кодовая полиция», я объяснял, ΠΊΠ°ΠΊ ΡΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ полицСйским. Π‘ΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ чисткС собствСнного ΠΊΠΎΠ΄Π° ΠΎΡ‡Π΅Π½ΡŒ слоТно, Π½ΠΎ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ. Бвязав Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ этого прилоТСния свой ΠΊΠΎΠ΄ со скотным Π΄Π²ΠΎΡ€ΠΎΠΌ, я надСялся ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ. ВсС, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ, β€“ это Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π² процСссС критичСского ΠΎΠ±Π·ΠΎΡ€Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² процСссС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π°, написанного ΠΏΠΎΠ΄ΠΎΡ‚Ρ‡Π΅Ρ‚Π½ΠΎΠΉ Π²Π°ΠΌ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ.

ИмСя ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ исходный ΠΊΠΎΠ΄, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ с сайта http://www.piter.com.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ ΠΈ происхоТдСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

Код элСктронного администратора я написал вскорС послС прСкращСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π½Π΅ΠΊΠΈΠΌ Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²ΠΎΠ»ΠΎΠΊΠΈΡ‚Ρƒ, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΡƒΡŽ любой процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° написаниС ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ ΠΏΠΎΠ·ΠΆΠ΅ прСдстояло самому ΠΆΠ΅ Ρ€Π°ΡΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ, катСгоричСски Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ, для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² я ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ упомянутого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ЭкспСримСнт этот, ΠΏΡ€ΠΈΠ½Π΅ΡΡˆΠΈΠΉ ΠΌΠ½Π΅ Π½Π΅ΠΌΠ°Π»ΠΎ Π·Π°Π±Π°Π²Π½Ρ‹Ρ… Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠΉ, каТСтся, удался.

НС скаТу, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ своСму качСству ΡΠΎΡ€Π΅Π²Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ, Π½ΠΎ, Π² ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΎΠ½ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ… ΠΈ с ΠΌΠΎΠΈΠΌΠΈ административными функциями справляСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹

ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ я Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² Π³Π»Π°Π²Π΅ 6. Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ отличаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ особСнностями.

β€’ ΠžΠ½ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² соотвСтствии со стандартами программирования, принятыми для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС примСняСмыС Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ программистами ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ конструирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², обусловлСнныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ слишком Ρ€Π°Π·Π½ΠΈΡ‚ΡŒΡΡ.

β€’ Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ строгая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ – это нСсколько большС, Ρ‡Π΅ΠΌ просто Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€; ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Как извСстно, сСрдцС Π½Π΅ Π΄Ρ‹ΡˆΠΈΡ‚, Π° Π»Π΅Π³ΠΊΠΈΠ΅ Π½Π΅ ΠΊΠ°Ρ‡Π°ΡŽΡ‚ ΠΊΡ€ΠΎΠ²ΡŒ.

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

Π― ΠΎΠ±Ρ€Π°Ρ‰Ρƒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ряд слабых сторон ΠΊΠΎΠ΄Π°. По большСй части ΠΎΠ½ΠΈ ΠΎΠ±ΡƒΡΠ»ΠΎΠ²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ сТатыми Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°ΠΌΠΊΠ°ΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ, Ρ‡Ρ‚ΠΎ инструмСнт, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ этот ΠΊΠΎΠ΄ относится, я ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ сСбя. Пока Ρ‡Ρ‚ΠΎ я Π½ΠΈ Ρ€Π°Π·Ρƒ Π½Π΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π», Ρ‡Ρ‚ΠΎ Π±Π΅Π·Π³Ρ€Π΅ΡˆΠ΅Π½, поэтому ΠΌΠΎΠΈ самоистязания вряд Π»ΠΈ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ удивят.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Π» Π»ΠΈ я стандартам?

Π’ основном я слСдовал стандартам – ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΌΠ½Π΅ Ρ‚Π°ΠΊ каТСтся. VB я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ, начиная с вСрсии 1.0, ΠΈ с Π³ΠΎΠ΄Π°ΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ с ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΈΡΡŒ Ρƒ мСня (Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρƒ вас) ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ – Π±Ρ‹Π» ΠΈ ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ, ΠΈ ΠΏΡ€ΠΎΠ²Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚. Π‘ ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, слСдованиС стандартам VB выраТаСтся Π² ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… привСсти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ понятия Π² соотвСтствиС с этим языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΏΠΎ ΠΏΡ€Π°Π²Π΄Π΅ говоря, ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ.

Π’ Π³Π»Π°Π²Π΅ 4 я ΠΈΠ·Π»ΠΎΠΆΠΈΠ» понятиС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠ»ΠΈ задания, β€“ основного ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π² ΠΌΠΎΠΉ ΠΊΠΎΠ΄, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π½Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ clsTasks ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ clsTask. Π’ этих Π΄Π²ΡƒΡ… модулях классов инкапсулированы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ взаимодСйствиС ΠΈ всС Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² связи с заданиями. Π€ΠΎΡ€ΠΌΡ‹ frmTask ΠΈ frmTasks, отвСтствСнныС Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π·Π°Π΄Π°Π½ΠΈΠΉ Π½Π° сторонС графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° clsTasks. ВсС ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ clsToday, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ экзСмплярам clsTasks. Π­Ρ‚Π° схСма довольно ΡƒΠ΄Π°Ρ‡Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ каТСтся, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ объявлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° clsTasks выглядят Ρ‚Π°ΠΊ:

'-Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ события

Private mo_DataService As clsDataService '–данныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Private mo_PickList As clsPickList '–список ΠΎΡ‚Π±ΠΎΡ€Π° для Ρ„ΠΎΡ€ΠΌ

Private WithEvents mfjasks As frmTasks '–всС задания, связанныС с frmTasks

Private WithEvents mfjask As frmTask 'β€“ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, связанноС с frmTask

Private mo_DataGrid As DataGrid

Private WithEvents mo_DataProvider As clsDataProvider '–основныС Π΄Π°Π½Π½Ρ‹Π΅

Private ml_CurTaskID As Long '–выбранный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ задания

Private ms_Project As String '–примСняСтся с frmProject

Private mo_ProgConfig As clsProgConfig

Private ms_TaskFilter As String

Private mo_Task As clsTask

Private mb_NeedRefresh As Boolean

Private ms_Resource As String

Private ms_Source As String '–открытыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ события

Public Event TaskUpdatedO

И Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ? Много ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описывал Π±Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ Π±Π΅Π·Π΄Π°Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΡ‚! И ΠΊΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ со стороны смоТСт ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½ΡƒΠΆΠ΅Π½, Ссли Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… описаний?! Для этого придСтся ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π―-Ρ‚ΠΎ Π΅Π³ΠΎ знаю вдоль ΠΈ ΠΏΠΎΠΏΠ΅Ρ€Π΅ΠΊ, Π° Π²ΠΎΡ‚ свСТий взгляд наткнСтся Π½Π° Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΎΠ΅ прСпятствиС.

Π‘ΡƒΠ΄ΡŒ Π²Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ, Π²Ρ‹ Π±Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, настояли Π½Π° Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° модуля с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ Π΄Π°Ρ‚Ρ‹ создания. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹, вСроятно, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ Π±Ρ‹ ΠΎΡ‚ программиста ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€ модуля, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ² Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ «ТизнСобСспСчСния» ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НСльзя, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΆΠ΅, Π½Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ достоинства Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… – m Π² Π½ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ), Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (БоотвСтствуСт Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, s – строковой, b – логичСской, ΠΈ Ρ‚. Π΄.).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ процСсс отобраТСния Ρ„ΠΎΡ€ΠΌΡ‹ задания:

Public Sub Show(Optional sResource As String ="")

If (mf_Tasks Is Nothing) Then

SetHourglass

Set mf_Tasks = New frmTasks Load mfjasks

Set mo_DataGrid = mf_Tasks .grdTasks

'-load tasks

LoadTaskGrid

'-Load resource combo

mo_PickList.LoadPickList mf_Tasks.cboResource. PIC_RESOURCE

' -configure task list

ms_Resource = sResource

mf_Tasks.Configure ms_Resource

If sResource «» "" Then   ' -установка источника Π΄Π°Π½Π½Ρ‹Ρ… для отобраТСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ задания

ms_TaskFilter = "Assigned =" & Chr$(39) & sResource & Chr$(39)

mo_DataProvider.Filter ms_TaskFi1ter

mo_DataProvider.Sort Β«StatusΒ»

End If

SetReady

End If

With mf_Tasks

WindowState = 0

Show

ZOrder 0

End With

End Sub

Π—Π΄Π΅ΡΡŒ, нСсмотря Π½Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ этот ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ самодокумСнтированным. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ уровня ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ – ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия, ΠΊΠΎΠ΄ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚.

Как насчСт связности ΠΈ взаимозависимости?

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° управляСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ clsApplication с глобальной ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия. Из Π½Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ с понятным ΠΈΠΌΠ΅Π½Π΅ΠΌ cLsAppLication.StartApplication создана Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° MDI ΠΈ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния процСсса исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ это сугубо ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

ОбъявлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² clsApplication выглядят Ρ‚Π°ΠΊ:

Private WithEvents mf_Parent As nidiManager

Private WithEvents mo_Projects As clsProjects

Private WithEvents mo_Tasks As clsTasks

Private WithEvents mo_Today As clsToday

Private WithEvents mo_Archive As clsArchive

Private mo_Contacts As clsContacts

Private mo_DataService As clsDataService

Private mo_Reports As clsReports

Private mo_ProgConfig As clsProgConfig

Private mo_PickList As clsPickList

Private mc_Tasks As New Collection '–коллСкция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² clsTasks

Private mc_Projects As New Collection '–коллСкция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² clsProjects

Private mc_Sources As New Collection '–коллСкция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² clsSource

Private moJJser As clsUser

Private mo_Source As clsSource

Private ms_DSN As String 'примСняСтся ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ

Π—Π΄Π΅ΡΡŒ, Ссли Π½Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² уровня модуля, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ всС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ clsApplication. Из этого Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ вывСсти всю ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

РСализация Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ многочислСнных событий Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ «стройнит» ΠΊΠΎΠ΄ Ρ„ΠΎΡ€ΠΌ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв родитСлями Ρ„ΠΎΡ€ΠΌ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ классов, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° Ρ„ΠΎΡ€ΠΌ явствСнно ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ± этих ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ…. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, clsProjects запускаСт frmProjects; впослСдствии, Ссли Π² Ρ„ΠΎΡ€ΠΌΠ΅ происходит ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ событиС, Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ сразу запускаСтся Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ элСмСнтС управлСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ΄ ΠΏΠΎ большСй части локализуСтся, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, способствуСт инкапсуляции.