|
Posted by Tim Streater on 12/15/06 17:40
In article <NtqdneCPLbONNB_YnZ2dnUVZ_smonZ2d@comcast.com>,
Jerry Stuckle <jstucklex@attglobal.net> wrote:
> Tim Streater wrote:
[...]
> > It's just the vogue at the moment. Those of us who have developed a
> > coding style over 40 years to assist maintainers who might be following,
> > think different. Cool is not important - maintainability is (and
> > donkeymentation, of course).
> >
>
> In your opinion, at least. Many others, including us who have been
> programming 39 years (started with Fortran II on an IBM 1401) think
> differently.
>
> Some old-time programmers get so ingrained in one method it's hard for
> them to see a different way of doing things might be better. Others
> find new ways to be much better - including easier to maintain.
I think it's just a vogue. Like when Pascal was the vogue and it was
considered "good" to have only one exit from a procedure. As
excruciating contortions were needed in real-world code to achieve this,
I carried right on using the return statement and ignored the vogue.
> > Personally I dislike something like:
> >
> > if (send_packet(params)) {
> > do something
> > }
> >
> > not just because of the braces but also because an "if" is supposed to
> > perform a test - not have as a side effect as it might be sending a
> > packet over the wire.
>
> I love it, and use it all the time. First started doing in in C over 20
> years ago. It's one of the great features of languages like C, C++,
> Java and PHP, and allows for a lot of flexibility.
>
> In your case the if statement is doing a test - but it's just a test to
> see if an action (a dynamic event) completed successfully, instead of
> the static value of a variable.
>
> Let's take it one step further:
>
> result = send_packet(params);
> while (result) {
> do something
> result = send_packet(params);
> }
>
> Or, just
>
> while (send_packet(params)) {
> do something
> }
>
> After all, all a while loop is is a test which is executed repeatedly
> until the condition fails.
If you're doing a test, do a test. If you're sending a packet, send a
packet. These are distinct actions that should be separated.
That's my style, at any rate.
-- tim
Navigation:
[Reply to this message]
|