我最近碰到一个让我很蛋疼的事情。一个C#程序员很自豪的宣布,说自己已经看不懂他一个星期前写的代码了。说实话,我真想知道他有什么可值得骄傲的,我完全搞不懂嘛。他自豪的是,他每天写了很多很多代码?还是任何人都愿意给他钱,让他写代码?

对于此事我的观点是: 对于一个职业C#程序员来说,不能理解你在一周前或者一年前写的代码是一件不可原谅的事情。

是的,我是么说的。容我说明一下。我把软件开发作为职业 已经有15年了。在较早的时候我接受了一些软件开发信条,它们至今还伴随着我。我依然可以很容易的理解我一年前、两年前、或者十二年前编写的代码。无论它以什么语言编写,无论你称其为域、算法、分析器、网络应用、嵌入式控制器、脚本、连接器或者其它的什么。哪怕是更早的代码,即使对我来说难以理解,我也能辨识出当时已经开始出现的某些模式。

其实,让自己读懂自己以前写过的代码这事,目的是 要让代码具有可读性。无论是你自己还是别人。 代码失去可读性,就像代码不能正常工作一样糟糕,或者比这个还糟糕。如果你自己在一段时候后都不能读懂你写过的代码,那么对于其他人来说,读懂你的代码更是不可能。

对于我来说,强调轻松的阅读和理解你的程序代码是是如何的重要,不仅因为它是一个更好的产品,别人维护的,而且你的程序源码是在你个人的工具箱中,在你的 职业生涯中,你将使用和重复使用它。并且这个工具箱特别授权,对于一个有经验的程序员来说是一个最显著地特点之一。我不能指望我的问题能够立即被解决,面 临着在过去有类似的东西,挖掘我自己的代码档案,找到一个解决的方法,或者相类似的问题。很显然,你不能将无法理解的代码放在你的工具箱中。

如果完成后至少没有试图解释如何可以实现这一壮举,这将是不公平的。坦率地说,这是不容易的表达清楚的,但我可以尝试。

我可以肯定,这一点主要针对作家(嗯,也许也包括他创意相关行业)。当你敲下了几行代码(越短越好),你最好驻足于此,用一点点时间来检查这段东西是否能 够让人理解。多读几遍,不要怕麻烦。想一想,假设自己是第一次看到这段代码,还能理解不?如果悲剧的发现不可以……为啥?不要犹豫,一定要将“可读性”作 为代码质量的衡量标准,坚持下去,直到你的整段代码都是可以理解的。

一旦你因为这些结果寻得乐趣,继续再读一遍,过几天再读一遍,这提醒我写更有技术含量的博客文章:我写的每一个句子都要反复斟酌20几遍重写5变,通常也是我写代码的事实情况,通过与生俱来的天赋和不断的实践反复的练习获得完美,由于我没有前者,所以我只能靠后者来实现勤能补拙。

最后,是重构和大胆的完善。如果你遇到一段可以被写的更加清晰的代码,那么就让它更加清晰易懂吧。提高代码质量是我们分内的工作。他的好处有的时候很难被量化,但是如果你参与了一两个那种很多人参与,耗时很久的大型项目之后,你就会自然而然的明白了。

转载于:https://www.cnblogs.com/ctou45/archive/2013/01/09/2852428.html

软件开发人员该如何深入理解自己的代码相关推荐

  1. esl8266开发之旅_从ESL老师到越南软件开发人员的旅程

    esl8266开发之旅 by alberto montalesi 通过阿尔贝托·蒙塔莱西 从ESL老师到越南软件开发人员的旅程 (My Journey from an ESL Teacher to S ...

  2. 软件开发人员维护代码指南

    当你最初想要成为一个软件开发者的时候,你可能梦想着创造令人兴奋的新功能,玩弄一些新科技,并编写一些非常酷而有趣的代码. 但是你可能从未想过的是,要在一个拥有10年历史的并且由一个很多年前就离开公司的某 ...

  3. 每个软件开发人员都应该精通的10个基本工具

    你们中的一些人可能认为这10个工具并不重要,但老实说,如果每个程序员都很清楚这些工具,他就可以在日常工作中高效的完成很多事情. 不管怎么说,让我们看看,我列出的每一个软件开发人员都应该知道和熟悉的10 ...

  4. (转)软件开发人员如何提高自己的软件专业技术方面的具体建议

    哲学就是用简单的说话来体现出隐含深层意义的道理,让人们去思考和体会.哲学本身就是用来完善自己的精神修养和帮助他人完善思想的. 哲学的特征在于追问本质,不断反思.内容上,哲学的反思对象无所不包:深度上, ...

  5. python编程软件开发_Python编程对软件开发人员很重要?

    我相信 Python 编程对软件开发人员很重要.现今已经诞生了不少的编程语言,它们都有各自不同的特性:强大者如 Lisp,快速如C,运用广泛如 Java,论古怪则如 Haskell.与这些语言不同,P ...

  6. 最好电脑操作系统_软件开发人员该如何选择笔记本电脑?朋克老师来教你

    上篇咱们聊了游戏本该如何选择,今天咱们聊聊软件开发人员如何选择笔记本电脑. 咱们通过以下几点来聊一下. 一.性能 不过这里对性能不太好说,因为写代码,不吃配置,但运行代码,就说不准了,谁也没法确定你运 ...

  7. 每个软件开发人员都应该知道的5种设计模式

    通常设计模式是用于解决问题的模板,可以在多种不同的情况下使用,但它并不是一个可以直接转换为代码的设计,但确实开发者奠定软件是否成功的基础. 有一些设计模式是每个开发人员都应该了解的,包括它应该在什么地 ...

  8. 软件开发人员的“七重苦”(2)

    (接前一篇,继续) 第五重:技术变化快,积累上不去 设想一下,一个10年前的高手,这10年他什么也不学,那他今天会是什么样的一个状况. 我个人估计是快被淘汰了. 这是个极端的例子,但回顾一下软件的发展 ...

  9. 专访刘伟:软件开发人员的内功修炼之道

    摘要:数学修养对软件开发之路起着什么作用?码农如何修炼自己的内功并成长为优秀的软件开发员?带着相关思考,社区之星第10期采访了中南大学副教授--刘伟.他对数学修养.设计模式.软件架构和重构方面的独特见 ...

最新文章

  1. Android App监听软键盘按键的三种方式(转)
  2. 如果MySQL的自增 ID 用完了,怎么办?
  3. ORACLE查询删除重复记录
  4. mysql按升序创建索引_Mysql中的降序索引底层实现
  5. 论文浅尝 - ESWA | 知识图谱的自动扩充方法
  6. c语言枚举法求满射函数,实变函数论讲义
  7. C#毕业设计——基于C#+asp.net+cs的即时通信系统设计与实现(毕业论文+程序源码)——即时通信系统
  8. 1.42 财务测量指标——静态评价法(投资回报率+投资回收期)
  9. 如何在Word中打出罗马数字ⅠⅡ Ⅲ
  10. 功能最强大的flv超酷网页播放器介绍flvPlayer
  11. iphone手机投射到电脑的过程详解
  12. mysql数据库复合索引
  13. HTML+CSS项目实践四:给html网页标题栏添加logo图标(ico格式图片)
  14. php 面试,PHP 经典面试题集
  15. Vs Code中Vue代码格式插件,Vetur、ESLint 、Prettier - Code formatter的介绍使用及相关配置
  16. win7系统设备管理器打开后一片空白怎么办
  17. 洛谷 P3041 [USACO12JAN] Video Game Combos
  18. Windows命令行编辑器查看Unicode编码和Linux终端查看GBK编码
  19. 公司章程变更需要经过哪些程序
  20. 【笔记】天地图Demo

热门文章

  1. 即时通讯软件设计(一)
  2. Beta阶段事后分析
  3. Python输入输出练习,运算练习,turtle初步练习
  4. elasticsearch 运行原理
  5. js简单的下拉选中效果
  6. display: none;、visibility: hidden、opacity=0区别总结
  7. JQuery中ajax方法访问web服务
  8. Building Fire Stations 39届亚洲赛牡丹江站B题
  9. 【错误记录】安装 Visual Studio 2013 中文语言包报错 ( 需要 Microsoft Visual Studio Test Agent , 但此计算机上并为安装它 )
  10. 【Java 虚拟机原理】Dalvik 虚拟机 ( 简介 | CPU 指令集 | Dalvik 虚拟机内存 )