有小同伴问:如何能快速提升编程才能?这觉得永远没有正确答案,每团体都有本人的套路,明天就来聊聊我对这个成绩的看法:
学会高效读代码,就是一个不错的办法。阅读代码,能够和写代码一样重要! 为什么要会读代码?思索这样一些场景:
Case 1: 你还在读书,照着教程,照着例子,学习编程。刚末尾,大约率是先读别人的代码,了解别人的代码,而非一下去,就末尾写。
这是我YY的一个学写代码的学习模型,所以读了,了解了,在本人就可以发扬了,然后书本上、别人的知识,就流进了本人的脑瓜了。
Case 2: 一个职场新人,一进公司,就参加一个项目组,那项目代码真是海了去了!然后老大能够给你一个小小的活,在现有基础上,添加一个小功用。项目阅历少的童鞋,一下就傻眼了,特么的,这代码这么多行,文件几百上千!该从何入手呢?别说改了,看都看不懂!完了,试用期是不是就要被干掉?!
Case 3 : 你进了一个小公司,技术管理混乱,前任已闪人,你授命接任一个一坨翔一样的项目,那代码写的真是云里雾里,工期又紧,老板又逼着出货,怎样办?闪人?可是下家会更好么?跳槽往往是从一个坑里,跳到另一个坑里。所以读吧,总是要读的。。。
Case n: ......
学校往往教授的是如何写代码,能够从没有教如何读代码。
但是,理想很饱满,理想很骨感!任务中,你写代码的时间能够只占任务时间很少很少的一部分,大部分时间你能够都是在阅读已有的代码,当然除非这个项目从0到1都是你一团体干,可即使是本人写代码,也是渐进增长、不断迭代的,也需求不断重复阅读本人写的代码。
再者,编程与写文章,有异曲同工之处。编程与写作相似之处,都是用言语表达写作者的想法。
关于如何提升写作,古人曾讲: 熟读唐诗三百首,不会作诗也会吟 。回想先生时代,教员也常说: 读书破万卷,下笔如有神! 强调写作需求少量阅读,读的多了,写作才能也会相应提升。阅读之于写作,相反相成,互为促进。
那么少量阅读别人的代码,也能提升本人的编程水平。阅读代码,团体觉得会有这样些益处:
博采众长优秀的源码,就如传世佳作一样,值得重复揣摩,细细品味。其编写技巧、设计范式、架构思想,都具有极大的学习自创价值。比如一些优秀的开源项目:Linux内核、lwIP、u-boot等等。这些作品都聚集了全球优秀顶级顺序员的思想智慧。都是十分优秀的作品,广为传达,广为运用。假设能花些时间去阅读了解一下其代码,一定是大有裨益的。
正如牛顿所说: 假设我能比别人看的更远,只由于我站在巨人的肩上。
处置难题编程生涯中,总会遇到一些感动一筹莫展的场景。github,搜索都已无能为力的时分。假设说还没遇到,那一定是机缘未到~
比如做Linux编程的时分,遇到某个API出错,或许在网上查找半天,都找不到答案。真实找不到答案了,尝试读一读内核底层相关代码,有时分就能发现成绩的缘由。
开阔视野很多时分,日常任务内容或许只是很小的范围,修复一些小的bug,修正一些小的功用等。假设只专注这些小的点,团体成长一定会遭到局限。
假设能擅长发现一些新的感兴味的范围,并去阅读相关的代码,则一定会提升本人的编程才能的。
所以为什么要读代码呢?
找bug
review别人的代码
学习
维护等
如何阅读代码呢?这里聊聊我的一些体会,也未必都对,也未必适宜其他的冤家。分享以作交流,如有其他想法,也欢迎大家留言交流。
先粗后细我普通拿到一份别人的代码,会先去找这个项目的入口,先梳理个大约的头绪。如单片机顺序,普通会从下面几个角度先扫一遍:
main在哪里?
开了几个义务?
哪些是关键义务,主要功用链是怎样样的?
义务间如何协作的?义务的执行周期是如何放置的?
运用哪些硬件外设?
运用了哪些中缀?中缀与哪些义务发作了交互?
从软件角度看,大致有哪些子系统?
能否有关键算法?
能否运用开源组件?
......
先不关心很细的函数详细怎样写,数据结构是如何设计的?这样,我大致能先有一个总体看法,然后在对本人感兴味的停止细读。当然假设是review别人的代码则就另当别论了。
假设是Linux运用顺序,或许C++运用顺序,我也大致采用差不多的思绪,先读个大约,然后再细读。比如对一个Linux运用顺序,会先了解这些方面的概要信息:
入口在哪个文件?普通都是main函数。
能否支持命令行传启动参数?
能否是守护进程?
开了哪些线程?
大致有哪些子系统?
运用了哪些开源组件?
能否运用驱动,能否有通讯等?
......
假设项目采用cmake或许makefile停止组织的,那么先阅读下makefile也会是了解项目概要信息的一个比较好的切入点。
善做笔记在阅读代码的概要信息的时分,我比较喜欢做做笔记,画画图。在阅读代码的时分,我比较喜欢先去研讨代码中的数据结构。数据结构往往会表现作者笼统成绩、对成绩建模的一些思绪,并运用UML图画出来,刚末尾能够都不去看每个函数是怎样完成的,只关心与这些数据结构相关有哪些函数以及数据结构间关系。
“Bad programmers worry about the code. Good programmers worry about data structures and their relationships.”
— Linus Torvalds
(责任编辑:admin)