代码迷惑行为大赏

人无远虑,必在on-call

纪念从业四年多,整理一个自己写过的智障代码合集

喝假酒系列


class wtf{
    // bala
private: 
    std::string_view name; 
};

// 点评:知道你学了c++17,也不能这么瞎胡闹吧
//(string_view 不拥有string 内容的指针)
void func(){
    std::lock_guard<mutex> a(lock);
    {
        // critical section
    }
    // 2000 行其他逻辑
}

// 点评:很困惑,你是想锁哪部分?
//(a的声明周期“本应该”与critical section一致,但是……)
void func(ptr* a){
    unique_ptr<ptr> a_ptr{a};
    // bala
}
auto d = std::make_unique<ptr>();
func(d.get()); 

// 点评:很常见:写func的和用func的不是一个人,所以没有事先约定谁有所有权。
// 什么?是同一个人?假酒害人。 
void func(){
auto d = std::make_unique<ptr>();

boost::fibers::fiber([&]() {
    d->foo();
 }).detach();
}

// 点评:嗯,这种不太明显的生命周期问题还真的是令人困(抓)惑(狂)

时差没倒好篇

void func(const bool & condition);

// 点评:直接copy bool 可能都比传引用要快
Ptr* func(){
    Ptr object{};
    return &object;
}

// 点评:你的别致很栈啊。
void func(){
    for(int thread_id = 0; thread_id< MAX_THREAD; ++thread_id){
       boost::fibers::fiber([&]() {
          log.info("thread id is %d", thread_id);
       }).detach();
     }
}

// 点评:你会收获很多很多 thread id 为MAX_THREAD 的日志

Fly Alone

原来电影里的都是真的

每年在拉斯维加斯都有一个展销会。我父亲以前是很少去的。自从我来美国了之后,这个展销会却成了为数不多的碰面机会。所以经常是今年我去拉斯维加斯,明年我父亲来纽约。

今年又轮到我去维加斯了。因为之前那次去维加斯没看成什么好的秀。于是这次我提前订了太阳马戏团的KÁ,订好了宾馆租好了车,准备当一次尽职地陪+翻译。

奈何从纽约直飞维加斯的飞机不多,并且为了在他们落地之前我先料理好一切事宜,于是我订了早上6点的机票。如果一切顺利,我会在上午9点左右落在Vegas,提了车子,等他们落地先接他们去吃顿好的,然后去宾馆休息下,晚上再去看个秀。完美。

于是我早上3:30左右起床,洗漱,然后4点多打车去了机场。强忍着困意领了登机牌,过了安检,在候机厅等了半个小时,等到5点多的时候开始有人排队登机了。这里要吐槽一下纽瓦克机场:我的登机牌上写的是Gate 41,然后 1.Gate 41那里没有显示器显示登机航班,2. 他根本没有Gate 41,只有41A和41B,而且是紧挨着的,两边的队伍都连在一起了。当时考虑到这个时间起飞的飞机应该就是我要乘的航班,于是强忍着困意站起来排队。到了我的时候,机组扫了我的登机牌,并挥手让我进去。于是我就进了飞往迈阿密的航班。

本来到这里依然是可以发现我做错了航班的,但是一来我太困了,上飞机就开始睡;二来我本该坐的航班的座位在去往迈阿密的航班上竟然是空的。于是我上机倒头就睡,全程都没觉得有问题。甚至到飞机快落地的时候听机组说local time是9:02 —— 我“应该”坐的那班航班是9:10落地。当时我还庆幸居然提前了8分钟落地。

落地之后我就懵了——怎么是welcome to Florida? 然后急忙忙的开始联系重新订票,联系宾馆late checkin,最担心的是我那语言不通的老父亲要在Vegas等我8个小时(后来远程协助打到了车,入住了宾馆,KA的票也退掉了)。在餐厅的时候还和服务生卖了个惨,她听闻我要在机场等8个小时,送了我一瓶苏打水(同样的招数在想升舱的时候被识破了,并没有任何同情价/折扣)。

最后统计一下,整个损失是:

  • 吃了两顿机场餐(尽管有21块钱的代金券,依然自己掏了20块)
  • 比预期晚了11个小时到Vegas
  • KA秀没看成

整个事件中学到的教训是:

  • 再困也要问一嘴。。。。工作人员都太不靠谱
  • 不要买早上9点以前的机票
  • 随身带switch是我做的最正确的决定。

另:坐上飞往Vegas的航班,点开娱乐系统看电影推荐,前三个里面有两部是home alone。sigh.