3000字8个角度细说怎么提高代码编程能力 导师再也不骂我菜鸡
“怎么提高代码编程能力”关于这个问题,学姐找遍了百度、Google、知乎、B站看了一圈,我发现很多大佬给的建议第一步都是——读别人的代码,锻炼计算思维。
学姐也是这样觉得,毕竟学姐刚开始python入门的时候报了一个班,这个老师技术很牛逼,也是直接上项目带着讲,从0开始,每个知识点都会有一个实战案例配套,按理说这样的课程已经比市面上大部分的课程良心很多了。但是,这个老师有口音,一个小时的课,学姐要学三个小时,然后就沦落到python从入门到放弃了/(ㄒoㄒ)/~~。
后来也是遍访名医(利用互联网找解决办法),找到了良方——提高写代码的能力首先要提高读代码的能力。

读什么样的代码
读你感兴趣的,和你现在所学语言匹配的代码,或者根据你现在所学的知识去选择相关的项目,因为大部分同学都是因为学习上要用到才开始敲代码的。
这里学姐要提醒一句,如果你不喜欢这个专业(有同学是被调剂了的),那么请你找到兴趣点,比如:喜欢做词云,喜欢CV,喜欢研究文本处理,语音识别等等。要不然就算你有超强的自制力面对枯燥的代码,坚持下来的可能性很小。
这些代码哪里找?
你读论文的时候有的会附带代码,或者类似github的网站上也有很多开源的项目,找到你需要的方向,或者感兴趣的项目去读代码。请善于利用互联网,实在不行搭个梯子找找墙外面的资源。
如果是去开源网站上找项目,最好是找到一些大牛的项目去看,原因很简单,大牛的代码规范程度会更高,从看代码这里就开始培养规范代码的好习惯。
(这里不是说不是大牛的就不规范哈!而是大牛的经验更多,不容易带个人习惯。)

怎么读代码?
不要上来就找大项目看,刚开始整体把控能力不强,看大项目知识点太多,一下理解这么多知识点的时候,会导致你会有东一榔头西一棒槌的感受,当前的能力还不足以把这些知识点完整的串联起来,对提高代码能力没有任何帮助。
所以读代码可以先从小项目开始。
如果直接上来看别人的代码看不懂,怎么办?那就先去看出了代码以外的东西,比如项目的功能,利用了什么技术,项目的详细说明,以及推荐的书,或者引用的论文。这些都可以帮你理解这个项目的作用。
通过这些辅助性内容,让你知道这个项目的基本情况,帮助你在脑海里面形成一个对这个项目的框架,接下来再去研究项目的细节。这就相当于你的设计图,要照着设计图去施工每一个细节。
接着你就对照着说明,或者是你对这个项目的初步了解,对每一个层级的文件及文件夹进行功能注释。Github上面的很多项目基本都已经有了注释,但是你要有你自己的理解,不能照着抄。

在读代码的时候,最好是找出比如文件中包含的、需要的、加载的其他的相关文件,根据阅读说明书得知的功能,找到每一个功能代码主题的位置,还有是否用过命名空间等等。
同时,最好能够加上你自己的理解,就是一行一行在别人的代码上添加自己的注释。为什么这样做?因为这个方法能让你了解到这个问题“通常”的解决方法。
熟读唐诗三百首不会作诗也会吟呐!兄弟们!

如果你觉得自己老厉害了,上来就看大项目,那你就把大项目分成小模块来看,找出每个模块,研究每个模块的任务。
精确到函数的作用,明确输入输出对象,向上找出使用该函数的原因,向下找出都有谁调用了这个函数,有了什么结果,这个结果在整个项目里面能做什么。
这一步是理解程序的实现,目的是理清整个项目的先后次序,为接下来敲代码打基础。
敲代码
明确项目功能,了解项目大致情况,弄清楚这部分代码,梳理出来这个模块的任务脉络后,就按着梳理出来的思路和项目文件的先后次序,照着每一块实现代码边看边敲,这部分是实战项目思路。
接着删掉代码,或者新建项目,自己按照刚刚规划好的上下游思路尝试着敲,这次不能看原来的代码了。到哪里卡顿了,实在想不起来了再去看,这样重复一直到可以完全不看,自己敲出代码而且不报错为止。
这里给大家说一下,不要用记忆的方法死记住每段代码,而是想接下来要实现什么,用什么方法实现,调用什么函数。
而且不要一次性敲完一整个文件的代码,再运行,而是敲一段调试一下,否则等你敲完了,发现有问题,你就要debug整个文档的代码。

比如你写了一段正则,就马上测试一下这段正则能不能跑的通,是否能够正常使用,如果是写完了出现了报错,你可能需要半个小时才能找到这个正则的错误,浪费时间挑战心态。
但是调试是你必须要掌握的一个技能,很多同学不愿意调试,报错了就想找个人问问为什么这样报错,这个报错是怎么回事。就算你找到人问了,他的方法也是查找报错提示是什么,查看代码,然后设置断点进行debug调试。(如果你不会debug可以找个入门视频看一下)

不同方式反复敲代码,这一步是为了让你自整理对该项目运用知识点的理解,不断的调整项目在脑海中的架构,锻炼你敲代码的思路。下次你自己做自己的项目的时候你就知道我想要实现什么样的效果,我以前读的代码中用了什么方法,那现在就可以用这个方法实现。
或者当你在完成一个阶段的时候,可以举一反三,将某一段代码按照自己的想法改动一下某些参数,看看有什么效果。又或者你已经学习了很多理论知识,想要用另一种方式尝试能不能实现出相同的结果。
在你敲代码的时候要想着为什么要用这个库,声明什么函数,什么时候用这个函数。上一段代码对下一段代码的作用是什么,这一段代码对下面的代码起什么作用,对全局起什么作用。这样的思路下,重复多次,如果你还不能提高,你过来,我手把手教你。

把这句话打印出来贴在电脑上:多看,多想,多动手,眼到,心到,手到。
我还贴心的给你做了个电脑屏保,拿走不谢!

读什么书
不是我崇洋媚外哈~关于读书大部分还是国外的好些。
但是吧!刚入门的你,先看国内大佬写的书真的够用了,想要读国外的书,也要锻炼的差不多了再去读,要不然去看书,那就是看天书。
读书是敲代码的前提,而且在敲代码之前你要了解算法和数据结构。把基础打好,外长高楼平地起,一切全都看地基,基础课程就是你的地基,否则,就算你知道了上面的方法你也学不精。
不同的编程语言有不同的入门书籍,善于利用互联网多搜索一下就找到了。算法书籍以前推过,这里不过多赘述。

做题&打比赛
做题是必不可少的,前提是你要先掌握理论基础(读书),因为很多题在书中都有讲到,但是小白上来先读书,先不要刷题,先读几本书,把书上的代码都实现,举一反三的练一练;然后按照上面的方法去读大佬的代码,起码能够理解几个小项目之后再去刷题。
刷题平台我再说一遍:
https://leetcode-cn.com/
https://www.nowcoder.com/
https://www.lema.fun/question-banks
https://github.com/syzoj
小白的选择:
https://pintia.cn/problem-sets?tab=0
关于打比赛
打比赛对锻炼代码能力是明显效果的,但是这建立在你已经能够自己有了计算思维,架构能力的基础之上。没有这些做铺垫,就算是参加初学者的比赛,也是不行的。比赛能够让你发现自己更多的不足,但是直接上来就比赛会打击你的积极性。
Kaggle,天池,华为,科大讯飞的比赛都可以参加的。
保持心态
最后,大家别把编程当作一门技术,你把它当成工具,实现你想法的工具,这样你在敲代码的时候心态就不那么容易崩掉。
建议在最初学编程语言的时候,就用它做一个小游戏来激发自己的兴趣,从迭代产品的角度,促使自己去学习更多的知识,保持自己的学习兴趣。
也可以去借助比赛,从每一次提高分数方面,保持持续学习的动力。
总结
先看书,实现书中的代码,打好数学基础,了解算法基础;然后读大佬的项目;接着反复敲一个项目的代码,直到自己能够独立实现这个项目。再去刷题打比赛。
如果你有什么问题,关注公众号,点击菜单“联系学姐”加学姐好友即可。

参考文档:
https://www.zhihu.com/question/22031785
(@阿里云云栖号,@陈树义,@石博天,@桃花岛主)
http://web.archive.org/web/20100530025343/http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding
免责声明:所载内容来源整理自互联网,仅供参考。转载稿件版权归原作者和机构所有,如有侵权,请联系我们删除。