>> dict.put(a,b) leaves me wondering which is the key and which is the value.
dict setObject: a forKey: b
Leaves no doubt what a and b are used for. Plus, you can speak the program aloud and it makes sense.<<
I am not sure I completely agree. It depends on the frequency of usage, perhaps. The position is usually easily figured out by the context. Thus, if it is used several times in a given routine/method, you only are confused the first time, not the next 20. "setObject" and "forKey" then just become clutter that interferes with reading what is different. The frequent occurance of "setObject" and "forKey" is then a candidate for factoring out.
But, what bothers person A may not bother person B.
(BTW, I would try to use a table protocol instead of a dictionary protocol if it is data being stored. Dictionaries don't scale very well in complexity. A single key {index} is an arbitrary limit, so is two columns {key,value}. I don't like arbitrary limits. They create Meyerian Continuity problems.)