This question is about having the most generic parenthesis code if one doesn't know the contents size of the parenthesis a priori.
If I want to write a function or parenthesized equation I write, for example, $f(...)$.
If I want to use the same code regardless of the contents of the parenthesis ... one tends to find that \left(...\right) is likely to look better if the contents are big.
However the spacing is not correct, even for small contents. In the sense that for example f(x) is not visually equivalent to f\left(x\right).
So to cover for that case I write f\!\left(...\right).
I recently found that this works in many contexts but not in a superscript.
For example \[ e^{i\arg\!\left(z\right)} \], produced a badly spaced formula:

Is there a parenthesis code that works more or less well regardless of content and the context?
It looks like \! is pretty close to a solution, so preferably without using additional packages. (references to packages are still welcome).
EDIT: From @Manuel's answer below, it looks like the most elegant solution is to use the package mleftright and leave all the \left(, \right) commands as they are. It also looks like one can use \mathopen{}\mathclose{\left(...\right)} if one doesn't want to include packages.
Here it is a sample to show that all solutions give a consistent output:
\documentclass[]{article}
\begin{document}
\[ i \arg(z) \]
\[ i \arg\left(z\right) \]
\[ e^{i \arg\!\left(z\right)} \]
\[ e^{i \arg\mathopen{}\mathclose{\left( z\right)}} \]
\[ i \arg\mathopen{}\mathclose{\left( z\right)} \]
\[ i \arg\mathopen{}\mathclose{\left(\frac{z}{y}\right)} \]
\end{document}

\documentclass[]{article}
\usepackage{mathtools,mleftright}
\mleftright
\begin{document}
\[ i \arg(z) \]
\[ i \arg\left(z\right) \]
\[ e^{i \arg\!\left(z\right)} \]
\[ e^{i \arg\mathopen{}\mathclose{\left( z\right)}} \]
\[ i \arg\mathopen{}\mathclose{\left( z\right)} \]
\[ i \arg\mathopen{}\mathclose{\left(\frac{z}{y}\right)} \]
\end{document}

mleftrightand\mleftand\mright? – Manuel May 25 '15 at 19:36\mleftand\mright-- you still run into the issue that you'll sometimes have parentheses that are too large (from a typographer's point of view) or, in other circumstances, too small. Thus, I don't think it can be said that there's automated code for parentheses that works under circumstances. – Mico May 25 '15 at 20:12\bigl(,\Bigr), etc.) you should patch the\bigxcommands because, by default they only use the\displaystylefont. Shameless plug. – Manuel May 25 '15 at 20:49\leftand\righteverywhere is not a good idea in general, check out the postings "(" or "\left(" parentheses? and Is it ever bad to use \left and \right? – Mico May 26 '15 at 03:48\left(\right)always gets the job done (comparing to always using()if I have to use a fixed code). The problem I find is the outer spacing, and never the height chosen automatically. I don't think the examples in the link look bad at all. – alfC May 26 '15 at 06:40\leftand\rightat all times to auto-size the "fences". – Mico May 26 '15 at 15:23