[erlang-questions] Trouble with Erlang's lenient comparisons

Richard O'Keefe ok@REDACTED
Thu Apr 14 02:10:24 CEST 2011


On 13/04/2011, at 9:08 PM, JohnyTex wrote:
> I've inherited someone else's code base; sometimes I forget that a
> function returns a tuple and I up comparing it with an integer or
> similar, and get weird behaviour and hard-to-find bugs as a result.
> 
> What's the best way to prevent this?

There are two somewhat different questions lurking here.

- what's the best way to ensure that such mistakes are caught?

  You've mentioned EUnit and Dialyzer, and they are excellent
  for this.

- what's the best way to avoid making such mistakes in the first place?

  Clear, consistent, informative naming conventions.
  Consistent "algebraic" interface design.
  Well thought out policy on when to return "oops" as a result
  and when to raise an exception -- this is still contentious,
  the point here is that you want to *know* the choice a
  function made without having to think too much about it.

Perhaps you could provide an example of a function that returns a
tuple that you want to compare with an integer.





More information about the erlang-questions mailing list