Re: Using debug print routine inside assert
From: Edvard Majakari (edvard+news_at_majakari.net)
Date: 11/04/03
- Next message: Pierre Quentel: "Re: Two naive Tkinter questions"
- Previous message: Christos : "Re: Please explain the meaning of 'stealing' a ref"
- Maybe in reply to: Edvard Majakari: "Using debug print routine inside assert"
- Next in thread: Richard Brodie: "Re: Using debug print routine inside assert"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 04 Nov 2003 15:59:20 +0200
Ben Finney <bignose-hates-spam@and-benfinney-does-too.id.au> writes:
> The debug routine looks elegant and useful; thanks.
You're welcome :)
> The instance of its use is the problem.
>
> You're performing two discrete operations: get the result of the
> subfrobnicate() call, and then emit a debug message. The problem isn't
> with the debug message -- it's with the subfrobnicate() call. Or more
> precisely, the fact that you only seem to be using it for the debug()
> call.
>
> If the code only ever uses subfrobnicate() when you emit the debug
> message -- which isn't going to occur in the released program -- you
> don't really need to see it.
I think I got your point. In general you are right, but consider the
situation: you have a complex data structure (graph linked to
some complex, associated data) and you use it in your program. Suppose
subfrobnicate() doesn't return any values usable by program, but instead
it traverses the data structure and converts the representation from
(eg) numerical to more human readable form. Then the only use for
subfrobnicate() would be inside a debug-like print statement, and my
original question is valid.
Then again, if somebody suggests that proper architectural design of the
software helps to avoid that kind of problems, I'd say he's right but I'd
also welcome him to real life, where debugging is always part of the
software process.
> If the result of subfrobnicate() is important enough that you want to
> track it with a debug() call, it's probably because you're using the
> same result elsewhere. So why are you calling it each time it's needed?
> Calculate it, emit the message, then use it some more.
> Either the subfrobnicate() call is a waste of cycles -- remove it. Or,
> it's a necessary part of the program -- keep its result for use in the
> debug message *and* the main program.
See above. Would this be a place for PEP ?-)
-- # Edvard Majakari Software Engineer # PGP PUBLIC KEY available Soli Deo Gloria! One day, when he was naughty, Mr Bunnsy looked over the hedge into Farmer Fred's field and it was full of fresh green lettuces. Mr Bunnsy, however, was not full of lettuces. This did not seem fair. --Mr Bunnsy has an adventure
- Next message: Pierre Quentel: "Re: Two naive Tkinter questions"
- Previous message: Christos : "Re: Please explain the meaning of 'stealing' a ref"
- Maybe in reply to: Edvard Majakari: "Using debug print routine inside assert"
- Next in thread: Richard Brodie: "Re: Using debug print routine inside assert"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]