ΠŸΡ€ΠΈΠ²Π΅Ρ‚ Π”ΠΆΠ°Π²Π°Ρ€Π°ΡˆΠ΅Π²Ρ†Ρ‹! Данная ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна ΠΎΠ±Π·ΠΎΡ€Ρƒ ΠΊΠ½ΠΈΠ³Π΅ «Чистый ΠΊΠΎΠ΄Β» Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°. ΠœΡ‹ вмСстС рассмотрим способы ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ вашСго ΠΊΠΎΠ΄Π° , Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ вас ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ нСбольшая, Π½ΠΎ интСрСсная Π·Π°Π΄Π°Ρ‡ΠΊΠ°.
«Чистый Код», Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠœΠ°Ρ€Ρ‚ΠΈΠ½. ΠžΠ±Π·ΠΎΡ€ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Β«ΠΊΡƒΠ½Π³-Ρ„Ρƒ ΠΊΠΎΠ΄ΡƒΒ» для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° - 1
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь открывая Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ вашСго ΠΊΠΎΠ΄Π° ΠΌΡ‹ сталкиваСмся с мноТСством классов, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π‘Π°ΠΌΡ‹ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ссли это ваш ΠΊΠΎΠ΄ написанный с нуля, написан ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π² Π½Π΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ строк, Π²Ρ‹ Π½Π°Π΄ Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΈ, Π½Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎΠΊ ΠΈ дальнСйшСго сопровоТдСния со стороны Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°. НО! Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π΄Π° я Π΄ΡƒΠΌΠ°ΡŽ Π²Ρ‹ ΠΈ сами ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚. Π’ основном Π½Π°ΠΌ придСтся ΠΊΠ°ΠΊ Ρ‚ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‡Π»Π΅Π½Π°ΠΌΠΈ своСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ «индусский» ΠΊΠΎΠ΄, ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ строк. Π― часто ΡΠ»Ρ‹ΡˆΠ°Π» ΠΎΡ‚ ΠΊΠΎΠ»Π»Π΅Π³ ΠΏΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Β«Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ написан ΠΌΠ½ΠΎΠΉ, ΠΈ я Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π½ΠΈΠΊΠΎΠΌΡƒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΒ», Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я Π²ΠΈΠΆΡƒ ΠΏΡ€ΠΎΡΡŒΠ±Ρ‹ Π½Π° Π₯Π΅Π»ΠΏΠ΅ ΠΎ ΠŸΠΎΠΌΠΎΡ‰ΠΈ с Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‚ΠΎ приходится ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ(ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠΎΠΎΠΎΠ»Π³ΠΎ) Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Π΅Π³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Ρ…ΠΎΡ‚Π΅Π» ΠΌΠ½Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ хочСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ «сотри ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈ Π·Π°Π½ΠΎΠ²ΠΎΒ»! Π¦Π΅Π½ΠΈΡ‚Π΅ врСмя, ΠΈ силы людСй ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π° Ссли Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚Π΅, Ρ‚ΠΎ научится Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ·Π΄Π½ΠΎ. Книга Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° срСди ΠΊΠ½ΠΈΠ³ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ отличаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π½Π° Java. ΠœΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°Π½Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ высказываСниС с ΠΌΠΎΠ΅ΠΉ стоороны, Π½ΠΎ ΠΎΠ½Π° написана Π² ООП стилС, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π² написании частСй ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚Π°Ρ для понимания ΠΈ чтСния ΠΊΠ½ΠΈΠ³Π° Π»Π΅Π³ΠΊΠΎ читаСтся Π² Π΄ΠΎΡ€ΠΎΠ³Π΅ ΠΈΠ»ΠΈ Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄ сном. «Чистый ΠΊΠΎΠ΄Β» Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° 3 части. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Π½Π°ΠΌ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊΠ½ΠΈΠ³ΠΈ, ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Ρ‚ΠΎΠ½Π°. Вторая Ρ‡Π°ΡΡ‚ΡŒ Π½Π°ΠΌ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ ΠΈ написании, Π½Ρƒ Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ являСтся Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π²Ρ‹ΠΆΠΈΠΌΠΊΠΎΠΉ Β«Π·Π°ΠΏΠ°Ρ…ΠΎΠ²Β» ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π§Ρ‚ΠΎ ΠΆ Π°Π²Ρ‚ΠΎΡ€ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ» мноТСство Ρ‚Π΅ΠΌ для знания ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°ΠΌ Π² основном ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ знания Java Core, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ посвящСнныС ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ тСстам JUnit, Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ log4j, Π·Π½Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ(Π½ΠΎ ΠΊΠ°ΠΊ я сказал Π²Ρ‹ΡˆΠ΅ ΠΈΡ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ всС нСпонятноС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ гуглится, Π΄Π° ΠΈ разбираСтя Π½Π° курсС JavaRush). ВсС Π³Π»Π°Π²Ρ‹ ΠΊΠ½ΠΈΠ³ΠΈ Π½Π΅ связаны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π²Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ с Ρ‚ΠΎΠΉ Π³Π»Π°Π²Ρ‹ которая Π²Π°ΠΌ ΠΏΠΎ Π΄ΡƒΡˆΠ΅. ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ Π²Ρ‹ΠΆΠΈΠΌΠΊΠ° основных ΠΈΠ΄Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΏΠ½ΡƒΠ» ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ. Π‘ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½ Π·Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½ΠΈΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ смоТСтС ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ собствСнным видСньСм Π΄Π°Π½Π½Ρ‹Ρ… высказываний.

1. ΠšΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ == Π·Π»ΠΎ.

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

2. Π—Π°ΠΊΠΊΠΎΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠžΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ куски ΠΊΠΎΠ΄Π° Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ β€” Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½ΠΎ мусору. ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ накапливаСтся ΠΈ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ чистотС вашСго прилоТСния, врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ провСряйтС ΠΊΠΎΠ΄ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

3. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², классов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… статСй для рассмотрСния Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹. НС ΠΏΠΎΠ»Π΅Π½ΠΈΡ‚Π΅ΡΡŒ ΠΈ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Π΅Π΄Π°Ρ‚ΡŒ ΠΎ своСм Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стандарты Π² написании Π½Π°Π·Π²Π°Π½ΠΈΠΉ. Данная Ρ‚Π΅ΠΌΠ° Β«ΠœΠ°ΡΡ‚Ρ…ΡΠ²Β» для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния.

4. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ своС мСсто Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ класса.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² классС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (статичныС ΠΈ Π½Π΅ статичныС), конструтор, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы, энумы. Одним словом ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ своё мСсто Π² классС. Если Π²Ρ‹ заглянитС Π² java core классы, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ структура Ρ‡Π΅Ρ‚ΠΊΠΎ структурирована, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π½Π° своСм мСстС, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ классС. Для сСбя я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ структуру построСния: Π’ Π½Π°Ρ‡Π°Π»Π΅ класса Ρƒ мСня статик ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° + Π­Π½ΡƒΠΌΡ‹ Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ. ПослС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽ констукторы класса. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΈΡˆΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с классом. ПослС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² я ΠΏΠΈΡˆΡƒ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры. И Π² самом ΠΊΠΎΠ½Ρ†Π΅ Ρƒ мСня ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΎΠ΅ΠΉ структурой ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² коммСнтариях свою.

5. Π£Ρ€ΠΎΠ²Π½ΠΈ абстракции ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Для мСня это Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ β„–1. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня абстракции. НС стоит ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π² ΠΊΡƒΡ‡Π΅ Ρ€Π°Π·Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

6. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок.

Checked ΠΈΠ»ΠΈ Uncheked Exceptions, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅(Π° Π²Ρ‹ ΠΊΠ°ΠΊ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅?, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ)? Π― сторонник checked, Π½ΠΎ ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ со стороны ΠΈ Π½Π° НСпровСряСмыС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ unchecked Exception Π½Π΅ ΡƒΡ€ΠΎΠ΄ΡƒΠ΅Ρ‚ сигнатуру ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, особСнно Ссли ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Β«ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°ΡŽΡ‚Β» сразу нСсколько слоСв. НСудобство Π² ΠΌΠ΅Π»ΡŒΡ‡Π°ΠΉΡˆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π½ΠΈΡŽ всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄ΠΎ Π΅Ρ‘ ΠΎΡ‚Π»ΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях.

7. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ являСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€Π°ΠΈΠ²Ρ‹ΠΌ, Π½ΠΎ Π΅Ρ‰Ρ‘ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. Π‘Ρ€Π°Π·Ρƒ складываСтся прСдставлСниС ΠΎ скобочках ΠΈ дСйствиях Π²Π½ΡƒΡ‚Ρ€ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ условий Π² конструкциях if, else - Π½Π΅ стоит ΠΏΠΈΡΠ°Ρ‚ΡŒ всС Π² ΠΎΠ΄Π½Ρƒ строчку, Π»ΡƒΡ‡ΡˆΠ΅ пСрСнСситС Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.

8. ΠžΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΡ Π² условии.

Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ отрицания Π² условиях, это большС психологичСский Ρ„Π°ΠΊΡ‚ΠΎΡ€, наш ΠΌΠΎΠ·Π³ ΠΏΠ»ΠΎΡ…ΠΎ воспринимаСт отрицания, Π΄Π° ΠΈ ! ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ. НапримСр ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ if (!condition.isTrue) Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, это сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ(condition.isFalse)

9. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

Если Ρƒ вас ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСт мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚ΠΎ Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΈΡ… Π½Π° ΠΎΠ΄Π½ΠΎΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹, ΠΈΡ… Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΏΡ€ΠΈ случаС Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ.

10. НС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ΡΡŒ.

НС повторяйтС ΠΊΠΎΠ΄ DRY (Don`t repeat yourself ). Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сократит Π² Ρ€Π°Π·Ρ‹ ваш ΠΊΠΎΠ΄, постоянно Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Π΅. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ всС ваши ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ куски ΠΊΠΎΠ΄Π° вынСсти Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ DRY, KISS(Keep it simple Stupid), SOLID, YAGNI. Π”Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для понимания ΠΈ проСктирования. Они стоят ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ я Π΅Ρ‰Π΅ Π½Π°ΠΏΠΈΡˆΡƒ ΠΎ Π½ΠΈΡ…, Ρ‚. ΠΊ. данная ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна ΠΎΠ±Π·ΠΎΡ€Ρƒ ΠΊΠ½ΠΈΠ³Π΅ «Чистый ΠΊΠΎΠ΄Β».
«Чистый Код», Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠœΠ°Ρ€Ρ‚ΠΈΠ½. ΠžΠ±Π·ΠΎΡ€ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Β«ΠΊΡƒΠ½Π³-Ρ„Ρƒ ΠΊΠΎΠ΄ΡƒΒ» для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° - 2
Как ΠΈ ΠΎΠ±Π΅Ρ‰Π°Π», нСбольшая ΠΈ лСгкая Π·Π°Π΄Π°Ρ‡ΠΊΠ° для вас. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ИндСкс ΠžΠΆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях количСство ошибок ΠΈ исправлСний Π² ΠΊΠΎΠ΄Π΅. П.с. ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΈ выполняСт свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ссли Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
//Weight in kg.
//Height in metres.
public class sample {
    public static void main (String[] args) {
        humanIMB humanIMB = new humanIMB(80,1.52);
        System.out.println(humanIMB.Result());
    }
}
class humanIMB {
    public double W; //Weight Human
    public double H; // Height Human
    private static double imb;
    public humanIMB(double w, double h) {
        W = w;
        H = h;
        imb = W / (H * H);
    }
    public double takeW() {
        return W;
    }
    public void putW(double w) {
        W = w;
        imb = W / (H * H);
    }
    public double takeH() {
        return H;
    }
    public void putH(double h) {
        H = h;
        imb = W / (H * H);
    }
    public static double takeImt() {
        return imb;
    }
    public static String Result() {
        String  string = null;
        if (imb >=18.5 & imb <25) {
            string ="Норма, Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅!";
        }
        if (imb >=25 & imb <30) {
            string ="ΠŸΡ€Π΅Π΄ΠΎΠΆΠΈΡ€Π΅Π½ΠΈΠ΅. Π­ΠΉ, поостороТнСС с ΠΏΠΈΡ€ΠΎΠΆΠ½Ρ‹ΠΌΠΈ ";
        }
        if (imb >=30) {
            string ="ΠžΠΆΠΈΡ€Π΅Π½ΠΈΠ΅. SCHWEINE! Π₯Π²Π°Ρ‚ΠΈΡ‚ ΠΆΡ€Π°Ρ‚ΡŒ, ΠΈΠ΄ΠΈ Π½Π° Ρ‚Ρ€Π΅Π½ΡŽ!";
        }
        if (imb <18.5) {
            string ="Π”Π΅Ρ„ΠΈΡ†ΠΈΡ‚ массы Ρ‚Π΅Π»Π°. Π’ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ€Π΅ΡˆΠΈΠ» ΠΏΠ΅Ρ€Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ?";
        }
        return string;
    }
}