Notes on the book "Philosophy of Software Development"



Perhaps you understand how to write good code, how to adhere to good design. But this knowledge cannot be structured. John Ousterhout's book, A philosophy of software design, can help fix this.



It allowed me to structure the knowledge I have accumulated over 3 years of work as a developer and to fix many mistakes in understanding good code design. She helped to clarify for herself more clearly what it is.



, , .





, . , . , .



2 :



  1. . , , .
  2. . — .


“”. , , API .. .





, , .

:



  1. .
  2. . , , .
  3. , , .


:



  1. :

    • ( )


, . , . , , .



2 , :





, . , , , .



, — , , . , .



— , . :



  1. — .
  2. — , .


, . . , .

. , . , , .



, .





20% , , .





, .

, , — .

, , . .



, , . , , .



:



  1. — , , ..
  2. — , .


— , . 2 :



  1. — , .


, , .



, , , . , , , .





.

, , . :



  • back-door. , , , . .

    , “ , 1 ?”. .


́



, . , , 3 : , . , , .

, . . , .





, - .



, .



, , .



, :



  1. ?
  2. ? , .
  3. ?


,



, .



:



  • — , . :


public function foo() {
  return this->bar();
}


, , . , .

— , .

, . .



  • — . :


public function foo(SomeClass variable) {
  $this->bar(variable);
}


, . , , , , .

— DI . , , . , (immutable).





. . ( — , , ).

, . , , . , .

. , .





, , , . , , :



  1. .
  2. . .
  3. .
  4. .
  5. .


. , , . , , — .



— , .



, , , — , . , .



, , , .





exception . , . - , .



:



  • ,


— . , .



, .



:



  1. . .
  2. , .
  3. , .
  4. , .


. .





. . .



. , . , . , .



:





, , .



, 1-2 . , .





, :



  1. — . , :

    • , , .
    • , , .
    • , , , - .
    • .
  2. . , - .
  3. . . .


— , . , . . .





. , .



.



— .



, , .



, . .



— , ( ). . . , , .

, , http . , .



, . — . , .





:



  1. .
  2. . , , - .
  3. .




— .

:





:



  • , count. , , - . . .
  • , .. , .




— , , — . :



  • ( MVC )


:



  • , .
  • . , , , .


, . :



  • , , .
  • , .


, , , . 2 :



  1. ?
  2. , ?


“”, .







, . . , .



Agile



, Agile. . .

, agile , , .



Unit



, unit . QA .

Unit , , .



TDD



TDD , , .

. , , , .





, , .

, .





, , , . .





, . .

, . , , . .



, , , . - , .




All Articles