Ways to show your co-programmers that some methods are not yet implemented in a class when programming in C++

后端 未结 7 1589
生来不讨喜
生来不讨喜 2021-02-15 04:02

What approaches can you use when:

  • you work with several (e.g. 1-3) other programmers over a small C++ project, you use a single repository
  • you create a class,
7条回答
  •  终归单人心
    2021-02-15 04:24

    Assert is the best way. Assert that doesn't terminate the program is even better, so that a coworker can continue to test his code without being blocked by your function stubs, and he stays perfectly informed about what's not implemented yet.

    In case that your IDE doesn't support smart asserts or persistent breakpoints here is simple implementation (c++):

    #ifdef _DEBUG
        // 0xCC - int 3 - breakpoint
        // 0x90 - nop? 
        #define DebugInt3 __emit__(0x90CC)
        #define DEBUG_ASSERT(expr) ((expr)? ((void)0): (DebugInt3) )
    #else
        #define DebugInt3
        #define DEBUG_ASSERT(expr) assert(expr)
    #endif
    
        //usage
        void doStuff()
        {
            //here the debugger will stop if the function is called 
            //and your coworker will read your message
            DEBUG_ASSERT(0); //TODO: will be implemented on the next week; 
                             //postcondition number 2 of the doStuff is not satisfied;
                             //proceed with care /Johny J.
        }
    

    Advantages:

    1. code compiles and runs
    2. a developer get a message about what's not implemented if and only if he runs into your code during his testing, so he'll not get overwhelmed with unnecessary information
    3. the message points to the related code (not to exception catch block or whatever). Call stack is available, so one can trace down the place where he invokes unfinished piece of code.
    4. a developer after receiving the message can continue his test run without restarting the program

    Disadvantages:

    1. To disable a message one have to comment out a line of code. Such change can possibly sneak in the commit.

    P.S. Credits for initial DEBUG_ASSERT implementation go to my co-worker E. G.

提交回复
热议问题