auto 省下来的字,最后会让你加班
很久以前。你写 C++。还没有 auto。返回类型就得老老实实写全。写 wrapper 的时候。最先累的是手。然后是眼睛。再然后。你开始想办法“少写点”。typedef。宏。还有一句自我安慰。“我知道
阅读全文很久以前。你写 C++。还没有 auto。返回类型就得老老实实写全。写 wrapper 的时候。最先累的是手。然后是眼睛。再然后。你开始想办法“少写点”。typedef。宏。还有一句自我安慰。“我知道
阅读全文我第一次被“时间单位”坑。很久以前。久到我还以为“超时”这种东西。只会发生在别人家。结果它找上门了。而且一点都不高级。就是单位写错。当年:时间单位靠人脑记在 C 的世界里。你写延时,常见就是这些。sl
阅读全文那会儿写 C++。标准还没给你太多“高级玩具”。但项目该写还是得写。我们会写一堆常量。配一堆平台。再配一堆开关。你以为你在写一个 MAX_BUF。其实你在写一场“预处理器赌博”。预处理器就是编译前那一
阅读全文那会儿 C++11 刚开始进团队。大家第一次认真聊起一句老话。“资源跟着对象走”。对象死了。资源也该跟着收回。听起来很美。但你把代码一翻。还全是 new。你会愣一下。这戒指戴上了。怎么手里还攥着前任送
阅读全文你写 C。一个函数想多返回点东西。你就把指针塞进去。当年大家都这么干。也不是不行。就是有点别扭。指针一多。你会开始记不清。到底哪个是“耗时”。哪个是“状态码”。后来 Boost 先做了 tuple。B
阅读全文我见过最离谱的一次线上事故。不是内存越界。不是死锁。是一个迭代器。它本来只该活在一个 if 里。结果它活到了后面。然后我在 debug 分支里顺手用了它。线上就啪一下。这篇文章不背语法。只把一件事讲透
阅读全文我曾经被模板报错骂过。不是一句两句。是整屏。滚动条都不敢拉到底。你盯着那一堆类型名。像在看一张坏掉的账单。然后你发现。自己只是想写一个“泛型打印”。先补三个词:编译期、实例化、替换失败刚学 C++ 的
阅读全文我见过一种挺烦的 bug。程序不崩。也不报警。输出看着还挺像回事。但你其实是在用一种类型的眼镜。去读另一种类型的内存。如果你只学过 C,这事多半发生在 union 上。如果你刚开始写 C++,第二次坑
阅读全文我第一次嫌 C++ 啰嗦。不是因为语法多。是因为我在写一段代码的时候。经常要把“同一个类型信息”写两遍。你刚学 C++ 的时候。大概率会卡在这里。因为你明明看得见右边的构造参数。却还要在左边再抄一次模
阅读全文我最怕那种返回值。它不报错。但它也没告诉你。“这次其实没拿到结果”。你接到的是一个看起来很正常的 int。或者一个看起来很正常的指针。你就照着往下写。一直写到上线。然后某个周五晚上。啪一下。当年:我们
阅读全文我第一次真用上折叠表达式,是在写日志的时候。线上出了点事故。我得把一串变量一次性吐出来。在 C 里你会写 printf。但 C 的 ... 是运行时的。类型信息靠格式串兜着。格式串一写错,崩的就是你自
阅读全文大模型看起来在“理解文字”。 但它真正处理的,从来都不是文字。你每一次发 Prompt、每一次多花的 Token、每一次上下文装不下、每一次速度变慢、每一次遇到莫名其妙的切分结果,背后都站着同一个角色
阅读全文我以前写过一个日志函数。上线前我还挺得意:接口统一收 std::string,省心又安全。上线后就尴尬了。CPU 抬头,分配次数也抬头。profile 一看,热路径里一大块都在构造 std::stri
阅读全文早年的 C 世界里,内存更像一张借条。你借走一块。还的时候只还一个地址。不写大小。听起来很离谱?当年大家还真就这么干了,而且干得挺理直气壮。那些年,free 从来不问“你借了多少”在最早的 C 里,m
阅读全文很多年前。我们想“废弃一个函数”。第一反应就是删掉。但你删一次。就会有人跑来敲你。“我升级了库,项目编不过了。”更要命的是。那时候很多库就是一堆头文件。接口发出去。就像把螺丝刀借给全公司。你收不回。所
阅读全文那会儿还没有 lambda。STL 刚进大家的工具箱。你第一次用上 std::sort 的时候。真的会觉得它很爽。然后它就问你一句。“按什么规则排?”你以为这问题很简单。结果你在代码库里多了一个新文件
阅读全文那会儿日志就是纯文本。也没人会说什么“结构化”。我们写日志。就是往文件里塞一行文本。然后靠 grep、awk、一点耐心。把问题捞出来。看起来粗糙。但真能救命。直到某一天。你想把“用户输入”也写进去。你
阅读全文那会儿还没有 C++14。很多人写 C++。说白了。就是在写 C。只是多了点 class。字符串也没变聪明。你眼里是“字符串”。它手里攥着的。常常只是一个地址。地址平时挺乖。你一拿它去做 +。它就开始
阅读全文那会儿 C++11 刚开始进项目。你第一次在代码里碰到 <type_traits>。不是在书上。是在发版前一晚。你本地一跑编译。它啪一下就挂了。报错里反复出现一个词。::type。你盯着它。像盯着一根
阅读全文那几年。C++11 刚出来。很多人第一次用上 lambda。感觉像突然不用再写那坨“函数对象”了。回调顺手。异步也顺手。大家写得很嗨。直到某天凌晨。线上啪一下。core dump。你第一反应是线程。第
阅读全文那会儿我们写 C/C++。配置常常就写在源码里。数字也就跟着一起写进去。一长串。一坨 0。你当时不会把它当风险。毕竟它“只是个常量”。直到有一天。你少写了一个 0。线上啪一下。服务开始挨打。你盯着那一
阅读全文你想“从函数里带回两个东西”。没有神兵利器。只有手工活。有人用引用。有人用指针。有人写一堆小结构体。还有人……开始写宏。你没听错。为了多返回值。真的有人写宏。当年没有 tuple 的日子那会儿还在 C
阅读全文那会儿还没有 C++11。我们写的东西更像 “C with classes”。也就是在 C 上面糊一层 class。项目不大。但麻烦一点都不少。尤其是日志。你总想写一个函数。什么都能塞进去。参数多少都
阅读全文很久以前。C++ 里想“用正则”,并不是一句 #include 就完事。你要么去翻 POSIX 的 regex.h。要么拉个 PCRE。要么用 Boost。然后开始跟编译选项、链接、版本兼容吵架。最尴
阅读全文很久以前。你写 C。你想要“随机”。你只有一个按钮。rand()。它来自 C 标准库。一开始也没打算让你拿它写抽奖、分流、风控。更多时候。是小游戏。是模拟。是“差不多就行”。然后我们就真的把它当成“随
阅读全文你写个小项目。代码不多。需求也不复杂。直到它上线。然后某天晚上。线上啪一下。你盯着日志发呆。崩在一个“回调”。你甚至没觉得自己写了什么高深东西。你只是。“想把一个能调用的东西传进去”。那些年,回调是怎
阅读全文那会儿你想要一张“用 key 快速查值”的表。标准库不给。只给你 std::map。要么你自己写一个。要么去翻各家编译器的私货。今天在你机器上能跑。明天换个编译器就报错。更惨的是。同事一更新工具链。线
阅读全文那会儿还没什么“智能指针”。你写的就是 C with classes。能跑就行。能上线就更行。资源这件事。基本靠自觉。new 之后。你得自己去把 delete 找回来。找不回来。就等着哪天线上给你脸色
阅读全文时间这东西。最喜欢伪装成“一个数字”。你看着它。觉得没啥。然后线上啪一下。很久以前。我们还没有那种“把单位写进类型里”的安全感。也没有一个统一的时间工具箱。时间就是 int。单位靠约定。约定靠注释。注
阅读全文如果你写过一点 C。你大概率相信过一句话。数组的长度。就在那对 [] 里。写着呢。不会丢。结果第一次做小项目上了线。啪。你会发现。长度不是“丢了”。是你从来没真正拥有过它。那是很早的年代。大家写的不是
阅读全文