V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zuiluo
V2EX  ›  C++

感觉自己写出来的 C++ 很 bullshit, 如何改进

  •  
  •   zuiluo · 2020-11-10 17:33:40 +08:00 · 4180 次点击
    这是一个创建于 1506 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近几个月偶尔会写写 C++,基本上都是因为某个功能执行效率太差,我就把原来的代码改写到 C++上,然后再去调用这一模块功能。

    对 C++基本一窍不通下的情况去写 C++。然后写出来的代码,感觉一言难尽。。。。


    比如说代码里面存在

    vector<vector<vector

    指针飞来飞去

    在一个文件写到死


    .....
    26 条回复    2021-04-09 17:18:40 +08:00
    imjamespond
        1
    imjamespond  
       2020-11-10 17:40:24 +08:00
    boost 智能指针了解下, 学完 c++和 java 差不多了
    mokeyjay
        2
    mokeyjay  
       2020-11-10 17:40:44 +08:00
    既然你都知道自己“对 C++基本一窍不通”
    那改进方式当然是学好西加加啦
    MeatIndustry
        3
    MeatIndustry  
       2020-11-10 17:46:11 +08:00 via iPhone
    既然 lz 都知道不知道基础,那就学好基础啊,像你目前的症状,建议学习 C++里的 OO,重载,STL,智能指针,多个文件写和编译,甚至直接学习 C++20 的模块。充分运用现代 C++,不要写成了带 Class 的 C
    xcstream
        4
    xcstream  
       2020-11-10 17:49:16 +08:00
    那就用 c 吧
    CRVV
        5
    CRVV  
       2020-11-10 17:55:04 +08:00
    在一个文件写到死

    这个问题好办,学会手写 Makefile 就解决了。
    fgodt
        6
    fgodt  
       2020-11-10 17:55:53 +08:00
    那就用 c 吧
    whenov
        7
    whenov  
       2020-11-10 17:56:04 +08:00 via iPhone
    只改个别模块的话不如用纯 C
    newmlp
        8
    newmlp  
       2020-11-10 17:59:58 +08:00
    不会写还改
    elfive
        9
    elfive  
       2020-11-10 18:05:38 +08:00 via iPhone
    @imjamespond #1
    boost 不稳定,而且太臃肿。
    你说的智能指针这部分,早在 C++11 标准就吸收进来了,所以还不如啃 cpprefference 。
    elfive
        10
    elfive  
       2020-11-10 18:08:04 +08:00 via iPhone
    @elfive #9 C++的智能指针应该说是早就有了:auto_ptr,但是鉴于不推荐使用,且已经在 C++11 已经废弃,所以就不算它存在了。
    neoblackcap
        11
    neoblackcap  
       2020-11-10 18:15:01 +08:00
    cpp 没有想象中的难。cpp 是一个多范式语言。你选择一种复合你业务逻辑的范式去使用就好了
    你又要元编程,又要面向对象,那么显然都做不好。
    如果不是很熟,就当 cpp 是 c with class 用就好了。简单,没啥大问题。用好 RAII,内存泄漏也少了
    wevsty
        12
    wevsty  
       2020-11-10 18:30:28 +08:00
    @elfive
    auto_ptr 虽然废弃了,但是不是也对应的推出了 shared_ptr,unique_ptr,weak_ptr 这么一套么。
    使用智能指针仍然是现代 cpp 推荐的使用方法。

    另外 boost 虽然有一些槽点,但是并没有觉得不稳定。
    AlohaV2
        13
    AlohaV2  
       2020-11-10 18:57:26 +08:00
    多写写,多看看 github 上别人怎么写的就好了
    dilu
        14
    dilu  
       2020-11-10 19:06:16 +08:00
    要不试试 Rust ?
    zuiluo
        15
    zuiluo  
    OP
       2020-11-10 22:29:51 +08:00 via Android
    谢谢楼上各位的意见,主要原因还是基础差(可能根本没有),需要专门恶补一下 T_T
    xpol
        16
    xpol  
       2020-11-10 22:44:02 +08:00
    感觉你是不知道如何组织程序代码。
    找个有经验的人结对编程试试。
    zuiluo
        17
    zuiluo  
    OP
       2020-11-10 22:49:06 +08:00 via Android
    @xpol 也有一部分原因是,楼主本人日常只写 Js…
    edimetia3d
        18
    edimetia3d  
       2020-11-10 23:05:36 +08:00
    如果只是为了改进性能,偶尔用用,同样建议只用 C 相关的部分,随便写,能用即可,编译器会给你优化的很好。

    C++不是主力语言的话。。。没必要补,feature 太多,要填的坑数不过来。
    thefack
        19
    thefack  
       2020-11-10 23:18:30 +08:00
    可以尝试 Golang 。。
    levelworm
        20
    levelworm  
       2020-11-10 23:40:02 +08:00
    看看基本 C++/11 的教科书就可以了吧,推荐一下堆栈溢出的书单。
    https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

    另外赞同 18 楼 @edimetia3d 如非必要,不要用 C++,太复杂了,尤其是你这个需求还比较”高端“,本身 performance 就是比较搞的事情,再加上 C++,恐怕分身乏术呀。
    CrazyRundong
        21
    CrazyRundong  
       2020-11-10 23:43:25 +08:00
    [Effective Modern C++]( https://book.douban.com/subject/30178902/) 解君愁
    Wirbelwind
        22
    Wirbelwind  
       2020-11-11 03:44:46 +08:00
    https://www.bfilipek.com/

    看多一点别人的好写法
    不建议直接或者一直看书 因为现在对楼主的真正效果应该很少
    Loserzhu
        23
    Loserzhu  
       2020-11-11 09:27:44 +08:00
    @zuiluo 楼主是写 node ?还是写 cpp 编译成 wasm
    zuiluo
        24
    zuiluo  
    OP
       2020-11-11 09:29:47 +08:00
    @Loserzhu 写 node
    zuiluo
        25
    zuiluo  
    OP
       2020-11-11 09:31:17 +08:00
    @Wirbelwind 这个 blog 我喜欢 hhhh
    archxm
        26
    archxm  
       2021-04-09 17:18:40 +08:00
    告诉你一个秘密,cpp 代码写的漂亮的,一般都头发比较少。所以你想代码写漂亮,知道怎么做了吧?。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:22 · PVG 22:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.