Our specific situation is that we are creating an agreement between ourselves and another team for shared control or use of a PHP based web application that we have been building.    We have a set of standards and conventions documented in our technical specs.  However, I have been asked to define them in terms of an industry standard.

I am aware of different terminology for coding conventions. Hungarian notation, CamelCase, for example. And some defined standards for very specific things, PSR-0 for example covers namespaces in PHP.

It seems the point is to try to give us stronger ground in the agreement, by pointing to industry standards rather than an arbitrary standard we set forth.  They're looking for things like the PSR-0 or an ISO#### or IEEE#### that we can point to.

My personal concern is that I've spent the time working with the team to show them the standards we have and to get buy in on the bigger parts of it. So I'm worried we'll either end up having to conform to some standard that doesn't match how we like to program, or the better case will be picking and choosing pieces of standards if they exist, to fit our current conventions.

Anyway, the core of the question is, Are there any industry standards regarding code quality, coding processes, or other areas that would help us keep their programmers from making disruptive or difficult to maintain code?  I realize we can't prevent it, but if we can point to the agreement, at least we have recourse other than refactoring or recoding it ourselves.

Any other thoughts or suggestions would be helpful.

From a practical point of view I see these problems:


A bloat of possible run type errors -- unless a lot of dynamic type checking which could be avoided with the Java included strong type checker.
A lot of unnecessary casts
Difficulty understanding what a method does by its signature


From a theoretical point of view I see these problems:


A lack of contracts of the interface of a class. If all parameters are of Object type then you aren't declaring anything informative to the client classes.
A lack of overloading possibilities
The incorrectness of override. You are able to override a method and change its parameter types thus breaking everything which is inheritance related.

