Notas sobre el libro "Filosofía del desarrollo de software"



Quizás entienda cómo escribir un buen código, cómo adherirse a un buen diseño. Pero este conocimiento no se puede estructurar. El libro de John Ousterhout Una filosofía de diseño de software puede ayudar a solucionar este problema.



Me permitió estructurar el conocimiento que he acumulado durante 3 años de trabajo como desarrollador y corregir muchos errores en la comprensión del buen diseño de código. Ella ayudó a aclararse más claramente de qué se trataba.



, , .





, . , . , .



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