谨以这篇文字,送给喜欢编程的小伙伴,也是说给曾经的自己,希望能真心帮助到大家。
一、为什么想精进下编程实战能力
1、1 提升解决问题能力
作为程序员,大家都想提升自身编程能力,编程能力从表象看编程就是敲一行行的代码,但背后是通过逻辑思维来解决一个个的问题。具体可拆分成第1步、第2步、第3步、第4步分别做什么。
手敲一行行代码是简单的,想解决实实在在的问题并不容易;
把编程看成一门手艺的话,类似开车,就是需要多训练,熟悉在不同场景下如何开发,比如雨天、雾天、白天、黑天、路况复杂等。
世间万事万物,你把它想简单,它就简单;你把它想复杂,它就复杂。
训练手艺(不管是编程还是开车)的最朴实无华的方式就是多练、多练、多练,像卖油翁的那句“我亦无他,惟手熟尔”。
1、2 训练量不够,难以引起质变
大学期间的编码训练,不管从代码量还是技术难度上都不足,训练量不够导致无法引起质变,更别谈理解设计模式和架构设计。
大学期间,很多人做的项目更多的是个玩具,当然也有很优秀的毕业设计项目,但终归是少数的。
所以加大项目实战,提升代码训练量才是重中之重,代码量有了,才能更好的理解设计模式和架构思维,而后者是技术人员的必修课。
1、3 适当造轮子,加深对领域知识的理解
对于公司项目是否造轮子,我的态度如下:
既要有造轮子的能力,更有不造轮子的觉悟,优先保证公司项目的稳定性以及顺利交付。
多么深刻的领悟,哈哈。
同种类型的开源项目,如果你不满足于当一个CURD小子,多造轮子或参与开源是不错的途径,能帮助你加深对知识的理解程度。
1、4 养成搭建中大型框架的核心能力
在公司进行功能开发,基本上都是在已有框架上进行增删改查,无法有效锻炼到架构设计能力,自己造轮子的好处是可以摸一遍自己工作领域内的框架是如何进行架构设计的,基于何种业务场景,路只有自己走过一遍,才明白原来是这么一回事。
二、扫除新手的编程心魔
以下是新手程序员在编程过程中可能会遇到的问题:
2、1 看书上思路会写代码,但写不出代码
编程是脑力劳动,和数学是一样的,多动脑,想好编程思路(每一步做什么)后,编写代码就是将之前的每一步操作翻译成不同语言的代码而已。
写不出来的原因是什么?
1)语法不熟悉
2)没想清楚思路
3)过分的模仿别人的代码和别人的思路,没有搞清楚背后的逻辑
4)害怕自己写的代码有问题,所以原样照抄视频中的代码,为了就是减少错误发生,殊不知犯错本身也是一种进步。
5)犯错会更好的暴露自身薄弱环节,有助于更好的提升自己。
很多看视频的小伙伴向我反馈自己是看视频学编程,跟着视频的步骤知道如何敲代码,脱离视频后不知道如何写代码,这算是种很普遍的现象,曾经我也遇到过这个问题,花了很长时间才克服这个毛病。
2、2 写代码总报错,9行代码10个error
首先,代码出错是常态,放平心态。
不要觉得自己菜,每个人都是从犯错中吸取教训,然后代码才写的越来越好。做事情,从不会做-》会做-》做好,之间会犯各种各样的错误,没有谁能随随便便的成功,解决错误的次数多了,正好可以锻炼下自己解决bug的能力,哈哈。
其次,代码出错有助于提升技术
你可能注意到,代码写错的地方,恰好是自己的薄弱环节,比如对语言的语法特性的误解,抑或是思路不够清晰导致代码有逻辑问题,抑或是考虑不周全导致的某些场景崩溃的问题等。
错误的代码部分刚好能暴露自己的薄弱点,进而花时间来加强。(类似高中的错题本,有针对性的修复错题)
最后,脑袋里想清楚流程再写代码
如果脑袋里对业务的理解模模糊糊的,这时候写出来的代码也会杂乱无章,可维护性变差。
2、3 一次写不出完美的代码
人人都追求能写出高内聚、低耦合、扩展性好、可维护性好的代码,但是冰冻三尺非一日之寒。
写代码是个不断循环迭代的过程:
1、写代码,自己觉得不错
2、隔段时间review,感觉代码垃圾
3、优化垃圾代码
4、不断重复1-3步骤
在成为高手之前,一次性写出完美的代码几乎不可能。
刚哥倒是可以代码编写后一次编译全部通过,这个需要时间去磨炼,对于个人要求比较高。
2、4 没有捷径,唯有苦练
多写代码
大量的写代码
测试写好的代码
改bug
锻炼解决代码各种问题的能力
没有捷径可走,唯有苦练:
多写代码
多看好的开源代码
多去思考代码是否可优化
多总结写好代码的讨论和方法论
三、以何种方式来提升编程能力
3、1 编程实战平台
在b战上直播自己写代码,给自己动力的同事,也能反复通过视频来观看编码过程中的错误之处,然后不断的改进和进步。
做出更好的教程,帮助像我一样的初学者。
市面上在线编程实战平台也挺多的:
Codewars - Achieve mastery through coding practice and developer mentorship
Coding Games and Programming Challenges to Code Better
https://www.udemy.com/course/tcpipstack_b/
通过这些编程在线网站,相信小伙伴能更好的提升编程能力。
3、2 C++项目编程实战方法
采用刚哥教我的简单方法(适用于C++语言):
1、先将项目的大致框架搭建起来
模块设计
模块划分
模块间通信
类设计
业务划分的主体类有哪些?
类的成员函数和数据有哪些?函数原型以及数据类型分别是什么?
多个类可抽离公共类?
接口设计
对外接口有哪些?
2、分而治之,逐个攻破
完善类的成员函数
完善类的数据成员
完善类和类的功能
完善类与类的关系
完善模块各个类
完善模块间的通信关系
想好类和类之间、模块和模块之间的通信接口
3、细化功能函数
将函数要实现的功能拆解为一个个具体的步骤,先以注释的方式来编写:
第一步、xxxx
第二步、yyyy
第三步、zzzz
。。。。。。
然后针对注释来进行代码翻译
最后,当全部翻译完注释,代码也就写完了。
整个函数的代码写起来一气呵成,非常痛快。
总结:
有时候我们想找个做事的捷径,而发现踏踏实实的做事就是做好的捷径。