找回密码
 立即注册
首页 业界区 业界 lil_tea c++ style guide

lil_tea c++ style guide

唐茗 3 天前
lil_tea c++ style guide
部分借鉴自 the cherno, 部分借鉴自 google c++ style guide, 部分借鉴自 linux kernel coding style, 部分借鉴自 算法竞赛进阶指南.
因为我年纪大了所以已经忘记哪一条是从哪借鉴的了, 朋友们看到哪条觉得合理就用吧, 不合理的不用就好了.
总结一句话: 坚持 c like 特色指针主义道路, 以安全性换自由; 姓 bjarne 还是姓 graydon 的问题上我们要坚持 bjarne 领导, 坚持 k&r 的文化自信, 杜绝 graydon 的糖衣炮弹.
调试

我觉得调试是最重要的, 所以放在最开头.
调试, 最最最重要的, sudo apt remove gdb (这只是个玩笑, 不要真的执行).
深入学习贯彻 fail fast 原则, 在出现错误时直接退出程序, 而不是使用 try throw catch. 编写程序的时候假设所有东西不会出错, 然后每当出现程序异常退出就可以知道程序出错了.
检测出错的方式非常简单, 在你认为可能出错的一行语句后输出调试, 输出的可以是任何你喜欢的东西. 可以在分号后直接写, 也可以换行后写, 但一定是在后面写.
这里是个例子, 你可以调用 log(__LINE__) 的方式直接输出调试, 而在没有 -Dyoung_tea 时调试语句不会输出.
注意 ""s 需要 using std::string_literals:perator""s;.
[code]void        log(long line_number) {#ifdef        lil_tea        std::cerr ld_).</p>引用是说你要引用传入的 object, 也就是 ld_ = y->ld_.
抢劫则很明显就是你要让传入的 object 失效, 也就是 ld_ = y->ld_, 注意一定要额外写一行 y->ld_ = nullptr, 或者直接写 ld_ = std::move(y->ld_).
析构函数

非必要不写, 让智能指针和 STL 自动释放, 如果有裸指针则在析构函数里以合理方式杀死.
重载运算符

非常推荐, 比如矩阵乘法, 重载运算符后可以方便的实现矩阵快速幂.
指针

到了最有意思的部分了.
我哥 3f 的指针哲学大多来源于 mycall, 而我的指针哲学部分来源于 一扶苏一女士 另外的来源于 the cherno.
裸指针

用于管理图论的顶点 (树论也属于图论).
尽量尽量尽量不要用裸指针存储 new.
因为图论是复杂的, 但又是不变的, 这恰好也是裸指针的优势, 所以我们这样写:
[code]class        vtx{public:        std::vector to_;        void add_edge(vtx*);};vtx v[k_max_ver];        // 全局数组, 可以放在 graph:: 命名空间或者直接全局命名空间void        vtx::add_edge(vtx *y) {        if (this < v || v + k_max_ver

相关推荐

您需要登录后才可以回帖 登录 | 立即注册