Hi Darren,<br><br>Thank you so much for taking time to write the illustrative example. That makes perfect sense.<br><br>I had the feeling that being explicit might be a better choice when projects get bigger. So far my codes are mainly for numerical studies in my research and are generally short, but I do want to keep a good style of coding as I expect myself to code more in future.<br>


<br>Thanks, Darren.<br><br>Zhongyi<br><br><div class="gmail_quote">On Wed, Aug 31, 2011 at 7:09 PM, Darren Cook <span dir="ltr">&lt;<a href="mailto:darren@dcook.org" target="_blank">darren@dcook.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div>&gt; Can I ask for specific reasons why people prefer explicit?  Any potential<br>
&gt; danger for not being explicit?<br>
<br>
</div>Hello Zhongyi,<br>
It is hard to show in a toy example; in fact &quot;using namespace&quot; is best<br>
for code examples where you want to get an idea across and not cloud it<br>
with too much other code.<br>
<br>
But see the below example, and imagine the &quot;//...&quot; bits are dozens of<br>
lines. When you see f(x) you don&#39;t know which function will be called.<br>
You have to stop and search up to find the currently active namespace<br>
definition.<br>
The bigger your project, and the more 3rd party libraries you deal with,<br>
the more this slows you down.<br>
<br>
See also:<br>
 <a href="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5" target="_blank">http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5</a><br>
<br>
Darren<br>
<br>
<br>
//------------------------------------------<br>
<br>
#include &lt;iostream&gt;<br>
<br>
namespace xx{<br>
  double f(double x){<br>
  return x*x;<br>
  }<br>
}<br>
<br>
<br>
namespace yy{<br>
  double f(double y){<br>
  return y+y;<br>
  }<br>
}<br>
<br>
<br>
void one(double x){<br>
using namespace xx;<br>
//....<br>
std::cout&lt;&lt;f(x)&lt;&lt;&quot;\n&quot;;<br>
}<br>
<br>
<br>
void two(double x){<br>
using namespace yy;<br>
//....<br>
std::cout&lt;&lt;f(x)&lt;&lt;&quot;\n&quot;;<br>
}<br>
<br>
<br>
<br>
int main (int,char**){<br>
const double PI=3.14;<br>
one(PI);<br>
two(PI);<br>
std::cout&lt;&lt;xx::f(PI)&lt;&lt;&quot;\n&quot;;<br>
std::cout&lt;&lt;yy::f(PI)&lt;&lt;&quot;\n&quot;;<br>
return 0;<br>
}<br>
<font color="#888888"><br>
<br>
--<br>
</font><div><div></div><div>Darren Cook, Software Researcher/Developer<br>
<br>
<a href="http://dcook.org/work/" target="_blank">http://dcook.org/work/</a> (About me and my work)<br>
<a href="http://dcook.org/blogs.html" target="_blank">http://dcook.org/blogs.html</a> (My blogs and articles)<br>
_______________________________________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel</a><br>
</div></div></blockquote></div><br>