poll for properties

John C johnch_atms at hotmail.com
Wed Jul 29 01:41:01 PDT 2009


Steven Schveighoffer wrote:
> Please respond to this poll before reading other responses.
> 
> Read the following function:
> 
> void foo(Box b)
> {
>   if(b.xxx)
>     b.fill(5);
>   else
>     b.yyy;
> }
> 
> Assuming you have no idea what type Box is, what of the following 
> options looks most natural for xxx in order to test to see if b has an 
> element in it?
> 
> a) if(b.empty)
> b) if(b.empty())
> c) if(b.clear)
> d) if(b.clear())
> 
> Answer:
> =============

a).

But b.isEmpty would be a better design (yes, ranges, that's you).

> =============
> 
> What would you guess looks most natural for yyy in order to remove all 
> elements from b?
> 
> a) b.empty;
> b) b.empty();
> c) b.clear;
> d) b.clear();
> 
> Answer:
> =============

d).

> =============
> 
> Which of the following functions looks incorrect?
> 
> void a(Box box)
> {
>    if(box.empty())
>      box.fill(5);
>    else
>      box.clear();
> }
> 
> void b(Box box)
> {
>    if(box.empty)
>      box.fill(5);
>    else
>      box.clear;
> }
> 
> void c(Box box)
> {
>     if(box.clear)
>        box.fill(5);
>     else
>        box.empty;
> }
> 
> void d(Box box)
> {
>     if(box.clear())
>        box.fill(5);
>     else
>        box.empty();
> }
> 
> 
> Answer:
> ==============

All look wrong.

> ==============
> 
> You read the documentation for Box, and it looks like this:
> 
> /**
>  * check to see if a box is clear
>  */
>  bool clear();
> 
> /**
>  * empty a box, returning true if the box had contents before emptying
>  */
>  bool empty();
> 
> Now knowing what the actual meaning of clear and empty are, indicate 
> which version(s) of the function in the previous question would surprise 
> you if it compiled.
> 
> Here are the functions again for reference:
> 
> void a(Box box)
> {
>    if(box.empty())
>      box.fill(5);
>    else
>      box.clear();
> }
> 
> void b(Box box)
> {
>    if(box.empty)
>      box.fill(5);
>    else
>      box.clear;
> }
> 
> void c(Box box)
> {
>     if(box.clear)
>        box.fill(5);
>     else
>        box.empty;
> }
> 
> void d(Box box)
> {
>     if(box.clear())
>        box.fill(5);
>     else
>        box.empty();
> }
> 
> Answer:
> ==============

If we're assuming parameterless functions are not allowed, all of them.

> ==============
> 
> Do you think the meaning of a symbol with parentheses suggests something 
> different than that same symbol without parentheses for the following 
> symbols:
> 
> a) select
> b) rock
> c) keyboard
> d) elevate
> 
> Answer:
> ==============

Yes.

> ==============
> 
> Thank you for taking the poll.  I tried to be as objective as possible, 
> if you don't think I was, please indicate why:



More information about the Digitalmars-d mailing list