re beginner

John Machin sjmachin at lexicon.net
Mon Jun 5 08:51:45 EDT 2006


On 5/06/2006 10:30 PM, Bruno Desthuilliers wrote:
> John Machin a écrit :
>> On 5/06/2006 10:38 AM, Bruno Desthuilliers wrote:
>>
>>> SuperHik a écrit :
>>>
>>>> hi all,
>>>>
> (snip)
> 
>>>> I have an old(er) script with the following task - takes a string I 
>>>> copy-pasted and wich always has the same format:
>>>>
> (snip)
>  >>>
>>> def to_dict(items):
>>>     items = items.replace('\t', '\n').split('\n')
>>
>>
>> In case there are leading/trailing spaces on the keys:
> 
> There aren't. Test passes.
> 
> (snip)
> 
>> Fantastic -- at least for the OP's carefully copied-and-pasted input.
> 
> That was the spec, and my code passes the test.
> 
>> Meanwhile back in the real world,
> 
> The "real world" is mostly defined by customer's test set (is that the 
> correct translation for "jeu d'essai" ?). Code passes the test. period.

"Jeu d'essai" could be construed as "toss a coin" -- yup, that fits some 
user test sets I've seen.

In the real world, you are lucky to get a test set that covers all the 
user-expected "good" cases. They have to be driven with whips to think 
about the "bad" cases. Never come across a problem caused by "FOO " != 
"FOO"? You *have* lead a charmed life, so far.

> 
>> there might be problems with multiple tabs used for 'prettiness' 
>> instead of 1 tab, non-integer values, etc etc.
> 
> Which means that the spec and the customer's test set is wrong. Not my 
> responsability.

That's what you think. The users, the pointy-haired boss, and the evil 
HR director may have other ideas :-)

> Any way, I refuse to change anything in the parsing 
> algorithm before having another test set.
> 
>> In that case a loop approach that validated as it went and was able to 
>> report the position and contents of any invalid input might be better.
> 
> One doesn't know what *will* be better without actual facts. You can be 
> right (and, from my experience, you probably are !-), *but* you can be 
> wrong as well. Until you have a correct spec and test data set on which 
> the code fails, writing any other code is a waste of time. Better to 
> work on other parts of the system, and come back on this if and when the 
> need arise.

Unfortunately one is likely to be told in a Sunday 03:00 phone call that 
the "test data set on which the code fails" is somewhere in the 
production database :-(

Cheers,
John



More information about the Python-list mailing list