您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    顺序员提高阅读代码才能的几个办法
    时间:2021-08-16 12:24 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    顺序员提高阅读代码才能的几个办法

    有小同伴问:如何能快速提升编程才能?这觉得永远没有正确答案,每团体都有本人的套路,明天就来聊聊我对这个成绩的看法:

    学会高效读代码,就是一个不错的办法。阅读代码,能够和写代码一样重要! 为什么要会读代码?

    思索这样一些场景:

    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)