`
wzf7065
  • 浏览: 240326 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

程序员如何提升自己的代码质量?

 
阅读更多

本文转载至:http://www.zhoudev.com/?p=19

 

文章只针对有一定语言基础的人。
写本文的原因,其实很简单:团队的代码质量实在是太差了,而我又是一个在代码方面有很强洁癖的人,所以经常免不了大动肝火的去喷人。而喷人是很不好的,所以就有了这篇文章。
团队的代码质量差,主要表现在以下几点:

  1. 可读性:函数命名随意,实现逻辑混乱,代码格式不统一。。。
  2. 可靠性:程序运行很难稳定,bug百出。。。
  3. 维护性:代码逻辑没有层次,混成一团,很难维护改进
  4. 移植性、重用性:许多人写的代码,只能各自使用,很少有能共享的功能性代码
  5. 高效性:很少从算法、资源占用、执行效率等角度去考虑,经常导致服务器负载过重

那么我们改进时,就可以从以上几点出发。
总结了一下自己以前的经验,主要有以下几点:

  1. 提高自己的程序语言基础。对于许多新手程序员来说,只是简单的学会了该语言,知道一些简单的用法。但是实际编程的时候,许多写法、用法不标准。举一个很常见的例子:许多人刚刚学c++,java等面向对象编程的语言时,虽然知道了类、知道了类一般都有“多态”的特性,但是他们还是经常会用“类型判断”去判断某个对象是属于哪个类的实例、然后强制转换、再调用方法。却完全忽略可以用多态来避免这种丑陋的实现!
  2. 熟悉语言规范。如果不知道自己所学的语言还有规范,那么建议你现在去查找。说个简单的规范,Java的类名要取得有意义、首字母要大写。再比如:一个函数只实现一个功能。再比如一个复杂的:连续的if else条件判断最好不要超过10个。
  3. 培养自己严谨的逻辑思维能力。我们写程序,至少都会在脑海里走一遍程序的流程。如果流程走通最后却出现bug,那么就是流程的某个细节我们没有考虑到!有的时候,我们总是自认为自己已经考虑的非常全面了,其实不然。同样举一个例子:对一个集合,写个for循环按照一定的条件删除里面的元素。其实这里面隐藏了一个“集合在动态变化”的陷阱。比如说,将第一个元素删除了,如果集合的数据结构是将第二个元素移动到第一个元素上,那么,第二个元素就遍历不到了。所以,有时候,我们看似很简单,觉得逻辑非常正确的代码,可能就潜伏着陷阱。
  4. 熟悉所用语言的API。学一门语言,其实不只是学语法,学语义。更重要的是学基本的API类库。因为你实际编程的时候,自己所写的代码其实很少,大部分都是用的别人的API,将许多API的功能穿起来,才是自己实现的功能。用好的API,能增加代码质量、提高代码可读性、减少代码bug、减少工作量。就比如说堆栈这个数据结构,程序员基本都知道,但是大部分人可能都不能实现一个正确的堆栈API。
  5. 熟悉了解一些数据结构、算法。平常写程序时,或多或少都要接触一些常用的数据结构,比如说链表、map等,了解它们的原理对于那些没学过数据结构的人来说很重要。很多时候,一个简单的功能被实现的超级复杂的原因就是没有使用简单清晰的数据结构。
  6. 掌握一些编程思想、设计模式,这会让你的代码更加具有结构性、条理更加清晰!比如说,面向接口的编程思想,能让你的代码易于修改、易于扩展。如果更进一步,站在架构的角度去考虑。
  7. 多看高手代码,读一些优秀的开源代码,看一些经典的书籍。比如说《Effective C++》、《Effective Java》、lucene的源码。这些会让你提升巨大,只有了解到高手眼中的世界,才能有成为高手的可能!
  8. 代码重构。多回顾之前写的代码,进行一个系统性的整理。因为我们起初开发,不是面面都能想到,许多新东西是不可避免的,这就意味着可能会导致一些逻辑混乱。在开发完成后,多回顾回顾,寻找能改进之处,这也是一种进步。
  9. 即时缺少高屋建瓴的能力,我们也应该多从全局的角度去考虑整个工程的代码的层次、模块、架构等问题点。可以尝试着进行功能点拆分、接口交互设计等工作。
  10. 为自己的代码添加测试用例。可能因为懒惰,许多程序员基本都不会为自己的代码添加测试用例,这其实是一个不好的习惯。即时是有测试人员的团队,添加测试用例对你的好处也是显而易见的。
  11. 至于从团队的角度,可以考虑建立以下几点:完整的规范、执行流程、review机制和辅助工具。由于本篇文章主要针对的是个人,就不展开。工具方面,可以考虑开源的ReviewBoard。

个人的代码质量提上来,团队的水平才能提上来,公司的效率才能提升。其实最主要的是,个人的层次、境界才能提升! 

程序员如何提升自己的代码质量?

分享到:
评论

相关推荐

    提高程序员面试代码质量

    作者总结自己多年面试他人以及被他人面试的经验,发现应聘者可以从代码的规范性、完整性和健壮性三个方面提高代码的质量。

    程序员:实际写代码过程中选择效率,还是选择质量?.docx

    程序员:实际写代码过程中选择效率,还是选择质量?.docx

    ChatGPT使用场景之提升代码质量

    ChatGPT使用场景之提升代码质量:很多人都会担心,现在AI的发展这么快,初级程序员会不会很容易被取代,毕竟AI都能帮我们写代码了。一方面,它提醒我们需要提升自己,尽快让自己成长起来才是正道。而ChatGPT,就是一...

    JAVA新手程序员如何提升编码质量

    新手JAVA程序员入门 1、Java之所以如此大规模在企业级产品应用,靠的是良好的规范保驾护航,迁移、维护、升级、部署无障碍。 2、读开源的产品经历了多规模的应用,实现思路比较巧妙,许多经典设计模式等等都有很好...

    程序员应该如何测试自己的程序代码

    程序员应该如何测试自己的程序代码?开发自测被多个团队实践,开发自测的效果也是不一而足的,具体怎么样的开发自测方式是更好的,每个人都有自己的观点和看法,这里说说自己对开发自测的方法的一些探讨。  开发自...

    GPT-4 性能大幅提升后,替代程序员的概率是不是更高了?

    首先,GPT-4 能够生成代码,但是生成的代码质量和可靠性还有待提高。目前的自然语言处理模型仍然难以理解程序的正确性、性能和安全性等方面的要求,因此生成的代码可能会出现各种错误和漏洞。此外,生成的代码还需要...

    提高代码质量的157个建议

    对于工作了2,3年的程序员是该提升代码质量了。

    C#与.NET程序员面试宝典

    《C#与.NET程序员面试宝典》主要内容包括:面试流程、基础语法和技术框架、数据访问及XML应用、高级特性及应用进阶、测试及质量保证、跨国公司经典面试题等。 《C#与.NET程序员面试宝典》附带1张光盘,内容为书中...

    《程序员》2011年08期

    6:测试习惯 测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要...

    使用ChatGPT来提升代码质量

    使用chatGPT优化前端代码的教程 ,程序员合理利用ChatGPT,可以大大提高平时的工作效率和代码质量 。

    源代码]程序员的数学基础课_从理论到Python实践.rar

    源代码]程序员的数学基础课_从理论到Python实践,从程序员的需求出发,精心挑选了程序员真正用得上的数学知识,通过生动的案例来解读知识中的难点,使程序员更容易对实际问题进行数学建模,进而构建出更优化的算法和...

    代码大全(Code Complete)优秀程序员必读

    代码大全(Code Complete)优秀程序员必读,本书从软件质量和编程思想等方面论述了软件构造问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。本书中所论述的技术不仅...

    一堂如何提高代码质量的培训课之领域驱动设计

    代码可读性是对代码质量最基本的要求,可惜我们仍有做得不够的(即使那些开发程序很多年的老程序员)。代码复用是提高代码质量的最初级阶段,但是在一个多人开发的项目团队中,围绕代码复用值得讨论的问题依然非常多...

    C#程序员书籍推荐,C#程序员书籍推荐,C#程序员书籍推荐

    说明:软件代码质量和个人的编码习惯、编码风格有很大关系,当水平达到一定之后,你的编码习惯、编码风格如果有问题的话,会阻碍你的进一步提高的。编码风格、编码习惯的改进中再坚持。 3、设计思想 UML与模式应用...

    高质量C编程指南-初级程序员进阶书籍

    初级程序员的必修之道,如果把代码写的更简洁高效,看完了或许会有收获,无论你是学C的,还是JAVA等其他语言。都会有所收获

    代码大全,初级和高级程序员的参考书

    本书从软件质量和编程思想等方面论述了软件构造问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也...

    大厂程序员考核制度之模板xxx年xx月绩效考核-xxx - 员工.xlsx,管理必用

    1. KPI(关键绩效指标)制度:通过设定关键绩效指标,如代码质量、项目进度、客户满意度等,来评估员工的绩效表现。 2. OKR(目标与关键结果)制度:通过设定目标和关键结果,来评估员工的绩效表现。目标通常是具有...

Global site tag (gtag.js) - Google Analytics