存档

  • 少写代码就是好代码

    一种理想的语言,针对一个问题应该提供尽可能少的实现方式,这样,即使用户只掌握了这门语言的大概,也可避免误用。但是反过来说,这种语言是不存在的。Python在代码格式上算是做到了这一点,但是以严格的缩进代替明确的首尾标记,自动格式化也就不太可能了,这种缩进一旦丢失也很难恢复。很多语言刚发明时,都力求简洁,没有太多花哨的语法和功能,但是一路走来,复杂的语法和功能越加越多,做一件事就不止一种两种甚至三种方式了。哪一种情况下用哪一种方式,就得看程序员的素质。

    没有评论
    2012年1月10日 | 归档于 C/C++
  • C++函数字符串参数的优化

    介绍了Google Chromium的StringPiece和LLVM的StringRef。

    没有评论
    2011年11月28日 | 归档于 C/C++
  • 为什么C++程序跑不过C程序?

    C++程序的性能问题往往来源于程序员的误用。比如在不知不觉中创建和销毁很多(不必要的)对象,而程序员往往并不能意识到这一点。当然,容易误用的语言不是一门好的语言。

    没有评论
    2011年11月17日 | 归档于 C/C++
    标签: ,
  • std::vector<bool>之罪

    以vector为例来介绍C++的模板偏特化,不失为一个讨巧的选择。说它讨巧,一是因为来自STL标准库,现取现用;二是因为vector确实特化得厉害,较一般的vector有很大不同。这一次C++大会上(指2009年在上海举办的第二届C++技术大会),侯捷在讲C++泛型编程时,就用了vector这个例子。

    没有评论
    2011年11月10日 | 归档于 C/C++, Programming
    标签:
  • Inline Functions In C++

    大概两个月前,有人就我写的代码问:为什么把inline实现在头文件中?在头文件里声明,然后在源文件里定义时同时也指定inline不也可以吗?一时被问住了,因为一直没仔细想过这个问题。顺手写了两行代码让编译器帮忙验证,发现"确实如其所说"。今天发现,那是错的。当时顺手写的测试代码之所以骗过编译器也骗过链接器,原因可能是那个inline函数根本就没有被调用。 这里假定你的inline函数会被多个源文件引用。如果只会被一个源文件所用,那么便不必放在头文件中,而直接放在使用它的那个源文件里就可以了。比如通常在一个源文件里我们会写一些短小的static函数来辅助操作,这些static函数如果足够短小,就可以顺便把它inline。 对于非类成员函数,如下inline定义是错误的: [code lang="cpp"] // .h inline const std::string& shoter_string(const std::string& a, const std::string& b); // .cpp // 这里有没有inline不影响结果 inline const std::string& shoter_string(const std::string& a, const std::string& b) { return a.size() < b.size() ? a : b; } [/code] 链接错误:shoter_string未定义。 对于类成员函数,如下inline定义也是错误的: [code lang="cpp"] // .h struct C { // inline可省略, 缺省就是inline inline const std::string& [...]

    没有评论
    2011年11月8日 | 归档于 C/C++, Programming
    标签:
‘C/C++’ 分类的存档