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

2020-11-10 17:33:40 +08:00
 zuiluo
最近几个月偶尔会写写 C++,基本上都是因为某个功能执行效率太差,我就把原来的代码改写到 C++上,然后再去调用这一模块功能。

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


比如说代码里面存在

vector<vector<vector

指针飞来飞去

在一个文件写到死


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

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

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

C++不是主力语言的话。。。没必要补,feature 太多,要填的坑数不过来。
thefack
2020-11-10 23:18:30 +08:00
可以尝试 Golang 。。
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++,恐怕分身乏术呀。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723668

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX