Some words are easily misinterpreted, and the PBP suggests avoiding them for names. I don’t agree with one of the things it suggests you always avoid, though…
The book contains a list of potentially confusing names, some of which are more likely to confuse things than others. It eventually summarizes, “Any homograph can potentially cause difficulties if it has a distinct, non-programming-related sense that is relevant to your particular problem domain.” This is true, and I agree with it.
Most of the suggestion boils down to, “Use your brain and try not to pick ambiguous words.” which I can live with.
But… it also says, “set” and “last” are both always ambiguous and should probably be avoided.
I can’t agree with this. If you’re using the split names for accessors – rather than a single mutator function that is both get and set – you’ll have a “get_whatever” and a “set_whatever”. That verb is at the beginning and clearly an accessor. If you wind up having to set a set, find a different way to refer to the set, or duplicate it, “set_data_set”, which uses “set” in two ways and may actually still be clear.
While I almost never use separate setter/getter functions – feh! Context tells me what it’s doing, I don’t need four extra bytes for clarity! This is Perl, not Java! – they are pretty much an industry standard and to avoid using “set” because a mathematical set somewhere might get confused seems a little over the top.
You didn’t talk about “last.” I do think “previous” and “final” are good words and generally less ambiguous than “last.”