[erlang-questions] Newbie question about Erlang style

Gleber gleber.p@REDACTED
Wed Feb 27 23:31:03 CET 2008


On Wed, Feb 27, 2008 at 10:40 PM, Håkan Stenholm
<hokan.stenholm@REDACTED> wrote:
> Convey Christian J NPRI wrote:
>
> > Is there any non-aesthetic reason prefer one of the following approaches over the other?
>  >
>  >
>  > if Foo  -> X = 1;
>  >    true -> X = 2
>  > end
>  >
>  > vs.
>  >
>  > X = if
>  >    Foo  -> 1;
>  >    true -> 2
>  >    end
>  >
>  >
>
>  * "X = if .... end" is generally less cluttered as the variable name
>  isn't repeated several times, which can be tedious if the variable name
>  is long.
>
>  * This also avoids issues with forgetting to declare the variable in
>  certain case/if branches.
>
>  * It makes it simpler to see where new variables are introduced, as they
>  will always appear at the beginning of lines.
>
>  * The "Variable/Pattern = expression" style makes the code more
>  consistent with for example the look of function calls. If/when you need
>  to refactor your expression part into a separate function, there will
>  then be no need to move variables around:
>
>  foo(V) ->   %% ugly style
>     case V of
>        foo -> X = 1;
>        bar -> X = 2
>     end,
>     ... X ...
>
>  vs
>
>  foo(V) -> %% clean style, moving code to foo2/1 is trivial
>     X = case V of
>        foo -> 1;
>        bar -> 2
>     end,
>     ... X ...
>
>
>  =>   %% refactored version, compare amount of code that needs to be
>  moved around
>
>  foo(V) ->
>     X = foo2(V),
>     ... X ...
>
>  foo2(V)
>     case V of
>        foo -> 1;
>        bar -> 2
>     end.
>
>
>
>  * It's the way erlang code is usually written.
>
>
>
>
>
>
>
>
>  > Thanks,
>  > Christian
>  >
>  > Christian Convey
>  > Scientist, Naval Undersea Warfare Centers
>  > Newport, RI
>  >
>  > _______________________________________________
>  > erlang-questions mailing list
>  > erlang-questions@REDACTED
>  > http://www.erlang.org/mailman/listinfo/erlang-questions
>  >
>  >
>  _______________________________________________
>  erlang-questions mailing list
>  erlang-questions@REDACTED
>  http://www.erlang.org/mailman/listinfo/erlang-questions
>

Please note that:

>  foo2(V)
>     case V of
>        foo -> 1;
>        bar -> 2
>     end.

could be written as

foo2(foo) -> 1;
foo2(bar) -> 2.

IMHO it is more readable.

-- 
Gleb Peregud
http://gleber.pl/

"Only two things are infinite, the universe and human stupidity, and
I'm not sure about the former."
--  Albert Einstein


More information about the erlang-questions mailing list