Google standardını okuduğum için, using namespace foo;
yönergeyi hiçbir yerde kullanamazsınız . Bu yönerge isim alanında beyan edilen her şeyi getirir ve çarpışmaların ve beklenmedik davranışların ortak bir nedenidir. Diğerleri çok yaygın bir yöntem gösterdi: bir yerde kendi max veya min yönteminiz var ve birisinin yönteminizle bir başlık içerdiği ve daha sonra söylediği bir src dosyasında çarpışıyorusing namespace std;
Bazı yerlerde, formda olan bir kullanım bildirimi alınmasına izin verilir. using ::foo::bar;
İnsanlar kodlarında yönergeler kullanmayı sever, çünkü çok fazla yazım kazandırır, ancak riskle birlikte gelir. Çok fazla cout ifadesi olan bir dosyanız varsa, std :: cout'u yüz kez yazmak istemediğinizi anlayabilirim, ancak sadece :: std :: cout kullanarak söyleyebilirsiniz. Bunlara değişken beyanlar gibi davranıyorum: gerektiğinde onları kapsamla. 10 dosyadaki bir işlevin çıktı yazması gerekiyorsa, en üstteki cout yolunu bildirmeyin, gerçek çıktıyı yapan işleve koyun.
#include <ostream>
//using namespace std; // NO!
//using ::std::cout; // less bad than using namespace, but I prefer to scope it
int main(int argc, char** argv)
{
int rc = do_some_stuff(argc, argv);
using ::std::endl;
if (rc) { // print the success report
using ::std::cout;
cout << "The test run completed. The return code was " << rc << '.' << endl;
} else {
using ::std::cerr;
cerr << "Unable to complete the test run." << endl;
}
return 0 == rc;
}
Bu sadece birkaç satırın çıktı yapmasıyla biraz aşırı, ama fikri anladınız.
Birinin yapabileceği başka bir şey, yazmayı en aza indirmek için takma ad veya typedef'tir. Ben bu kadar kötü ne olursa olsun std :: bulamıyorum, ama birkaç düzine modülleri ile kaynak büyük bir set var ve bazen gibi kod yazmak zorunda console_gui::command_window::append("text")
. Bu bir süre sonra sıkıcı bir hal alır ve çok sayıda uzun çizgiye neden olur. Ben hep böyle bir şey için
typedef console_gui::command_window cw;
cw::append("text");
takma adlar yerel bir kapsamda yapıldıkça ve kodu okunabilir hale getirmek için yeterli bağlamda kaldığı sürece.