Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This milestone is to design header files or code interfaces that capture your designed artifacts into what will ultimately end up shaping your code. The interfaces design the data input, output and functionality of your code, but should be agnostic to the implementation. This step should only be concerned with the outwards facing interface to other modules. There are many important concepts to bear in mind. One very important one is to not invent APIs that might be "nice to have", as this might violate the YAGNI principle discussed here. The core idea is to not try to define and implement APIs that may seem useful but no-one would ever actually need right now. Not doing this saves time in the design, testing and implementation phase. You would be shocked how much time you save by not over-defining interfaces.

...

3. Write the tests (TDD style)

Our Unit-Test article cover the benefits, and the Test-Driven-Development (TDD), so we will not repeat the content here, but in this step, we focus on writing tests that purely designed based on the header files. Your implementation of the code can be purely stubs that do not do anything meaningful at this state. That being said however, it is not always possible to completely ignore implementation at this state. An example of this would be that you do not know all aspects of the module that you need to test until implementing some aspects of it. Due to this, it is okay and often necessary to do write your unit tests and implementation in parallel.

...