From: Andy Parkins <andyparkins@gmail.com>
To: git@vger.kernel.org
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Junio C Hamano <junkio@cox.net>
Subject: Re: [PATCH] Change "refs/" references to symbolic constants
Date: Tue, 20 Feb 2007 13:26:44 +0000 [thread overview]
Message-ID: <200702201326.46015.andyparkins@gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.63.0702201235350.22628@wbgn013.biozentrum.uni-wuerzburg.de>
On Tuesday 2007 February 20 11:37, Johannes Schindelin wrote:
> Actually, it's not even ternary, but to the return value should only be
> handled in terms of >0, ==0, <0.
Apologies, I'm not using ternary in the sense of the number 0, 1 and 2; I'm
using it in the sense of there being three possible outcomes - which there
are. This is similar to how operators are categorised into unary, binary and
ternary categories. I use ternary to mean "having three states or elements",
rather than "having the value 0, 1 or 2".
> Ah, and if "!" implies a boolean, then why is "!!" a common construct?
> Because "!" really does not imply a boolean.
Boolean expressions are those that have two possible states - "true"
or "false". There are no real booleans in C, so they are faked. The two
boolean states in C are represented by
False = Equal to zero
True = Not equal to zero
Now, the !! construction you suggest is perfectly in keeping with this
definition. Ironically, the only reason you need the !! construction is
because of this integer-as-boolean trait of C.
So, to get a boolean in C you use a standard integer (say). My contention is
that to improve clarity you should not mix integer-as-boolean and
integer-as-integer, even though C will accept it when you do.
i = 10;
while( i )
i--;
This is bad, it abuses the fact that C will let you treat an integer as a
boolean. while() takes a boolean expression as it's argument, so I think
that you should always hand it something that would be a boolean output (even
though C doesn't care if you don't).
i = 10;
while( i > 0 )
i--;
This makes it clear to the reader that i is not boolean. Obviously this is a
trivial example; no one would have any trouble understanding either of the
two examples. When things start to get bigger and more complicated though,
more clarity is always better than less clarity. The principle I try to
follow is that code is write-once-read-many. If you save yourself two
keystrokes at the expense of the clarity you gain for the 100 times you read
that code, then you have made a false economy.
In the end - I don't care - I was only countering Junio's "I prefer !strcmp",
with my reasons why I don't like it. I do not expect git to change to my
preferred coding style, and I do try to keep to the coding style that the git
project uses. To my mind, inconsistency is a worse offence than anything
else in a project, so it's always better to go with what is established.
Andy
--
Dr Andy Parkins, M Eng (hons), MIEE
andyparkins@gmail.com
next prev parent reply other threads:[~2007-02-20 13:26 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-19 18:39 [PATCH] Change "refs/" references to symbolic constants Andy Parkins
2007-02-19 18:55 ` Bill Lear
2007-02-19 20:01 ` [PATCH] Replace literal STRLEN_ #defines in refs.h with compiler evaluated expressions Andy Parkins
2007-02-19 20:50 ` [PATCH] Change "refs/" references to symbolic constants Krzysztof Halasa
2007-02-19 20:56 ` Shawn O. Pearce
2007-02-19 20:07 ` Junio C Hamano
2007-02-19 20:12 ` Shawn O. Pearce
2007-02-19 22:08 ` Johannes Schindelin
2007-02-20 8:41 ` Andy Parkins
2007-02-20 9:04 ` Junio C Hamano
2007-02-20 9:42 ` Andy Parkins
2007-02-20 9:50 ` Junio C Hamano
2007-02-20 10:21 ` Andy Parkins
2007-02-20 10:30 ` Junio C Hamano
2007-02-20 10:57 ` Andy Parkins
2007-02-20 11:37 ` Johannes Schindelin
2007-02-20 12:24 ` Simon 'corecode' Schubert
2007-02-20 13:26 ` Johannes Schindelin
2007-02-20 13:26 ` Andy Parkins [this message]
2007-02-20 15:46 ` Nicolas Pitre
2007-02-20 9:51 ` [PATCH 1/4] Add prefixcmp() Junio C Hamano
2007-02-20 10:04 ` David Kågedal
2007-02-20 10:20 ` Junio C Hamano
2007-02-20 9:53 ` [PATCH 2/4] Mechanical conversion to use prefixcmp() Junio C Hamano
2007-02-20 10:19 ` Junio C Hamano
2007-02-20 11:53 ` Johannes Schindelin
2007-02-21 6:43 ` Junio C Hamano
2007-02-21 12:41 ` Johannes Schindelin
2007-02-20 9:54 ` [PATCH 3/4] prefixcmp(): fix-up mechanical conversion Junio C Hamano
2007-02-20 9:55 ` [PATCH 4/4] prefixcmp(): fix-up leftover strncmp() Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2007-10-02 15:58 [PATCH 1/2] Change "refs/" references to symbolic constants Jeff King
2007-10-02 18:16 ` [PATCH] " Andy Parkins
2007-10-02 19:11 ` Jeff King
2007-10-02 19:47 ` Junio C Hamano
2007-10-02 20:48 ` Jeff King
2007-10-03 0:22 ` Junio C Hamano
2007-10-03 2:58 ` Jeff King
2007-10-03 4:05 ` Johannes Schindelin
2007-10-03 4:30 ` Jeff King
2007-10-03 11:30 ` Andreas Ericsson
2007-10-03 7:37 ` Andy Parkins
2007-10-03 7:50 ` Andy Parkins
2007-10-03 11:13 ` Andy Parkins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200702201326.46015.andyparkins@gmail.com \
--to=andyparkins@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).