Anmerkungen zum Buch "Philosophie der Softwareentwicklung"



Vielleicht verstehen Sie, wie man guten Code schreibt, wie man sich an gutes Design hält. Dieses Wissen kann jedoch nicht strukturiert werden. John Ousterhouts Buch "Eine Philosophie des Software-Designs" kann helfen, dieses Problem zu beheben.



Dadurch konnte ich das Wissen, das ich in 3 Jahren Arbeit als Entwickler gesammelt habe, strukturieren und viele Fehler beim Verständnis eines guten Code-Designs beheben. Sie half, sich klarer zu machen, was es ist.



, , .





, . , . , .



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