aka DBC

ThePragmaticProgrammer에 등장하는 ComputerProgramming에 관한 교훈중 하나.

계약한 것만 만든다. 즉, 요구사항을 명확히 하고, 그 요구사항만 만들어야 한다. 그렇지 않으면, 너무나도 광범위한 스케일에 당신이 짜야할 코드는 끝없이 늘어만 갈것이다.

보통, 다음의 세가지로 특정기능에 대한 요구사항을 명시한다.

  • Preconditions
  • Postcondotions
  • Class invariants

AssertiveProgramming역시 DBC 개념을 따른다.

코드상에 이 개념을 포함시킬 수 있는데, built-in으로 지원하는 ProgrammingLanguageEiffel이다. Cee에선 Nana, Java에선 iContract가 이 개념을 지원하며, 굳이 지원이 안될경우, comments로도 충분한 효과를 낼 수 있다.

Python에서는 super class의 method에 raise NotImplementedError 를 적음으로써 비슷한 효과를 낸다. 이 경우, 이 class를 상속받는 class는 반드시 그 method가 있어야만 한다. 예제 FactoryMethodMaze.py의 Maze class.


CategoryManual

DesignByContract (last edited 2012-04-26 22:35:11 by 221)

web biohackers.net