`
jinnianshilongnian
  • 浏览: 21513969 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2420537
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3010266
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5640612
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:260232
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597956
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250373
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5860620
Group-logo
跟我学Nginx+Lua开...
浏览量:702889
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785761
社区版块
存档分类
最新评论

陈太汉:软件随想之编写出色的代码

 
阅读更多

 

1:写不易出错的代码

第一次听说“写明显没有什么错误的代码”时,我觉得这个说法很新鲜,让我记忆深刻。其他的很多观点听得我耳朵生茧,基本都是左耳进右耳出。明显没有什么错了的代码肯定是思路清晰、很容易理解的。而要做到这点很难,牛人才能写出牛叉的代码,要做到这一点要有足够的阅历和实战,只能当做目标啦,哪天也和云风一样:今天完成了XX功能,代码明显没有什么错误。现在还不知道明显没有什么错误的代码是怎么样的,但我知道很多代码让我半天不知所云。如从类名和方法名看不出其职能;变量命名让人蛋疼;不对参数做任何验证;参数到处都是都是基本类型;方法参数十几个;一个方法几屏;不能适应半点变化的方法;要么没有注释,要么一堆废话;排版稀烂。这些都是不好理解,半天找不到问题的代码,也是容易出错的代码。

2:写容易查错的代码

一直想写很干净的代码,代码除了功能没有多余的代码,但是代码必须有日志,如果代码没有日志,要是出错了,查错肯定很麻烦,有时候真的是无从下手,一个功能涉及到一堆的模块,要想很快的定位错误,就必须记好日志。越清楚越好,程序执行到哪一步,当前的状态最好都要记下来,日志不在多,清楚记录有效的日志非常重要,过多无效的日志不方便查看,而且对于快速定位错误的位置没有任何帮助。如果日志都记录在文本文件中,最好能写一个分析日志的工具。可能是我写的和维护的代码太容易出错了,个人觉得记好日志真他妈重要。一看到日志就能知道出了什么问题那不是一般的爽,当然听说又出问题了让人郁闷。我以前所在的一家公司记录日志的方式是在很多类中都定义一个int类型的成员变量,每隔几行让它自增1,将这个值记录起来,当出错了就能大致估计是哪几行出错了。这种方法虽然有点蹩脚,代码中到处是这个变量,但的确能帮助我们快速定位错误的位置,日志的作用就是保存案发现场,只有记录犯罪分子作案的过程才能更好的抓住它。

3:写扩展性好的代码

“今天说要这样,明天说要那样,在上线的前一天说:还是觉得开始的做法是最好的”。而我们程序员总是为这种人2B的想法买单。写扩展性好的代码真的就是不仅要满足需求还要超越需求。我们到处可以听到这样的口号,当然很多情况下是这样的人自己都不知道需求是什么。最让人无语的是菜鸟提需求,我来实现。杀了我吧。但现实是杀了我之前我先要满足他的需求。当这种需求像滔滔江水绵延不绝的袭来时,我想到了四个字:生不如死。既然死不了,生活还得继续。代码还是要做到超越需求(你说这世界对程序员要求怎么就这么高呢),要做到这点难啊,我们是帮别人实现梦想的开拓者。前途是光明的,道路是坎坷的,现实是残酷的,代码必须是扩展性好的。当然这里所说都是人为因素。

还有就是项目的需求本来就是变化的,或者说你现在完成的是一期,还有二期,三期……,你在做的时候就必须考虑这些情况,不要把代码写死。我以前总是想:这个可能以后不会变化,可以写死,少一个参数,少一个变量性能会更好写。其实性能的提升相当于一个千万富翁突然多了几毛钱。但是要是以后需求变了,你就得改写代码,还得担心是否会出问题。有时候我就有点怕重构,就怕一个好的功能,被重构坏了,当然也和时间紧,测试不专业有关。写扩展性好的代码别在乎所谓的那点性能,那真的就是九牛一毛不值一提。一个项目维护时间久了,发现那些本来看是不变的很多都变了,而代码也被改了很多次,每一次修改就要做一堆本来没有必要的事情(修改代码,写测试说明,送测,协调上线,而这些沟通时间也不少,真叫一个低效浪费时间),如果能考虑到可能发生的变化,写好代码,效率会高很多,这一点就能体现高手和菜鸟的区别。

4:写高性能的代码

这是我一直渴望的(我当然也会说是我还没有做到的)。我觉得要写出高效的代码首先要非常明白你要实现的功能,将功能分析得很透彻,你找到了解决方案,回想你的实现,如果你的思路非常清晰,你就大致知道每一步是否够好,大致知道你的代码是否高效,或者更进一步说,你确定这就是最优解;如果功能实现了,但是你对自己实现的功能不是很了解,记忆模糊,那肯定不是最优解,你肯定会对自己不是很清楚的代码不放心(我经常是这样),就别谈性能,是否正确都待定。很多高效的代码都很简洁,容易理解,而有些代码总让人看起来很郁闷,如一堆看起来类似的代码实现一个很简单的功能。用数组和一个循环经常能将这样的代码简化,让你轻松实现简洁容易理解的代码,或许它不是最高效的。82法则告诉我们,我们应该对影响系统性能的20%的代码进行优化,而不应对其他的80%的代码耿耿于怀。20%影响性能的代码应注重性能进行优化,而其他80%则更多应该考虑理解性,扩展性等。

高手的代码特点有很多,很多优点是并存的。上面只是我个人认为最重要的四点。

转载自【http://blog.jobbole.com/19952/

分享到:
评论

相关推荐

    软件随想录 软件随想录

    《软件随想录》是一本深入探讨软件开发与管理的经典著作,它涵盖了软件工程的多个重要方面,旨在为读者提供对软件行业的深度洞察。作者通过一系列的随笔和思考,揭示了软件开发过程中的关键问题、挑战以及解决之道。...

    《代码随想录》最新PDF全集整理发布

    内容概要:这是关于作者针对自己的代码学习笔记《代码随想录》,进行两年后的全面更新与汇总的一则公告。新的PDF版本整合了所有最新内容,并修复和完善了一系列题目解释。尽管如此,作者仍推荐优先在网站上阅读以...

    软件随想录:程序员部落酋长Joel谈软件

    例如,他强调了编写高质量代码的重要性,并提出了诸如“重构”等技术来持续改进软件。 - 他还讨论了团队协作的方式,提倡开放和透明的工作环境,鼓励团队成员之间的有效沟通和协作。 2. **项目管理与领导力**: ...

    软件随想录全集

    《软件随想录》是计算机科学领域的一部经典著作,由知名程序员、软件工程专家、敏捷开发倡导者Martin Fowler所著。这本书集合了他对软件开发的深入思考与实践经验,涵盖了软件设计、项目管理、团队协作等多个方面。...

    代码随想录算法PDF.rar

    《代码随想录》是一本深受程序员喜爱的算法学习书籍,尤其对于初学者来说,它提供了深入浅出的讲解和实战演练。这本书的核心是通过实际编程来帮助读者理解和掌握算法,提升编程技能,特别是C++语言的应用。在C++这个...

    代码随想录的pdf版本,需要准备秋招的小伙伴们看过来呀!

    《代码随想录》是一本深受程序员喜爱的书籍,尤其对于即将参加秋季招聘的计算机科学和技术专业的学生们来...同时,实践是检验真理的唯一标准,理论学习之余,动手编写代码,参与在线编程挑战,将更有利于巩固所学知识。

    软件随想录+程序员必读pdf

    《软件随想录》是许多程序员和IT从业者都推崇的一本书,它深入探讨了软件开发过程中的各种问题,包括团队协作、项目管理、代码质量、技术债务等关键议题。这本书结合作者的经验,提供了许多实用的建议,旨在帮助...

    计算机教育_软件随想录_给计算机专业学子的建议知识.pdf

    Joel Spolsky在其著作《计算机教育:软件随想录》中,深入探讨了这一现象,并提出了针对性的建议,旨在指导计算机专业的学生在求学过程中如何更好地准备自己,以适应未来职场的挑战。 在这些宝贵的建议中,Spolsky...

    代码随想录算法PDF.zip

    《代码随想录》是一本深受程序员喜爱的算法学习书籍,其PDF版本为读者提供了方便的电子阅读体验。这本书主要针对准备参加编程面试或者想要提升自己算法能力的开发者,通过实例解析和实战演练,帮助读者深入理解算法...

    软件随想录.pdf

    根据标题和描述,我们可以假设“软件随想录.pdf”是一本关于软件的个人收集电子书。该描述还提到该电子书只能用于学习目的,并且不能用于商业用途,这提示我们版权和知识产权是软件行业中非常重要的方面。 由于实际...

    代码随想录+刷题笔记记录

    代码随想录是一个致力于帮助程序员提高编程能力的网站,提供了大量的题目和解题思路供学习和参考。本文主要介绍代码随想录的刷题笔记记录,方便读者更好地利用该网站进行学习。 ## 刷题笔记记录的作用 刷题笔记...

    「代码随想录」二叉树专题精讲(v2.0).pdf

    「代码随想录」二叉树专题精讲(v2.0)是一套涵盖二叉树基础知识、遍历算法、递归与非递归实现、BST、AVL树等内容的视频课程,由著名程序员博主「代码随想」老师主讲。该课程分为三个部分: 基础篇:介绍了二叉树的...

    软件随想录

    《软件随想录》是一本深入探讨软件开发与行业洞见的书籍,它汇集了作者在软件工程领域的诸多思考和经验总结。通过阅读这个压缩包内的文件,我们可以探索到一系列关于软件开发的重要知识点,涵盖了软件设计、编程哲学...

    代码质量随想录

    "代码质量随想录"是一系列文档,旨在引导初学者和有经验的开发者优化他们的编码习惯,从而提升代码质量,成为更出色的程序员。以下是对这些文件主题的详细解读: 1. **代码质量随想录(一):可读是王道** 可读性...

    软件随想录(中英文)

    《软件随想录》是一本深受程序员喜爱的书籍,它主要涵盖了程序员的成长历程、编程理念、软件开发实践以及行业洞见等多个方面的内容。这本书通过作者的个人经验分享,旨在帮助读者提升编程技能,理解软件开发的本质,...

    代码随想录知识算法讲解PDF

    代码随想录贪心算法知识,非常管用

    随想出题随想出题免费版

    随想出题是一款专为教育领域设计的软件,其免费版提供了基础的试题生成与管理功能,旨在帮助教师和学生更便捷地进行教学活动。这款软件的核心特点是简单易用,功能实用,尤其适合家庭学习和课堂教学环境。 1. **...

    软件随想录扫描版

    软件随想录_扫描版_5.79M

    「代码随想录」动态规划专题精讲(v1.2).pdf

    从给定的文件信息来看,「代码随想录」动态规划专题精讲(v1.2).pdf 的内容涉及到编程算法中的动态规划专题的精讲。动态规划(Dynamic Programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息...

    五四青年节作文大全:青春随想.docx

    ### 五四青年节与青春随想 #### 青春的美好与价值 青春是一段充满无限可能的人生阶段,它如同春天般生机勃勃、绚丽多彩。在这个时期,年轻人的心灵充满了好奇与探索欲,对世界充满了无限的好奇心。正如文中所言,...

Global site tag (gtag.js) - Google Analytics