threads / patch / 16968

patchgit wrapper: Make while loop more reader-friendly

Subject: [CLEANUP PATCH RESEND] git wrapper: Make while loop more reader-friendly

## tl;dr

4 messages between Jan 2, 2009 and Jan 2, 2009. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Johannes Schindelin· Jan 2, 2009, 18:07 UTC · lore

It is not a good practice to prefer performance over readability in something as performance uncritical as finding the trailing slash of argv[0].

So avoid head-scratching by making the loop user-readable, and not hyper-performance-optimized.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 git.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
Show changes to git.c +2 −3
diff --git a/git.c b/git.c
index 940a498..e0d9071 100644
--- a/git.c
+++ b/git.c
@@ -428,9 +428,8 @@ int main(int argc, const char **argv)
 	 * name, and the dirname as the default exec_path
 	 * if we don't have anything better.
 	 */
-	do
-		--slash;
-	while (cmd <= slash && !is_dir_sep(*slash));
+	while (cmd <= slash && !is_dir_sep(*slash))
+		slash--;
 	if (cmd <= slash) {
 		*slash++ = 0;
 		git_set_argv0_path(cmd);
-- 
1.6.1.rc3.224.g95ac9
Boyd Stephen Smith Jr.· Jan 2, 2009, 18:28 UTC · re: Johannes Schindelin · lore

Re: [CLEANUP PATCH RESEND] git wrapper: Make while loop more reader-friendly

On Friday 2009 January 02 12:07:52 you wrote:
Show 6 quoted lines
> It is not a good practice to prefer performance over readability in
> something as performance uncritical as finding the trailing slash
> of argv[0].
>
> So avoid head-scratching by making the loop user-readable, and not
> hyper-performance-optimized.
Show 5 quoted lines
> -	do
> -		--slash;
> -	while (cmd <= slash && !is_dir_sep(*slash));
> +	while (cmd <= slash && !is_dir_sep(*slash))
> +		slash--;

What confused people? The predecrement or the do/while? Should people that don't understand one of those be hacking on git?

That said, I'm not opposed to the patch. It is easier on the eyes, though I prefer the one-liner: for (; cmd <= slash && !is_dir_sep(*slash); --slash);

-- 
Boyd Stephen Smith Jr.                     ,= ,-_-. =. 
bss@iguanasuicide.net                     ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' 
http://iguanasuicide.net/                      \_/     
Johannes Schindelin· Jan 2, 2009, 18:49 UTC · re: Boyd Stephen Smith Jr. · lore

Re: [CLEANUP PATCH RESEND] git wrapper: Make while loop more reader-friendly

Hi,
On Fri, 2 Jan 2009, Boyd Stephen Smith Jr. wrote:
Show 20 quoted lines
> On Friday 2009 January 02 12:07:52 you wrote:
> > It is not a good practice to prefer performance over readability in
> > something as performance uncritical as finding the trailing slash
> > of argv[0].
> >
> > So avoid head-scratching by making the loop user-readable, and not
> > hyper-performance-optimized.
> 
> > -	do
> > -		--slash;
> > -	while (cmd <= slash && !is_dir_sep(*slash));
> > +	while (cmd <= slash && !is_dir_sep(*slash))
> > +		slash--;
> 
> What confused people?  The predecrement or the do/while?  Should people that 
> don't understand one of those be hacking on git?
> 
> That said, I'm not opposed to the patch.  It is easier on the eyes, though I 
> prefer the one-liner:
> for (; cmd <= slash && !is_dir_sep(*slash); --slash);

As I mentioned in the commit message: readability is something to be cherished and worshipped.

For your pleasure, I will not go into details about the motions my bowels went through when I looked at those three lines. Or your single line, for that matter.

Ciao, Dscho

Boyd Stephen Smith Jr.· Jan 2, 2009, 20:04 UTC · re: Johannes Schindelin · lore

Re: [CLEANUP PATCH RESEND] git wrapper: Make while loop more reader-friendly

On Friday 2009 January 02 12:49:53 Johannes Schindelin wrote:
Show 11 quoted lines
> > > -	do
> > > -		--slash;
> > > -	while (cmd <= slash && !is_dir_sep(*slash));
> > > +	while (cmd <= slash && !is_dir_sep(*slash))
> > > +		slash--;
> >
> > I prefer the one-liner:
> > for (; cmd <= slash && !is_dir_sep(*slash); --slash);
>
> As I mentioned in the commit message: readability is something to be
> cherished and worshipped.

It's also subjective. I think my one-line is more readable than your two lines which is only slightly more readable than the original 3 lines. Or is there some objective readability metric that of which I'm just not aware?

I also think that the lack of braces around your body on a separate line makes it harder to read and easier to break, but I understand that is the git coding style.

> For your pleasure, I will not go into details about the motions my bowels
> went through when I looked at those three lines.  Or your single line, for
> that matter.

Please do, although privately if you like. I really don't see the problem the patch is trying to fix.

-- 
Boyd Stephen Smith Jr.                     ,= ,-_-. =. 
bss@iguanasuicide.net                     ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' 
http://iguanasuicide.net/                      \_/     

← back to recent threads