Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан

Как Π²Π°ΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄

МнС приходится ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΈ open source, ΠΈ всячСскиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, ΠΈ ΠΊΠΎΠ΄ enterprise ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ИмСнно ΠΎ послСдних я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ сСгодня ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° enterprise ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” отстой. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³Π»ΡŽΡ‡Π°Ρ‚ ΠΈ тормозят, ΠΈΡ… слоТно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, постоянно ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ удивляСт.

Но ΡƒΠ΄ΠΈΠ²Π»ΡΡŽΡ‚ люди, написавшиС отстойный ΠΊΠΎΠ΄. Π­Ρ‚ΠΈ люди, с Π½Π΅ΠΌΠ°Π»Ρ‹ΠΌ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, Π·Π½Π°ΡŽΡ‚ нСсколько языков, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ½ΠΈΠ³, Π·Π½Π°ΡŽΡ‚ ООП, SOLID, Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ малопонятныС слова. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· вас, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… этот пост.

ВСория Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Ρ… ΠΎΠΊΠΎΠ½

Π’ 1969 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ экспСримСнт. Π’ Ρ…ΠΎΠ΄Π΅ экспСримСнта Π΄Π²Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π±Ρ‹Π»ΠΈ оставлСны Π² Π΄Π²ΡƒΡ… мСстах – Π² Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎΠΌ унивСрситСтском Π³ΠΎΡ€ΠΎΠ΄ΠΊΠ΅ ΠΈ Π½Π΅Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎΠΌ Ρ€Π°ΠΉΠΎΠ½Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π°. НС ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎΠΌ мСстС машина простояла всСго ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ ΠΈ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ΅Π½Π°, Π° Π² Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎΠΌ машина простояла Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎΠΉ нСдСлю. Но ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡƒΡ†Π΅Π»Π΅Π²ΡˆΠ΅ΠΉ машинС Ρ€Π°Π·Π±ΠΈΠ»ΠΈ стСкло, ΠΆΠΈΡ‚Π΅Π»ΠΈ этого самого Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π³ΠΎΡ€ΠΎΠ΄ΠΊΠ° Π·Π° нСсколько часов Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ Π΅Ρ‘ Π½Π° Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ Π²Π²Π΅Ρ€Ρ… Π΄Π½ΠΎΠΌ.

Π’ послСдствии ΡƒΡ‡Π΅Π½Ρ‹Π΅ Π½Π°Π·Π²Π°Π»ΠΈ это явлСниС β€œΠ’Π΅ΠΎΡ€ΠΈΠ΅ΠΉ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Ρ… окон”. Богласно Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, любоС проявлСниС бСспорядка ΠΈΠ»ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ людСй Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…. ВСория ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° нСсколько ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²ΠΏΠΎΠ»Π½Π΅ достовСрной.

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ эффСкт. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ порядка ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ порядок.

Как это влияСт Π½Π° ΠΊΠΎΠ΄

Π’ enterprise Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прСссинг сроков ΠΈ нСопрСдСлСнности Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ высок, Ρ‡Ρ‚ΠΎ каТСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€œΠ±Ρ‹ΡΡ‚Ρ€ΠΎ ΠΈ грязно” – Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. ΠœΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€œΠ±Ρ‹ΡΡ‚Ρ€ΠΎ ΠΈ грязно” Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ всСму ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΏΡƒΡ‚Π΅ΠΌ clipboard inheritance (aka copy-paste), Ρ‚Π°ΠΊ ΠΈ Π·Π° счСт эффСкта Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Ρ… ΠΎΠΊΠΎΠ½.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΉ Π½Π° качСство ΠΊΠΎΠ΄Π° – ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Из-Π·Π° этого Π² ΠΊΠΎΠ΄Π΅ часто ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…Π°ΠΊΠΈ ΠΈ Π½Π΅Π»Π΅ΠΏΡ‹Π΅ workaround-Ρ‹. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ эти Ρ…Π°ΠΊΠΈ ΠΈ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄. Π”Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚, люди ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Π°ΠΊΠΈ. ΠšΡΡ‚Π°Ρ‚ΠΈ эти Ρ…Π°ΠΊΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΡƒΠΌΡ‹, Π±Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ pastebin ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ качСство ΠΊΠΎΠ΄Π° Π½Π΅ влияСт Π½Π° качСство прилоТСния. Π£Π²Ρ‹, Π΅Ρ‰Π΅ ΠΊΠ°ΠΊ влияСт. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки. Π§Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ΄, Ρ‚Π΅ΠΌ слоТнСС эти ошибки Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ…. ΠŸΡ€Π΅ΡΡΠΈΠ½Π³ сроков ΠΈ слоТности, скорСС всСго, Π½Π΅ даст Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ ΠΈ появится Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ…Π°ΠΊ.

Π’ open source ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ встрСчаСтся Ρ€Π΅ΠΆΠ΅. Π’Π°ΠΌ большС слСдят Π·Π° качСством ΠΈ мСньшС прСссинг сроков.

Код ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ для людСй

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

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‡Π΅Π½ΡŒ ясно Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ намСрСния. К соТалСнию β€œΠ±Ρ‹ΡΡ‚Ρ€Ρ‹Π΅ ΠΈ грязныС” способы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΡŒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎ понимаСмости ΠΊΠΎΠ΄Π°. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° осознанно откладываСтся Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ°ΡƒΠ·Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ провСсти Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. Π’Π΅ самыС Π»ΡƒΡ‡ΡˆΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚, Π° ΠΊΠΎΠ΄ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сразу ΠΆΠ΅ послС попадания Π² source control.

Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ свои ΠΊΠΎΠ΄ΠΎΠΌ (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв программисты свои ΠΊΠΎΠ΄ΠΎΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹), Ρ‚ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ваш ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв программисты Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ Ρ‡ΡƒΠΆΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ).

ΠŸΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ качСству

ЕдинствСнный способ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ высокой продуктивности ΠΈ эффСктивности – ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ сразу. ЕдинствСнный инструмСнт ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства ΠΊΠΎΠ΄Π° – Π²Ρ‹ сами. Если Π²Ρ‹ Π½Π΅ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ всСгда Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½ΠΈ тСсты, Π½ΠΈ инструмСнты статичСского Π°Π½Π°Π»ΠΈΠ·Π°. Π”Π°ΠΆΠ΅ Ρ€Π΅Π²ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… программистов Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚. Код всСгда ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ, ΠΏΡ€ΠΈ этом ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ΅Π½ ΠΈ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ΡΡ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ структурС ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ. Код с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ малопонятным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ исполнСния скорСС всСго Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ошибки. НС допускайтС Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, это Π³ΠΎΡ€Π°Π·Π΄ΠΎ дСшСвлС, Ρ‡Π΅ΠΌ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки.

Ясно Π²Ρ‹Ρ€Π°ΠΆΠ°ΠΉΡ‚Π΅ намСрСния Π² своСм ΠΊΠΎΠ΄Π΅, сводитС ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ нСявныС аспСкты. НС Π½Π°Π΄ΠΎ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ максимально Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ, ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ максимально понятным.

Если Π²Π°ΠΌ приходится ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π½Π΅ создавайтС Ρ…Π°ΠΊΠΎΠ². ΠŸΠΎΡ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. БэкономитС Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅. Если ΠΆΠ΅ ΠΊΠΎΠ΄ совсСм ΠΏΠ»ΠΎΡ…ΠΎΠΉ, Π±Ρ‹Π» сдСлан β€œΠ±Ρ‹ΡΡ‚Ρ€ΠΎ ΠΈ грязно” ΠΈ оброс Ρ…Π°ΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎ просто Π²Ρ‹ΠΊΠΈΠ½ΡŒΡ‚Π΅ Π΅Π³ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅. Волько Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ всС. Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: программист ΠΏΠΈΡˆΠ΅Ρ‚ 40-60 ΠΎΡ‚Π»Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… строк ΠΊΠΎΠ΄Π° Π² дСнь Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ‚Π΅ΠΌΠΏΠ΅ ΠΈ 120-200 Π² ускорСнном (высокая концСнтрация, чСткая Ρ†Π΅Π»ΡŒ, понятно Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ).

Если Π²Ρ‹ сами ΠΏΠΈΡˆΠ΅Ρ‚Π΅ β€œΠ±Ρ‹ΡΡ‚Ρ€ΠΎ ΠΈ грязно”, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ для уточнСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Π²Ρ‹ΠΊΠΈΠ½ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ваш ΠΊΠΎΠ΄ сдСлаСт своС Π΄Π΅Π»ΠΎ.

Если Π²Ρ‹ скопировали Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мСста ΠΈΠ»ΠΈ, Π½Π΅ Π΄Π°ΠΉ Π±ΠΎΠ³, ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, Ρ‚ΠΎ Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² source control. Π’ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ нСпонятныС для вас Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°.

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

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ свой ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ постоянно Π² процСссС написания. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ β€œΠΏΠΎΡ‚ΠΎΠΌβ€ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ наступаСт.

Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π‘Π°ΠΌΠΎ написаниС ΠΊΠΎΠ΄Π° – Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ³Π»ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ процСсс, Ρ‡Ρ‚ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ качСствС Π½Π΅ΠΊΠΎΠ³Π΄Π°. БостояниС ΠΏΠΎΡ‚ΠΎΠΊΠ° – это состояниС свободы самовыраТСния. НСобходимо Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ самовыраТСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ получился Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ.

Π­ΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ° качСства ΠΊΠΎΠ΄Π°

ВсС Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΊΡ€ΠΈΠ²ΠΎΠΉ стоимости ошибки:
Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π€ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан

Ошибка найдСнная ΠΈ устранСнная Π½Π° этапС кодирования Π² 10 Ρ€Π°Π· дСшСвлС, Ρ‡Π΅ΠΌ ошибка найдСнная ΠΏΡ€ΠΈ тСстировании ΠΈ Π² 100 Ρ€Π°Π· дСшСвлС ошибки, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π² production. Π’ истории Π΅ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ошибок, исправлСниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… обошлось Π² дСсятки тысяч Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ².

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ошибки Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ усилиями самих Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄? Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π·Π²Ρ‘Π·Π΄Ρ‹

Никогда Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΈ Π²ΠΎΡ‚ ΠΎΠΏΡΡ‚ΡŒ! ΠžΠΏΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅ Π½Π° Π₯Π°Π±Ρ€Π΅ появился (ΠΈ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½) пост, Π½Ρ‹Π½Π΅ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ, ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ ΠΈ Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ. ЯндСкс подсказываСт, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ (Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΌ, идСальном, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ, чистом, грязном, ΠΏΠ»ΠΎΡ…ΠΎΠΌ ΠΈ Ρ‚.Π΄.) ΠΊΠΎΠ΄Π΅ здСсь ΡƒΠΆΠ΅ дСсятки ΠΈ сотни, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π½Π° протяТСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚, всСгда Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ, Π½ΠΎ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ мнСнию Π½Π° этот счёт Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ.

Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π€ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написанЭтот ΠΊΠΎΠ΄ тянСт ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π° ΠΎΠ΄Π½Ρƒ Π·Π²Π΅Π·Π΄Ρƒ πŸ™‚

Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π² настоящСС врСмя распространён повсСмСстно. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ этому нСсколько, Π²ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅:

Массовая цифровизация, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ тСхзадания программистам ставят люди, Π΄Π°Π»Ρ‘ΠΊΠΈΠ΅ ΠΎΡ‚ IT (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π·Π°Π²ΠΎΠ΄ΠΎΠ²) ΠΈ ΠΎΠ½ΠΈ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ качСство ΠΊΠΎΠ΄Π°.

ВысокиС Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ Π² IT Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°ΡŽΡ‚ всСх-всСх-всСх, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ, пройдя курсы «Π²Π°ΠΉΡ‚ΠΈ-Π²Π°ΠΉΡ‚ΠΈ Π·Π° мСсяц» ΠΈ имСя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ.

БправСдливости Ρ€Π°Π΄ΠΈ: Π½Π΅ всСгда это ΠΏΠ»ΠΎΡ…ΠΎ. Если Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ°Π»ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Π°Ρ, Ρ‚ΠΎ Π΅Ρ‘ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ особо Π½Π΅Π·Π°Ρ‡Π΅ΠΌ (ΠΈ Ρ‚Π°ΠΊ Π»Π΅Ρ‚Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚, Π½Ρƒ вСдь ΠΏΡ€Π°Π²Π΄Π° ΠΆΠ΅!). Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΈΡˆΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ обрСтСния ΠΎΠΏΡ‹Ρ‚Π° пСрСходят Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅.

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ Π΅Ρ‰Ρ‘ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ достаточно быстро. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎ процСссорной Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ мощности. Одно ΠΈΠ· Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считаСтся эффСктивной ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ссли врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ количСству элСмСнтов ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… N, Ρ‚.Π΅. ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ N Π² k Ρ€Π°Π· врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² k Ρ€Π°Π·.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° опрСдСляСтся Π½Π΅ ΠΏΠΎ этому ΡƒΡ‡Π΅Π±Π½ΠΎ-Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ, Π° ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ цСлям ΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π° ΠΊΠ°ΠΊ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ («Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ N Π½Π΅ большС k»), Ρ‚Π°ΠΊ ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ («ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π½Π΅ дольшС 0,5 сСкунды») ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ («Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 80% ΠΎΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… согласились, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° открываСтся ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ»).

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ задСйствуСт условно нСбольшоС количСство памяти ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ процСссорной мощности, Π½ΠΎ ΠΈ ΠΏΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΏΠΎ процСссору, ΠΈ ΠΏΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²ΠΊΠ΅, ΠΈ ΠΏΠΎ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŽ.

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ слСгка ΡƒΡΠ΅Ρ‡ΡŒ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΊΠΎΠ΄Π°: Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ куски Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½ΠΎΠ±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· #define Π·Π°Π±Π»Π°Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ языка Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅, Ссли это оказываСтся Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ. Однако всё это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, баловство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ приносит ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ скорСС Π²Ρ€Π΅Π΄ΠΈΡ‚. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡƒΡ‚Ρ‘ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, трСбуСтся ΠΎΡ‡Π΅Π½ΡŒ высокая квалификация.

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Π½ΠΎ ΠΈ прСкрасСн: Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ, красиво ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½, Π² Π½ΡƒΠΆΠ½Ρ‹Ρ… мСстах ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½, понятСн Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ поколСниям программистов. Π’Ρ‹ΡΡˆΠΈΠΉ ΠΏΠΈΠ»ΠΎΡ‚Π°ΠΆ ΠΎΡ‚ ΠΌΠΈΡ€Π° IT. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠ°ΠΊ говорится, излишни.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ моя классификация Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ‚ ΠΈΠ΄Π΅Π°Π»Π°. НапримСр, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ красиво ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ссли оптимизация Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π°? ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΡŽ Π½Π° Π²Ρ‹ΡΡˆΡƒΡŽ истину Π² этом вопросС, Π½ΠΎ надСюсь, Ρ‡Ρ‚ΠΎ эта Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ, Π΄Π°Π² ΠΏΠΈΡ‰Ρƒ для Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ВСроятно, Ρ…Π²Π°Ρ‚ΠΈΡ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ «Чистый ΠΊΠΎΠ΄Β»

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ смоТСм ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ эмпиричСскому ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Β«Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°Β» ΠΈΠ»ΠΈ «чистого ΠΊΠΎΠ΄Π°Β». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΎ ΠΌΠ½Π΅Π½ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΎ «чистом ΠΊΠΎΠ΄Π΅Β» ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ. Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° «Чистый ΠΊΠΎΠ΄Β» 2008 Π³ΠΎΠ΄Π° с Ρ‡ΡƒΠΆΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своСй.

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

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π³Π»Π°Π²Π΅ Β«Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ» ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π΄Π°Ρ‘Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ совСты для написания Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ВСроятно, самый ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ совСт Π² этой Π³Π»Π°Π²Π΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ абстракции; ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°ΠΊ высокого, Ρ‚Π°ΠΊ ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ ΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ этой Π³Π»Π°Π²Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ: ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π³Π»Π°Π³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„Ρ€Π°Π·Π°ΠΌΠΈ, ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ, ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов (ΠΈ ΠΎΠ½ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€), ΠΈ Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚, Π»ΠΈΠ±ΠΎ запросами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚, Π½ΠΎ Π½Π΅ ΠΎΠ±ΠΎΠΈΠΌΠΈ сразу. Он ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ DRY. Π­Ρ‚ΠΎ всё Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ совСты, хотя Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ повСрхностныС ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня.

Но Π² этой Π³Π»Π°Π²Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ утвСрТдСния. ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ логичСского Ρ„Π»Π°Π³Π° β€” плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, с Ρ‡Π΅ΠΌ я согласСн, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹Π΅ true ΠΈΠ»ΠΈ false Π² исходном ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ ΠΈ нСясны ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с явными IS_SUITE ΠΈΠ»ΠΈ IS_NOT_SUITE … Π½ΠΎ рассуТдСния ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° скорСС сводятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ логичСский Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Π΄Π΅Π»Π°Π΅Ρ‚ большС, Ρ‡Π΅ΠΌ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‰ΡŒ, Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ.

ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ исходный Ρ„Π°ΠΉΠ» свСрху Π²Π½ΠΈΠ· ΠΊΠ°ΠΊ повСствованиС, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сниТаСтся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ чтСния, Π° каТдая функция обращаСтся ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ дальшС Π²Π½ΠΈΠ·. Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎ. МногиС исходныС Ρ„Π°ΠΉΠ»Ρ‹, я Π±Ρ‹ Π΄Π°ΠΆΠ΅ сказал, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ исходных Ρ„Π°ΠΉΠ»ΠΎΠ², нСльзя Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. И Π΄Π°ΠΆΠ΅ для Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ, IDE позволяСт Π½Π°ΠΌ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Ρ‹Π³Π°Ρ‚ΡŒ ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ просматриваСм Π²Π΅Π±-сайты. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·Π²Π΅ ΠΌΡ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΊΠΎΠ΄ свСрху Π²Π½ΠΈΠ·? Ну, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· нас Ρ‚Π°ΠΊ ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚.

А ΠΏΠΎΡ‚ΠΎΠΌ это становится странным. ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ достаточно большими, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры (условныС обозначСния ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹); ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ отступов Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° Π΄Π²Π° уровня. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄Π»ΠΈΠ½ΠΎΠΉ Π² ΠΎΠ΄Π½Ρƒ строку, состоящиС, вСроятно, ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ идСальная функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π½ΠΎ всё Ρ€Π°Π²Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов??), ΠΈ Ρ‡Ρ‚ΠΎ функция с трСмя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Π° ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½Π° для тСстирования. Π‘Π°ΠΌΠΎΠ΅ странноС, Ρ‡Ρ‚ΠΎ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ идСальная функция β€” это Π΄Π²Π΅-Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ совСт фактичСски ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² Π½Π°Ρ‡Π°Π»Π΅ Π³Π»Π°Π²Ρ‹. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ самоС Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅. Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΡƒΡ‡Π½ΠΎ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Ρ‚ΡŒ своё ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅. НС ΠΆΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚ мСня ссылок Π½Π° исслСдования, Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ малСнькиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ…. Π― ΠΌΠΎΠ³Ρƒ всСго лишь ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ я ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ дСсятилСтия писал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСвозмоТных Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². МнС доводилось ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΡˆΠΌΠ°Ρ€Π½Ρ‹Ρ… монстров Π² 3000 строк. Π― написал бСсчислСнноС мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΎΡ‚ 100 Π΄ΠΎ 300 строк. И я писал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ 20 Π΄ΠΎ 30 строк. Мой практичСский ΠΎΠΏΡ‹Ρ‚ Π½Π°ΡƒΡ‡ΠΈΠ» мСня (Ρ†Π΅Π½ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ± ΠΈ ошибок), Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ малСнькими.

Когда ΠšΠ΅Π½Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΌΠ½Π΅ ΠΊΠΎΠ΄, мСня ΠΏΠΎΡ€Π°Π·ΠΈΠ»ΠΎ, насколько ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ Π±Ρ‹Π»ΠΈ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. МногиС ΠΈΠ· ΠΌΠΎΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Swing Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Π»ΠΈΡΡŒ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Ρ‡ΡƒΡ‚ΡŒ Π»ΠΈ Π½Π΅ Π½Π° ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Ρ‹. Однако каТдая функция Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠšΠ΅Π½Ρ‚Π° Π·Π°Π½ΠΈΠΌΠ°Π»Π° всСго Π΄Π²Π΅, Ρ‚Ρ€ΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки. ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ. КаТдая функция ΠΈΠ·Π»Π°Π³Π°Π»Π° свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΈ каТдая история СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΠ»Π° вас ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ истории. Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ!

Π’Π΅ΡΡŒ этот совСт Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ листингом исходного ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Π³Π»Π°Π²Ρ‹ 3. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° класса Java, происходящСго ΠΈΠ· опСнсорсного инструмСнта тСстирования FitNesse.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡŽ Π΅Ρ‰Ρ‘ Ρ€Π°Π·: это собствСнный ΠΊΠΎΠ΄ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°, написанный ΠΏΠΎ Π΅Π³ΠΎ Π»ΠΈΡ‡Π½Ρ‹ΠΌ стандартам. Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π», прСдставлСнный Π½Π°ΠΌ Π² качСствС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

На этом этапС я ΠΏΡ€ΠΈΠ·Π½Π°ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΈ Π½Π°Π²Ρ‹ΠΊΠΈ Java устарСли ΠΈ Π·Π°Ρ€ΠΆΠ°Π²Π΅Π»ΠΈ, ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ устарСли ΠΈ Π·Π°Ρ€ΠΆΠ°Π²Π΅Π»ΠΈ, ΠΊΠ°ΠΊ эта ΠΊΠ½ΠΈΠ³Π°, которая Π²Ρ‹ΡˆΠ»Π° Π² 2008 Π³ΠΎΠ΄Ρƒ. Но вСдь Π΄Π°ΠΆΠ΅ Π² 2008 Π³ΠΎΠ΄Ρƒ этот ΠΊΠΎΠ΄ Π±Ρ‹Π» Π½Π΅Ρ€Π°Π·Π±ΠΎΡ€Ρ‡ΠΈΠ²Ρ‹ΠΌ мусором?

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ import с подстановочными Π·Π½Π°ΠΊΠ°ΠΌΠΈ.

Но это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅! Π’ΠΎΡ‚ собствСнноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΉ части этой Π³Π»Π°Π²Ρ‹:

ΠŸΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты ΡΡƒΡ‚ΡŒ лоТь. Π’Π°ΡˆΠ° функция ΠΎΠ±Π΅Ρ‰Π°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, скрытоС ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Иногда ΠΎΠ½Π° вносит Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ измСнСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ своСго класса β€” скаТСм, присваиваСт ΠΈΠΌ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… систСмы. Π’ любом случаС такая функция являСтся ΠΊΠΎΠ²Π°Ρ€Π½ΠΎΠΉ ΠΈ врСдоносной лоТью, которая часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию противоСстСствСнных Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… привязок ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… зависимостСй.

МнС нравится это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅! Π― согласСн с этим ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ! Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅! Π― согласСн, Ρ‡Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ измСнСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ своСго собствСнного класса.

Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ собствСнный ΠΊΠΎΠ΄ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°, «чистый» ΠΊΠΎΠ΄, Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ этого? НСвСроятно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ любой ΠΈΠ· этих ΠΊΠΎΠ΄ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС эти нСвСроятно ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты. Π”Π°Π²Π°ΠΉΡ‚Π΅ просто рассмотрим ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠœΠ°Ρ€Ρ‚ΠΈΠ½ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π² этой самой Π³Π»Π°Π²Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, «Ссли Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π½Π΅Ρ‘ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ являСтся просто ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ΠΌ Π΅Ρ‘ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΒ». Но ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ½ Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ аспСкты этого ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ½ΠΎΠΉ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°. Π­Ρ‚ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Π±Ρ‹Π» написан ΠΈΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π» ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ API ΠΈ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΎΠ±Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, имя класса SetupTeardownIncluder уТасно. Π­Ρ‚ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, имСнная Ρ„Ρ€Π°Π·Π°, ΠΊΠ°ΠΊ ΠΈ всС ΠΈΠΌΠ΅Π½Π° классов, Π½ΠΎ это классичСская Ρ„Ρ€Π°Π·Π° с ΠΏΡ€ΠΈΠ΄ΡƒΡˆΠ΅Π½Π½Ρ‹ΠΌ Π³Π»Π°Π³ΠΎΠ»ΠΎΠΌ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ имя класса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² строго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ всё Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ классом, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Π° всСго лишь ΠΎΠ΄Π½Π° простая функция.

*
НСуТСли вся ΠΊΠ½ΠΈΠ³Π° такая?

Π’ основном, Π΄Π°. «Чистый ΠΊΠΎΠ΄Β» ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π΅Π·ΠΎΡ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ…, Π²Π΅Ρ‡Π½Ρ‹Ρ… совСтов ΠΈ совСтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈΠ»ΠΈ устарСли. Книга фокусируСтся ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π΅Ρ‚ ΠΊ достоинствам SOLID, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования. Он фокусируСтся Π½Π° ΠΊΠΎΠ΄Π΅ Java, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования, Π΄Π°ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки. Π•ΡΡ‚ΡŒ Π³Π»Π°Π²Π° Β«Π—Π°ΠΏΠ°Ρ…ΠΈ ΠΈ эвристичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°Β», которая прСдставляСт собой Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ список довольно Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅. Но Π΅ΡΡ‚ΡŒ нСсколько Π² основном пустословных Π³Π»Π°Π², Π³Π΄Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сосрСдоточСно Π½Π° Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΈΡ… ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Java-ΠΊΠΎΠ΄Π°. Π•ΡΡ‚ΡŒ цСлая Π³Π»Π°Π²Π°, ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‰Π°Ρ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ JUnit (ΠΊΠ½ΠΈΠ³Π° написана Π² 2008 Π³ΠΎΠ΄Ρƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, насколько это Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ сСйчас). ΠžΠ±Ρ‰Π΅Π΅ использованиС Java Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΎΡ‡Π΅Π½ΡŒ устарСло. Π’Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π²Π΅Ρ‰ΠΈ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹ β€” ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ быстро ΡƒΡΡ‚Π°Ρ€Π΅Π²Π°ΡŽΡ‚ β€” Π½ΠΎ Π΄Π°ΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ прСдоставлСнный ΠΊΠΎΠ΄ ΠΏΠ»ΠΎΡ….

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

ΠΈ Π³ΠΎΡ€Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ:

Π­Ρ‚ΠΎ дСлаСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΡƒΡ€ΠΎΠΊΠ° ΠΎ цСнности изобрСтСния Π½ΠΎΠ²ΠΎΠ³ΠΎ языка тСстирования для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ области для Π²Π°ΡˆΠΈΡ… тСстов. Π― Π±Ρ‹Π» Ρ‚Π°ΠΊ сбит с Ρ‚ΠΎΠ»ΠΊΡƒ этим ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ. Π― Π±Ρ‹ использовал Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ совСт! НС Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого!

*
Автор прСдставляСт Ρ‚Ρ€ΠΈ Π·Π°ΠΊΠΎΠ½Π° TDD:

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°ΠΊΠΎΠ½. НС ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Π½ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΊΠΎΠ½. НС ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст Π² ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ большСм, Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΎΡ‚ΠΊΠ°Π·Π°. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ компиляции являСтся ΠΎΡ‚ΠΊΠ°Π·ΠΎΠΌ.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π·Π°ΠΊΠΎΠ½. НС ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π² ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ большСм, Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для прохоТдСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π½ΠΎΠ³ΠΎ тСста.

Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Π·Π°ΠΊΠΎΠ½Π° ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°ΠΌΠΊΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ составляСт, вСроятно, ΠΎΠΊΠΎΠ»ΠΎ 30 сСкунд. ВСсты ΠΈ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΏΠΈΡˆΡƒΡ‚ΡΡ вмСстС, Π° тСсты Π½Π° нСсколько сСкунд ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

… Π½ΠΎ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ внимания Π½Π° Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ программирования Π½Π° ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹Π΅ тридцатисСкундныС кусочки Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π±Π΅Π·ΡƒΠΌΠ½ΠΎ Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎ, часто ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ бСсполСзно, Π° Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

*
Π•ΡΡ‚ΡŒ Π³Π»Π°Π²Π° Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β», Π³Π΄Π΅ Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ структуры Π΄Π°Π½Π½Ρ‹Ρ…:

ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π½Ρƒ, интСрфСйс для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°):

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

Π”Π°, Π²Ρ‹ всё ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ поняли. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° «структуры Π΄Π°Π½Π½Ρ‹Ρ…Β» расходится с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅! Π’ ΠΊΠ½ΠΈΠ³Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ говорится ΠΎ чистом ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ с использованиСм Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· нас считаСт структурами Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° Π³Π»Π°Π²Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, ΠΈ содСрТит ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

*
Π― Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ. Π£ мСня ΠΈΡ… слишком ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π² этой ΠΊΠ½ΠΈΠ³Π΅, заняло Π±Ρ‹ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π― ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Π½Π° Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΌ Π²ΠΎΠΏΠΈΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ простых чисСл ΠΈΠ· Π³Π»Π°Π²Ρ‹ 8:

Если Ρ‚Π°ΠΊΠΎΠ²ΠΎ качСство ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаёт этот программист β€” Π½Π° досугС, Π² ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях, Π±Π΅Π· давлСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ производствСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния β€” Ρ‚ΠΎΠ³Π΄Π° Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ½ΠΈΠ³ΠΈ? Или Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠ½ΠΈΠ³ΠΈ?

*
Π― написал это эссС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ постоянно Π²ΠΈΠΆΡƒ, ΠΊΠ°ΠΊ люди Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ «Чистый ΠΊΠΎΠ΄Β». Π― почувствовал Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π°Π½Ρ‚ΠΈΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я Ρ‡ΠΈΡ‚Π°Π» «Чистый ΠΊΠΎΠ΄Β» Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅. ΠœΡ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ ΠΏΠΎ Π³Π»Π°Π²Π΅ Π² нСдСлю Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ½Π°Π΄Ρ†Π°Ρ‚ΠΈ нСдСль.

Π’Π°ΠΊ Π²ΠΎΡ‚, Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСанса Π²Ρ‹Ρ€Π°ΠΆΠ°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΎΠ΄ΡƒΡˆΠ½ΠΎΠ΅ согласиС. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ½ΠΈΠ³Π° Π²Ρ‹Π·Π²Π°Π»Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Ρƒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. И я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ стСпСни это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈΠ±ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, с Ρ‡Π΅ΠΌ Π²Ρ‹ Π½Π΅ согласны, Π»ΠΈΠ±ΠΎ Π½Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π΅ΠΌΡƒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ Π²Ρ‹ считаСтС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этого, «Чистый ΠΊΠΎΠ΄Β» оказался Π³ΠΎΠ΄Π½Ρ‹ΠΌ. Π£ нас ΡΠΎΡΡ‚ΠΎΡΠ»ΠΈΡΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ дискуссии. ΠœΡ‹ смогли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Π»Π°Π²Ρ‹ Π² качСствС ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ для Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обсуТдСния Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… соврСмСнных ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ. ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ описано Π² ΠΊΠ½ΠΈΠ³Π΅. ΠœΡ‹ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π²ΠΎ мнСниях.

ΠŸΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π±Ρ‹ я Π²Π°ΠΌ эту ΠΊΠ½ΠΈΠ³Ρƒ? НСт. Π”Π°ΠΆΠ΅ Π² качСствС тСкста для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π΄Π°ΠΆΠ΅ со всСми ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ Π²Ρ‹ΡˆΠ΅? НСт. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π² 2008 Π³ΠΎΠ΄Ρƒ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π±Ρ‹ Π²Π°ΠΌ эту ΠΊΠ½ΠΈΠ³Ρƒ? ΠœΠΎΠ³Ρƒ Π»ΠΈ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сСйчас ΠΊΠ°ΠΊ историчСский Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ снимок Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ выглядСли Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ программирования Π² Π΄Π°Π»Ρ‘ΠΊΠΎΠΌ 2008 Π³ΠΎΠ΄Ρƒ? НСт, я Π±Ρ‹ Π½Π΅ стал.

*
Π˜Ρ‚Π°ΠΊ, Π³Π»Π°Π²Π½Ρ‹ΠΉ вопрос Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ(ΠΈ) я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» вмСсто этого? Π― Π½Π΅ знаю. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΠΉΡ‚Π΅ Π² коммСнтариях, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я ΠΈΡ… Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Do good code: 8 ΠΏΡ€Π°Π²ΠΈΠ» Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всСм, ΠΊΡ‚ΠΎ обучался ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, извСстна ΠΊΠ½ΠΈΠ³Π° Π‘Ρ‚ΠΈΠ²Π° МакконнСлла Β«Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄Β». Она всСгда ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½ΠΎΠΉ (ΠΎΠΊΠΎΠ»ΠΎ 900 страниц). К соТалСнию, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° впСчатлСния этим ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ. А зря. Π’ дальнСйшСй ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ программисты ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ практичСски со всСми ситуациями, описанными Π² ΠΊΠ½ΠΈΠ³Π΅, ΠΈ приходят ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΊ Ρ‚Π΅ΠΌ ΠΆΠ΅ самым Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ тСсноС знакомство ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя ΠΈ силы. ΠœΡ‹ Π² GeekBrains придСрТиваСмся комплСксного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ, поэтому ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ для ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ создания Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π€ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° всё ΠΈ Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

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

БущСствуСт мноТСство извСстных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ критСриям качСства ΠΊΠΎΠ΄Π°, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΡƒΠ·Π½Π°Ρ‘Ρ‚ практичСски любой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. НапримСр, Π΅ΡΡ‚ΡŒ программисты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° проСктирования KISS (Keep It Simple, Stupid! β€” Π”Π΅Π»Π°ΠΉ это ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚ΡƒΠΏΠΈΡ†Π°!). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΏΠΎΠ»Π½Π΅ справСдлив ΠΈ заслуТиваСт уваТСния, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° β€” простоту ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒ. Однако простота Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ β€” порядок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ упрощСния. ΠšΡ€ΠΎΠΌΠ΅ простоты, сущСствуСт Π΅Ρ‰Ρ‘ нСсколько нСслоТных ΠΏΡ€Π°Π²ΠΈΠ». И ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ряд Π·Π°Π΄Π°Ρ‡.

8 ΠΏΡ€Π°Π²ΠΈΠ» Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎ вСрсии GeekBrains

Π‘ΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Code style. Если программист ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ, особСнно ΠΊΡ€ΡƒΠΏΠ½ΡƒΡŽ, Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ всСго Π΅Π³ΠΎ знакомят с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ оформлСния ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ (соглашСниС ΠΏΠΎ code style). Π­Ρ‚ΠΎ Π½Π΅ случайный ΠΊΠ°ΠΏΡ€ΠΈΠ· работодатСля, Π° ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

Π’ΠΎΡ‚ нСсколько ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ», с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ:

ΡΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ пСрСносы Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок ΠΈ отступы β€” это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ восприятиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°
ΡΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ β€” части ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса ΠΈΠ»ΠΈ условия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ отступС

ΡΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ разрядку β€” ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°; особСнно это Π²Π°ΠΆΠ½ΠΎ Π² составных условиях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, условиях Ρ†ΠΈΠΊΠ»Π°.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° форматирования ΠΊΠΎΠ΄Π°, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ² настройки ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ (доступно Π² Visual Studio). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ всСх программистов ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° автоматичСски получаСтся ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ восприятиС. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ достаточно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ послС Π΄ΠΎΠ»Π³ΠΈΡ… Π»Π΅Ρ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Ρ‚ΡŒ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. Однако Π² любой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ code style β€” это Π·Π°ΠΊΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΡƒΠΊΠΎΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ «магичСскиС числа». ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ числа Π½Π΅ случайно относят ΠΊ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ программирования, ΠΏΡ€ΠΎΡ‰Π΅ говоря, ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π§Π°Ρ‰Π΅ всСго магичСскоС число ΠΊΠ°ΠΊ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ прСдставляСт собой ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π² ΠΊΠΎΠ΄Π΅ константу, смысл ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСясСн Π±Π΅Π· коммСнтария. Π’Π°ΠΊΠΈΠ΅ числа Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΡƒΡ…ΡƒΠ΄ΡˆΠ°ΡŽΡ‚ Π΅Π³ΠΎ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΈ приносят ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎ врСмя Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

НапримСр, Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ строка:

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ½Π° Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ошибок Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ Π΅Ρ‘ смысл Π½Π΅ всСм понятСн. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΏΠΎΠ»Π΅Π½ΠΈΡ‚ΡŒΡΡ ΠΈ сразу Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Иногда магичСскиС числа Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ использовании общСпринятых констант, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ записи числа Ο€. Допустим, Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π»ΠΎ внСсСно:

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ? А ΠΏΠ»ΠΎΡ…ΠΎΠ΅ Π΅ΡΡ‚ΡŒ. НапримСр, Ссли Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ понадобится ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ расчёт с высокой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, придётся ΠΈΡΠΊΠ°Ρ‚ΡŒ всС вхоТдСния константы Π² ΠΊΠΎΠ΄Π΅, Π° это Ρ‚Ρ€Π°Ρ‚Π° Ρ‚Ρ€ΡƒΠ΄ΠΎΠ²ΠΎΠ³ΠΎ рСсурса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠΎΠ»Π»Π΅Π³ΠΈ-программисты ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ использованной Π²Π°ΠΌΠΈ константы β€” Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ просто Π½Π΅ ΡƒΠ·Π½Π°ΡŽΡ‚ Π΅Ρ‘ Π² ΠΊΠΎΠ΄Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ написания чисСл Π±Π΅Π· объявлСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΄Π°ΠΆΠ΅ постоянныС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ. ΠšΡΡ‚Π°Ρ‚ΠΈ, эти константы практичСски всСгда Π΅ΡΡ‚ΡŒ Π²ΠΎ встроСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, поэтому ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ сама собой.

Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π€ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осмыслСнныС ΠΈΠΌΠ΅Π½Π° для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, классов. ВсСм программистам извСстСн Ρ‚Π΅Ρ€ΠΌΠΈΠ½ β€œΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ кода” β€” ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прилоТСния-обфускатора. Она дСлаСтся с Ρ†Π΅Π»ΡŒΡŽ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π² нСвнятный Π½Π°Π±ΠΎΡ€ символов, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, мСняСт ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ проч… К соТалСнию, случаСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΈ Π±Π΅Π· обфускации выглядит Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ β€” ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° счёт бСссмыслСнных ΠΈΠΌΡ‘Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: var_3698, myBestClass, NewMethodFinal ΠΈ Ρ‚.д… Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ бСсконСчному количСству ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² β€” Π΅Ρ‘ имя Π±ΡƒΠ΄Π΅Ρ‚ само Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚.

Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π€ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ самодокумСнтируСмый ΠΊΠΎΠ΄ β€” ситуация, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ взглядС Π½Π° ΠΊΠΎΠ΄ понятно, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π£ ΠΈΠ΄Π΅ΠΈ самодокумСнтируСмого ΠΊΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сторонников ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΎΠ², ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоит ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒΡΡ. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π² Ρ†Π΅Π»ΠΎΠΌ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ баланс ΠΈ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΈ «говорящиС» ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈ возмоТности самодокумСнтируСмого ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΌ, Π³Π΄Π΅ это ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ.

НапримСр, Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:

Из коммСнтария Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ понятно, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄. Но ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСясно, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ x.a ΠΈ x.n. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ внСсти измСнСния Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

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

Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан. Π€ΠΎΡ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄ это ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ написан

ОбъСдиним Π² ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ Π΅Ρ‰Ρ‘ Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»Π°. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции с осмыслСнными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ. Π’ΠΎΠΎΠ±Ρ‰Π΅, сСгодня ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° доступна ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ программисту, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ абстракции Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Абстракция β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов сокрытия Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Боздавая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ нСбольшиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, программист ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π½Π° Π±Π»ΠΎΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТится рСализация ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ увСличиваСтся количСство строк ΠΊΠΎΠ΄Π°. Π•ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 строк. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° остаётся Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π½Π° усмотрСнии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ зависит ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². Наш совСт: всё просто, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполнял ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ вынСсСнныС сущности ΠΏΡ€ΠΎΡ‰Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… прямо Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ этих ΠΏΡ€Π°Π²ΠΈΠ» Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΈ создадим ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²:

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, скроСм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² провСряйтС Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. На ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ всСх ΠΈΠ»ΠΈ практичСски Π²ΠΎ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ связано с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ: Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сбои Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ любом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π΄Π°ΠΆΠ΅ Π² Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался всСго ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок. Π­Ρ‚ΠΎ стоит ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ выступаСт ΠΊΠ°ΠΊ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции, Π½ΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π° Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΠΈ Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Ρ‘ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ для ΠΏΠΎΠ»Π½ΠΎΠΉ увСрСнности ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Β«Ρ…ΠΈΡ‚Ρ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ» Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ всС Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ вставляСм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ null.

Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ наслСдования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «являСтся». Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях – композиция. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ восприятия ΠΊΠΎΠ΄Π° ΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ наслСдования, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ инкапсуляции. Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ класс Π ΡƒΠ»ΡŒ ΠΈ класс КолСсо. Класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ наслСдник класса-ΠΏΡ€Π΅Π΄ΠΊΠ° Π ΡƒΠ»ΡŒ, Π½ΠΎ вСдь ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŽ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ свойства класса КолСсо.

БоотвСтствСнно, программист Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ наслСдованиС. А вСдь Π΄Π°ΠΆΠ΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠ±Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ β€” это композиция элСмСнтов. Допустим, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²Ρ‹ΠΉ класс создаётся с использованиСм наслСдования (класс ScreenElement наслСдуСт поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Coordinate ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ этот класс):

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ β€” нСплохая Π·Π°ΠΌΠ΅Π½Π° наслСдованию, этот ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π±ΠΎΠ»Π΅Π΅ простой для дальнСйшСго понимания написанного ΠΊΠΎΠ΄Π°. МоТно ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°: Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ наслСдованиС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½ΡƒΠΆΠ½Ρ‹ΠΉ класс схоТ с классом-ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, композиция избавляСт программиста Π΅Ρ‰Ρ‘ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΡ‘Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ случаСтся ΠΏΡ€ΠΈ наслСдовании. Π•ΡΡ‚ΡŒ Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ нСдостаток: Ρ€Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ количСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Но ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, это зависит ΠΎΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

ΠžΡ‚Π΄Π΅Π»ΡΠΉΡ‚Π΅ интСрфСйс ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π›ΡŽΠ±ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ класс состоит ΠΈΠ· интСрфСйса (Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ доступно ΠΏΡ€ΠΈ использовании класса ΠΈΠ·Π²Π½Π΅) ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹). Π’ ΠΊΠΎΠ΄Π΅ интСрфСйс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»Ρ‘Π½ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ для соблюдСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП, инкапсуляции, Ρ‚Π°ΠΊ ΠΈ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π°.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ случай ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ скрываСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа private. ΠšΡ€ΠΎΠΌΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйса ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² сочСтании с соблюдСниСм ΠΏΡ€Π°Π²ΠΈΠ»Π° создания нСбольшого интСрфСйса Π΄Π°Ρ‘Ρ‚ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ прСимущСство: Π² случаС Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для поиска ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ сбоя потрСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ лишь нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π§Π΅ΠΌ большС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… β€” Ρ‚Π΅ΠΌ слоТнСС ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ источник ошибки. Однако интСрфСйс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ бСсполСзСн.

Π’ Ρ…ΠΎΠ΄Π΅ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° Π±Ρ‹Π» Π·Π°Π΄Π°Π½ вопрос: «А ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ сразу Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ Π½Π΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ?Β» ВСроятно, Ρ‡Π΅Ρ€Π΅Π· нСсколько Π»Π΅Ρ‚ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ дСсятков Π»Π΅Ρ‚ программирования это Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, особСнно Ссли Π΅ΡΡ‚ΡŒ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Но Π½ΠΈΠΊΠΎΠ³Π΄Π° нСльзя ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· нСсколько Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ИмСнно поэтому Π²Π°ΠΆΠ½ΠΎ всСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ пСрСчислСнных ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ воспринимаСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° β€” видСовСрсия:

Π”Ρ€ΡƒΠ³ΠΈΠ΅ наши Π²Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *