I teach at a public school district where uniforms are worn in most of our schools. Only 1-2 schools out of 17 in our district do not have uniforms. Those schools have a lot more trouble with gang activities, because it is more difficult to recognize who belongs at school and who does not. Also, gang colors can be worn at those schools, so there is more trouble because of this.
Uniforms are a good idea, especially if they are "normal" clothes, and not something too outlandish. "Catholic school plaid" would not work in most public arena. However, Khaki, black or navy blue, usually with white or gray are good, neutral colors. Parents can't complain too much about having to buy these sorts of clothes because they can be gotten just about anywhere where children's clothes are sold. Collared shirts are also easy and inexpensive to obtain.
We do have some trouble with kids breaking the uniform rules, but on a whole, as long as the administration is willing to enforce the uniform rule, it does work.
The reasons for uniforms are many: safety of the students, anti-gang clothing, recognition of student body, having properly covered body parts, etc.
I, as a teacher, am in favor or uniforms and enforce it in my class.