A Philosophy of Software Design

·

Книга посвящСна созданию Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π’ основС Π»Π΅ΠΆΠΈΡ‚ Π΄Π²Π° списка ΠΏΡ€Π°Π²ΠΈΠ»:

  1. ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ
  2. ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сдСлано ΠΏΠ»ΠΎΡ…ΠΎ

ΠŸΡ€ΠΎΡ‰Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с описания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ считаСтся ΠΏΠ»ΠΎΡ…ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ: это связанная паста ΠΈΠ· ΠΊΠΎΠ΄Π°, которая Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Ρ‘Ρ‚ΠΊΠΎΠΉ Π·ΠΎΠ½Ρ‹ отвСтствСнности ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’ связи с Ρ‡Π΅ΠΌ использованиС ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ трудностям ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со списком красных Ρ„Π»Π°Π³ΠΎΠ². И Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ Π²ΠΈΠ΄Π° β€œClean Code”, β€œRefactoring” ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²Π½ΠΎΡΠΈΡ‚ΡŒΡΡ.

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ - здСсь ΡƒΠΆΠ΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ мысли. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π³Π»ΡΠ½ΡƒΡ‚ΡŒ здСсь, Π½ΠΎ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» остановится Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ: Shallow vs Deep modules. Под shallow ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, интСрфСйс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡˆΠΈΡ€ΠΎΠΊ, Π° Π²ΠΎΡ‚ рСализация прямолинСйна ΠΈ проста. Π’ Ρ‚Π°ΠΊΠΈΡ… модулях происходит Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²: это ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ [[Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ отвСствСнности]], ΠΈ высокая [[ΡΠΏΠ»ΠΎΡ‡Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ]], Π° Ρ‚Π°ΠΊ ΠΆΠ΅ отсутствиС [[скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ]]. И дальшС ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ стандартного ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎ β€œΠ½Π΅ большС N строчСк Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽβ€. Π’Π΅Π΄ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° простыС прямолинСйныС куски ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ появлСнию Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’ ΠΊΠ½ΠΈΠ³Π΅ ΠΆΠ΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ подразумСваСтся, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ простой интСрфСйс ΠΈ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. ИмСнно Π·Π° счёт этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТный ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΊΡƒΠ±ΠΈΠΊΠΈ ΠΊ этим абстракциям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π·Π° собой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ хочСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π³Π»Π°Π²Ρ‹ ΠΏΡ€ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΊΠΎΠ΄Ρƒ. Π’ Π½ΠΈΡ… раскрываСтся Ρ‚Π΅ΠΌΠ°, Ρ‡Ρ‚ΠΎ докумСнтация Π΄ΠΎΠ»ΠΆΠ½Π° находится ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π΅Ρ‘ синхронно. А Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΊΠΎΠ΄Ρƒ, такая ΠΆΠ΅ абстракция ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π½Π°Π΄ процСссами. Π­Ρ‚ΠΎ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ нас Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ [[Readme Driven Development]], Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ добавлСнию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Π½ΡƒΠΆΠ½Π° Π»ΠΈ ΠΎΠ½Π° Π½Π°ΠΌ. Бколько Π»ΠΈΡˆΠ½ΠΈΡ… возмоТностСй ΠΎΠ½Π° Π²Π²Π΅Π΄Ρ‘Ρ‚ ΠΈΠ»ΠΈ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΈ сдСлана Π² СдинствСнном Ρ€ΠΎΠ΄Π΅. Π­Ρ‚ΠΎ всё Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° стадии Π΄ΠΎ написания ΠΊΠΎΠ΄Π°, ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ сбор всСх Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

Π’Π°ΠΊ ΠΆΠ΅ Π²ΠΈΠ΄Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСсСчСния Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. И это Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ идСю фитнСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Building Evolutionary Architectures.

НавСрноС, Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎ software engineering Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π¦ΠΈΡ‚Π°Ρ‚Ρ‹

Π—Π°Π΄Π°Ρ‡ΠΈ

  • #task ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Zettels ⏳ 2023-08-09 βœ… 2023-08-11
  • #task ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ ⏳ 2023-09-10 βœ… 2023-09-11
  • #task Π”ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ свои Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π° основС ΠΈΠ΄Π΅ΠΉ ΠΈΠ· ΠΊΠ½ΠΈΠ³

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ссылки