大家好,今天小编关注到一个比较有意思的话题,就是关于怎样学习linux源码外包的问题,于是小编就整理了1个相关介绍怎样学习linux源码外包的解答,让我们一起看看吧。
如何高效地增强编程(特别是debug)能力?
提高debug能力,不外乎做好以下两点:
1、善用工具
工欲善其事必先利其器,提高debug能力最快的办法,主流的debug工具一定要学会使用。这些功能的发明就是为了帮助程序员debug的。使用ide的调试功能、gdb等工具来调试都是可以的,把基本的断点功能、watch检测变量功能、查看调用堆栈功能都了解学习下。手里掌握的方法越多,这些都是能够节省调试时间的好帮手。
从个人的学习经历来讲,ide的调试器比gdb等命令行工具容易上手些,个人建议先会使用ide来调试,从断点、单步调试、单行调试功能开始。
如果是刚学代码不久,连程序的运行或者觉得递归这种想起来很难很头疼的话,我在此建议个比较强大好用的工具,简直就是代码扫描仪。Python Tutor,这个工具是国外教授写的,用来给学生入门编程所使用,不要给名字骗了,不光Python,主流的编程语言比如java, C,c++都是能够支持的。使用这样的工具后,代码怎么跑的你都能看的一清二楚。
2、熟能生巧
这问题很大程度上是个开放性的问题,行业界基本还没有出现统一的答案。
最关键的是注意模块化。把程序分成小的功能模块,每个模块要能单独拿出来测试。模块间注意去掉循环依赖,这样所有模块会自然分层,遇到问题的时候可以一层一层往下调试。
用IDE和debugger其实有很大功能局限性,更好用的办法往往是打印log分析log。printf基本是万能的。
训练可以这样。写一个稍微有点规模的项目,大于2000行代码的那种,然后尝试把它分成小模块,每个模块一个文件,每个文件不超过300行(或者500行,有的语言可能本身更啰嗦一点),每行不超过80个字符。每个模块尽量只做一件小事情。注意让模块之间没有循环依赖。给每个模块写单元测试。然后,写出来这个project之后,把模块之间的依赖关系画个图(像这个:Go standard library D*** visualization),拿着这个图给你的一个(同样高数没有问题的)朋友看,让他参照着这个图去读你的源代码,看他能不能读懂你的代码要做什么,是怎么做的。如果他能读懂,说明你模块分得非常好。如果他读不懂,可以具体看他读哪个模块读不懂了,研究一下有没有更好的模块化方式或者写法。
如果你的所有代码都能模块化成这个水平,那么你的代码质量(尤其是在代码可读性和可维护性上)已经是世界一流的了。真心的。
数据结构的优良设计可以说占到好的程序设计因素的一半,许多人重视编程的工具、语言和算法,经常忽视程序里的数据结构,甚至许多人都没有数据结构设计的概念,常常遇到没有编写过的程序不知道怎么编、怎么设计,不知道从何下手,其实多数是因为没有设计数据结构的概念,尤其是用c语言或者C++语言编写的嵌入式软件及硬件底层类型的软件。软件常常是现实世界的模型,数据结构更是现实世界的映射,许多时候数据结构更是现实世界的抽象,编程是对数据的加工处理,对于数据来说,好的的数据结构设计能够使程序对数据的加工处理既目标明确清晰、又可使处理逻辑清晰,没有数据结构设计的程序则会导致程序处理数据逻辑不清、目标不明。
二、多阅读优秀的开源项目代码
能力是需要逐步培养和锻炼的,编程能力更是,为了提高编程能力,可以深入和广泛越多成熟软件的源代码,学习优秀项目的软件设计架构和编程方法,进而提高自己的编程能力。比如可以阅读linux的源代码、或者是Java、dotnet框架的源代码,或者是nginx的源代码等等,通过对这些源代码的研究和学习,一定会高效的提高编程能力,例如以下[_a***_]:
到此,以上就是小编对于怎样学习linux源码外包的问题就介绍到这了,希望介绍关于怎样学习linux源码外包的1点解答对大家有用。