首页 >头条 >一个开放性的问题探讨:程序员如何提高自己的编程技巧?

一个开放性的问题探讨:程序员如何提高自己的编程技巧?

伊谢尔伦
伊谢尔伦原创
2017-07-14 10:06:092019浏览

如何提高编程技巧?这问题很大程度上是个开放性的问题,IT行业界可能还没有出现统一的答案。每个人的学习和思考方式的差异,可能心中的答案都不径相同。下面就总结一些个人和网页中比较流行和大众的看法,为程序员和开发者提供一些意见和建议,为朋友们的编程学习之路提供帮助。

000.jpg

1. 计划

在编程开始之时,制定一个计划,拟定设计框架并实现它。并重复该操作。通过编写代码是学习代码的做好方式。你将在错误中不断的学习、提升自己,相比于看书完成项目更加有激励性同时也带你带来更多的乐趣。设计阶段就要想好各个模块、对象间的关系和交互,控制、数据如何流动等重要细节。如果有模式或者最佳实践可用,就用上。程序设计时,思路一定要清晰,首先就是层次结构要明确,这样才能弄清楚代码块之间的关系,使得代码块组成的结构也更趋于合理。做一件事,通常会分解为多个大步骤,每个大步骤又可以分解为多个小步骤,小步骤还可以继续分解,这样的结构就是层次结构。最终代码块所属的步骤在什么层上一定是清晰的,如果这个层次被打乱了,那么程序出现bug的概率极大。

2. 学习基础的编程语言

学习基础编程语言,它们能够帮助你理解基层架构。比如C语言,或是汇编语言。

学习计算机是如何执行程序,知道操作系统是如何运作的,这是程序员最基本的要求。如果你想好好了解基础语言,你可以阅读有关电脑结构,操作系统,嵌入式系统,驱动程序操作系统开发等等的书籍。

3. 书写代码

在博客上练习书写代码。你也可以在不同的问答网站上回答问题。同时你也可以写一些教程(DreamInCode)。在你编写代码时,你会想着要正确编写,为能够解释其中的问题和技术。编写代码还能够体现你的编程知识,提供你英语语法,这些在编程中都是很重要的。注重代码质量,不要写看着就乱糟糟的代码,不要用 asdf 这样的命名。

4. 加入一个开源项目

加入一个开源项目的优势是什么呢?你可以和其他人(在私人项目中独自工作过)一起工作,当遇到不熟悉的代码时,你将会去研究,学习理解一个不熟悉的代码库(这应该是很有挑战性的)

5. 学习如何阅读代码

一些大神们的回答都会提到多读源码,当然每个人还会列出其他的一些内容,读源码是十分核心的提升编程能力的方法,编程能力本身是核心。等编程能力上去了,读代码的时候读到不对的地方就会感到硌牙,设计模块设计不好就会觉得难受,然后debug自然而然就顺当多了。。。

读高质量的源码有什么好处呢? 这和大量的阅读对于写作有什么好处是十分类似的,写代码也有语感。创作自己的东西之前首先就是阅读别人创作的东西。多看了高手们是怎么写代码的,试图去理解高手们写代码时在想什么,久而久之自己就会模仿就会慢慢地学会如何像大神一样写代码。等阅读量和写作量积累到一定程度,很多业界所谓的设计规范,模块流程会自然而然的理解并遵照执行,因为这已成习惯。

6. 注重思考和测试

动手写代码之前需要先想一想,理一理思路,拿出纸和笔,认真想出方案。放松大脑保持头脑清晰。从一开始就要考虑各种出错的情况,如 I/O 错误,外部模块错误,用户误操作等等。首先,从Bug产生的可能情况来看,越是复杂的工程,产生Bug的数量就会越多,而且实际情况是,这两个之间的关联是非线性的。所以一定要畏惧代码的复杂度。对于短小的代码而言Bug显然会更容易调通一些。一个非常重要的工作就是进行单元测试。对于每个单一的函数、模块、程序等,依次进行测试。去生成一组范围内的数据,保证每个函数、模块、程序都能够在任何情况下返回正确的结果。

测试的另外一个重要意义是为了防止重合Bug。一个程序有多个Bug,他们一起存在在你程序中时,互相发生了奇怪的作用,导致只有某些特定的数据下才会出错。而当你调通其中一个的时候,你所有数据都出错了。你下意识就会以为自己之前的修补出了问题。虽然这种情况听起来非常扯,但是实际上,经常遇到这样的问题。

除了单元测试,一个非常重要的技巧是封装封装再封装。把所有可能需要重复调用的东西都封装成接口、抽象类、方法或者函数。这样所带来的好处是不言而喻的。一旦出了问题,可以一次性修改掉所有的代码。而且调试程序的时候代码非常短,可以很容易确定出出问题的究竟是哪个部分。

7. 阅读好的编程书籍

从书中你将学到很多,虽然实践很重要,但通过阅读好的且具有挑战性编程书籍是你改变思维方式重要的一步。当然,你可以选择一些难度较低的书籍,但要避免选择那些“傻瓜”书籍,即称能够在24小时或是21天内教会一切的书籍,从这些书中无法学习到提高编程技巧的内容。

8. 尝试解决一些难题

你应该试图去解决代码问题;程序员在编程过程中总是尝试用最少的步骤来解决遇到的难题,而在这过程中,你可以学到语言的更深奥和更特殊的功能,从而你会不得不思考代码的创造性。

9. 其他一些重要的事情

1)最迟在进行系统联调前,准备好单元测试用例(最好是一边写代码一边写单元测试用例),然后根据系统联调和生产环境的反馈不断的完善单元测试用例集。几个迭代下来以后,被单元测试覆盖的模块就能保持相当好的表现,并且你能很放心的去重构那些模块。

2)在开始写代码前,先写文档,特别是如果项目中不止你一个人写代码的话,文档就更加重要。它能帮助你厘清思路,提前发现一些逻辑坑。注释是防“君子”不防“小人”,对于不遵守规则的调用者,需要有防备,因此,通过断言(或者检查判断)来保证所要求的前提已被满足也很重要。另外,自己的代码块执行完毕后是否达到预期的目的,也可以通过断言或检查逻辑来判断。这方面,契约式编程的一些思想和做法可以借鉴。很多时候,程序bug的产生是因为内部某些隐式条件的不满足,这更多的体现为调用者并不清楚被调用者对他的要求。因此,不要吝啬注释,通过规范的注释把这些要求表达清楚,会使得bug显著减少。

3)次要日志写日志文件里,用好流行的日志类,而不要用简陋的printf。重要日志最好写数据表里,这样可以使用SQL和数据库软件的功能去管理\分析\使用这些日志数据。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn