Kruger and Epley dug deeper to uncover the reasons behind e-mailers' overconfidence. They suspected that it might be because e-mailers assume that other people have the same inside information about their intentions and motivations that they dowhat social psychologists call egocentrism.
Obviously, I'm going to assume that the link is some sort of statement you consider to be relevant to this thread, and on that note, I acknowledge that it is an interesting point.
I'm going to be blunt, at the risk of sounding like a pompous *****. Every "discovery" uncovered through a study and every insight as to a why or how from that article strikes me as common sense. Anyone who spends any amount of time on the Internet quickly realizes the potential for miscommunication, and anyone who spends any amount of time in reality should realize that not everyone knows what he knows. I don't need a study to tell me that.
I keep these things in mind when I post anything on the Internet. I always have, especially when something is subjective, because not everyone shares my morals and most elemental of principals, whether the topic is programming practice or abortion. I explain my self as explicitly as possible, avoiding any sort of ambiguity and any means of misinterpretation. You can tell me I'm offensive. You can tell me that I'm wrong. I won't take it too personally, but when you tell me that I'm not clear in my meaning, I'm confounded.
I explain in plain English, and then elaborate in precise logic. I note what I base on preference, practice, or principal. Then I reiterate, demonstrate, and summate (mmm... rhymes). Maybe not everyone is as systematic and logically direct in his manner of thinking and communicating as I am. Maybe I try to spin a web of logic and tie people up. I don't know. I seem to be misunderstood more often than I like to admit, considering how hard I try to be perfectly clear. Maybe its just me. I'll try again. Tell me how I do.
I don't like to overload ==. It can be confusing because what used to compare references can do different things now. I make a practice of not overloading == for the sake of avoiding this confusion. It guaruntees that I can compare reference equality of my objects with ==, because to me this is what makes sense. Is this more clear? Or maybe I could have given an example to demonstrate.
Given the class SimpleClass:
C#:
public class SimpleClass
public int i;
public SimpleClass(int value){
i = value;
}
public operator == (SimpleClass A, SimpleClass B){
return A.i == B.i;
}
End Class
We declare the following variables and objects:
C#:
SimpleClass A = new SimpleClass(5);
SimpleClass B = A;
SimpleClass C = new SimpleClass(5);
Our current situation can be represented as figure (I). We could say that A == B, B == C, and C == A. All three variables are the same. Now, we modify memory using the code below. We are working in a different class in a different file on a different day. It could even be a different person writing this code. We don't have the original declaration of A, B, and C in front of us, so we don't have a clear definition of what the variables mean in relation to eachother.
Now our situation can be such as represented in figure (II).
We only changed A, not B or C, but now B is equal to A and C is not, and additionally, B and C no longer maintain their equality. How can changing A affect the relevance between B and C. Looking at the before and after pictures of equality, you would think that you changed the value of C instead of A. If SimpleClass were a struct this wouldn't have happened, and if SimpleClass didn't overload == this wouldn't have happened.
Is equality defined as being the same entity, or unique but equivalent entities? It is no longer only one or the other, but instead any of the above. You can compare and see that A == B == C, but you can't depend on that to mean either that changing A will change B and C as well
or that changing A will have no effect on B or C.
For this one specific reason, I think that overloading == is bad. That's just my take. Now I have shown you a specific example, though, and I don't see any way for someone to not understand my point.