写 C++五年了,一直流连于各大厂拧螺丝,每个项目里都是上百号人写了十几年以上的代码,在里面修各种离奇古怪的 bug 。
今天被同事请教一个 MFC 的界面问题,很小的一个 GUI 程序,以为 3 分钟搞定,结果彻底蒙圈了,完全不了解界面那一套,文档都要从绪论开始开。
感觉自己的代码之路走偏了,完全沦为了大厂打工仔,让我设计开发一款新的桌面应用,该怎么设计框架,设计模块,脑子就一片空白。学那么多 C++的八股知识,看似学到了,实际上无非就是茴字的四种写法。不知道有没有人跟我有同样的困扰,想请问大家该怎么破这个局。
1
flyhelan 141 天前
你不是一个人。
|
2
tool2dx 141 天前
C++开源工程很多啊,多看看老外怎么写的,多抄抄不就可以了。
比如 unreal ,比如 webkit ,比如 chrome ,编译一次都够久了,都是巨无霸。 |
3
ajaxgoldfish 141 天前
我算不算是相反的,主 cpp ,副 Java ,react ,vue 。cpp 只用框架,能不造轮子就不造,现在导致代码的功底很薄弱,很少有一次编过,经常犯低级错误将 cpp 的内存机制和 Java 的那一套混淆,导致代码很不规范,之前埋的坑经常爆发。
|
4
liprais 141 天前
隔行如隔山,这有啥奇怪的
|
5
jjx 141 天前 8
没啥
有了工程能力 你又会感叹没有设计能力的 有了设计能力,可能又没有销售能力 人不到全才和完美 |
6
wanmyj OP @ajaxgoldfish 真的是完全相反。我现在修的 C++的 bug ,基本都是对象没有正确释放,参数类型强转出错,数据计算精度错误,环境变量错误,反正都是很细节的东西。我倒是很羡慕你的状态,能自己独立挑起来项目大梁,修 bug 改代码就招一两个我这种老学究就完事了
|
7
AoEiuV020JP 141 天前 1
也是, 想自己写点小东西就各种纠结,框架搭不起来,总觉得这样也不好那样也不好,找找教程或者其他开源项目吧,也套不上, 自以为这点小东西实现起来还是没问题的, 实际上纠结半天一行代码都没写,
|
8
szboy 141 天前
深度和广度都需要发展
|
9
liuzhedash 141 天前 1
正常,因为之前你关注的点都是细节的,具体的问题,而没有从 0 开始做一个完整应用的经验
好比之前你是个小兵,打了几年仗会用 ak47 和火箭筒了,现在让你当连长指挥几个排,武器经验仍然有用,但是更重要的是思考怎么把各个作战单位组织起来,打赢一场战斗 其实,这也是各个大厂最希望员工达到的状态,完美的标准螺丝钉,不但随时可以替换,而且你离开现在的岗位技能就没用了 破局的方法也不复杂,就是开始从 0 开始制作一个应用,比如从空白工程开始写一个 Windows 窗口程序 |
10
mcfog 141 天前
这不是正常的吗,你找个平均的 spring boot 搬砖师傅来请教个安卓 GUI 问题,也是懵逼的啊
工作这么多年还觉得用同一个语言就是同一个工种,这才是大问题吧 |
11
jufeng 141 天前 via Android
1. 软考证书考试走一遍,可以补全理论知识
2. 主动申请承接项目的各个环节的工作参与,即使是讨论群组,会议旁听也可以 3. 主动跟踪支撑项目全流程从需求端到交付全流程,这个很费精力,还得领导能给机会 |
12
jufeng 141 天前 via Android 1
这两年最大的体会,就是软件工程首先是个工程,最终目的就是输出一个交付出去,受用户受众认可的软件产品。软件和土木其实没啥区别,只是实现手段和产品形态不一样。
|
13
xing7673 141 天前
直接点说,放弃 c++,多接触其他语言框架。
c++做工程个人单打独斗就是时间黑洞。 用其他语言做跳板多接触业内主流技术框架开拓视野,渐渐就能用这些积木搭建你想要的玩具了。 当然不是说你主业放弃,因为按照你的描述来看,你主业的 c++在企业里还挺有含金量。 业余时间平均每天有 1 个小时左右就行 |
14
iOCZS 141 天前
MFC 本就是有点年头的东西了,设计理念跟 WPF 就差很多了
|
15
MrVito 141 天前
问题关键在于,MFC 这玩意和你平时用的 C++,完全就是两个东西呀。就像 10 楼回复的那样,同一个语言,本来就可能差距很大。java 框架更多,你让平时用 A 框架的人去修复 B 框架的问题,肯定不可能的。
|
16
levelworm 141 天前 via Android
得自己写项目。另外 MFC 这种东西,可能 ChatGPT 会有帮助。
|
17
xuelang 141 天前 2
这时候需要 ChatGPT 或者 Claude 了,哈哈,本后台写 c++的,用 Claude 快速撸了一个 nextjs 的 web 站 https://gallery.selfboot.cn/
有算法演示,web 游戏,和工具,代码开源。 看 ai 写,慢慢迭代,也就慢慢懂点前端了 |
18
jones2000 141 天前
c++ 5 年,只能算刚刚入门。MFC 可以看<深入浅出 MFC>侯捷写的, 看完自己用 win32 写一套类似的 MFC 框架,写完基本就懂了。 少用开源,尽量都自己写。
|
19
GrayXu 140 天前
不懂 MFC 这种古董不是很正常嘛。。
|
20
xuanwu 140 天前
可以在 gitee 创立一个开源项目,解决工作生活中碰到的一个小问题。
然后用悬赏功能新建任务,锻炼项目规划、与新开发者交流、任务进度管理、测试验收、预算编排等等能力。 |
21
vitovan 140 天前
很羡慕楼主啊,现在我写个 C 的字符串拼接都要去查文档,最后还整溢出了。
|
22
MozzieW 140 天前
最近杂活干多了,也感觉自己不会写代码了(从头设计、实现一个功能系统),翻出了《代码大全》,常看常新。
我理解这是一个思维的问题,Bug 改多了,脑子里多解决问题的思路都是找到问题点,然后思考怎么调整代码逻辑,最后解决。 但是要搭建一个新的,第一步是要了解需求,分解模块,逐步实现,这些也是要思考的。平时看代码很容易看出模块,但是的确太久没主动思考怎么根据需求划分模块了。 |
23
zsc8917zsc 140 天前
打开 gpt 让他从创建一个项目开始一步一步的教你
|
24
originals 140 天前 1
同 c++五年,一开始也是修 bug ,然后到后面自己负责项目就开始设计架构模块啥的,不过这种机会感觉大厂很少吧,毕竟分工太细人也多,我朋友也是大厂拧螺丝,不过给的钱是真的多哈哈哈
|
25
lxh1983 140 天前 via iPhone
你现在这就是标准的码农啊,要想做工头,就看看工头是咋干活的呗
|
26
LwZiye 140 天前
多看,多思考,多重构
|
27
magiclx 140 天前 1
MFC 是对 Win32 API / Windows SDK 的封装,目的是让你更方便使用 API ,里面用了一些宏和注释的约定,得按它设计思路填写代码。GUI 的东西还不太复杂,复杂的是一些稍微复杂的东西和操作系统设计搅到一起,比如消息机制、事件循环、进程、内存、线程、异常处理,所以现在除非必要,否则界面都用类 Web 的 HTML 或 XML 来表达了,MFC 是微软自己也放弃的,很少场景一定要用这个老古董,大家用的多的不都是 DirectUI 或一些第三方控件吗。你说到的工程能力,不知是不是指一个项目从头开始搭建工程,我想这里的难度分为两部分,一是 GUI 你不熟,其次是从需求到设计你不会转化。对于前者,可以先了解现在主流的 GUI ,然后选择一种满足需求的主流框架,可以询问 AI ,多问几轮,也就能了解了;而从需求到设计是从技术视角到业务视角的转化,本身还是一件事,只不过角度不同。前者吃学习能力,你都辗转大厂了,应该很强,后者吃经验,只能多看多思考,事上练得,急不来。能快速提升功力的,那就找行业内的人指导指导,说不定一点就通。
|
28
qiyilai 140 天前
所有框架,特别是大而全那种,都是屏蔽了很多实现过程和细节,一开始只能按照它的规则去填充,后面接触多了,像一些多年的项目也是一样的,短期也搞不清全部流程,大多数情况下一个框架明白了其他都是类似的
|
29
LuckyPocketWatch 140 天前
初学 C++,看完<c++ primer plus>,后觉得自己只会基本语法,于是学了 Qt
学完 Qt 。发现算法基本不会,于是学了<算法导论>和<数据结构> 学完算法。发现对实现不了解,于是学了<STL 码源解析> 学完 STL 实现。发现不会设计,于是学了<设计模式> 学完了设计模式,发现对编译一无所知,于是学了<编译原理> 学完了编译原理,发现缺乏数据库至少,于是学了<数据库原理> 学完了数据库,发现缺少源代码阅读,于是阅读 levelDB 的源代码 学完了源代码,发现 C++标准以及到了 C++20 甚至 c++23 了,于是赶紧开始学习 C++20 标准,特别四大组件 ....... 以上仅限 C++ 但回过头来,我现在就靠 c++基本语法和 Qt 吃饭,就目前而言,能用到的也就 C++语法和 Qt 了 能用到 == (工作用到 || 面试被问到) |
30
wanmyj OP @LuckyPocketWatch 敢问兄台的工龄几何?这里面好几本书我都看了个大概,都没能耐心看完
|