TL;DR: Rant about sh.c's variable names I forgot to include in main email, I
have a patch to start fixing it but it conflicts with other stuff and I have
to re-do it

Reading through sh.c, most of the variable names are 2 letters long (repeating 
the same letter),
for short functions (<20 lines) this isn't a problem. For example, I don't need 
a more
descriptive name for the variable "c" in getvar() to understand it because I 
can look at the uses
of it and infer from context it's about variable types. Longer functions where 
there are a lot of variables
interacting with each other are a lot harder to keep track of.

For example, what does "cc" do in sh_main? From the looks of it. It's the name
of command/file being processed, but to _know_ that's the case I have to audit
50 lines of code, and check over seeing if that's what it really does. When a 
name
like "in_source", "inputsrc", or just "inname" would tell you that without 
having to look
over the code and make sure that's the case.

The problem isn't the length, the problem is that there isn't any convention to 
it and a lot
of names convey little to no information ("ss" is usually a string, but "what 
does the string do?"
is a question you need to commonly ask to find out what it's doing). It'd be 
like if run_lines()
was called "rr()" or "expand_arg" was called "ea()", we name functions just 
fine (which makes
this code somewhat readable, at least it's general structure)

"ff" is a common name for file descriptors. So working down from sh_main, One 
could assume that 
"TT.ff" must have something to do with file management, right?... No, it's a 
doubly linked list
of overhead for shell functions, and "struct sh_fcall" is often called "ff" in 
functions that use
it, we have 2 common names that do completely different things...

The problem isn't the length as I said, the problem is that there is no 
convention for the naming
of these. No pattern that you can follow, you usually have to go to the start 
of the function
(which can be hundreds of lines up, depending on what you are looking through) 
and see how it gets
assigned (And interacts with other variables that have the exact same problem)

I'd try to replace a lot of these names in a patch (I have already done so for 
sh_main in a patch
that I didn't send because getting the compiler to shut up was more important, 
will send the patch
when I'm sure it won't conflict with anything) but to be accurate in renaming I 
have to understand
what they are, (The problem I'm trying to fix) which requires either better 
names to begin with or
extensive auditing and debug printf-ing of the code that takes up a lot of time.

- Oliver Webb aquahobby...@proton.me
_______________________________________________
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to