- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何写好代码 yangc 课程目的 分享我编码的经验和心得 希望大家养成好的编码习惯 主要内容 管理复杂度 什么是高质量的代码 名不正则言不顺 养成好的习惯 管理复杂度 软件的首要技术使命是管理复杂度 没有谁的大脑能容得下一个计算机程序 计算先驱Edsger Dijkstra指出,只有在“计算(Computing)”这种职业中,人的思维需要从一个字节大幅跨越到几百兆字节——跨度为109比1,也就是9个数量级 软件开发是个“险恶问题”(wick problem) 软件为什么复杂? 本质属性 偶然属性 偶然复杂度或许可以解决 本质复杂度无法解决,只能管理 程序员的思维方式 我们无法把整个程序都塞进自己的大脑,而应该试着以某种方式去组织程序,以便能够在一个时刻可以专注于一个特定的部分。 你能写好代码吗?你会整理你的房间吗? 管理复杂度的工具 在架构层将系统划分为多个子系统 保持类接口的抽象性,从而不必关注内部细节 避免全局变量 避免深层次的继承,因为这样会耗费很大精力 避免深度嵌套的循环或条件判断 小心定义错误处理的方法,不要滥用不同的错误处理技术 函数应保持短小 使用清楚、不言自明的变量名 函数的参数数目应尽量少 用规范和约定来使大脑从记忆不同代码段的随意性、偶然性差异中解脱出来 高质量代码 什么是高质量代码? 正确 简单 清晰 正确的代码 正确的代码需要满足需求 不断确定我们在努力写正确的代码 “使正确的程序变快”远远比“使快的程序变正确”容易得多 简单的代码 并不是代码行少就简单 富于技巧(tricky)、聪明(clever) 是代码的恶劣品质,编程不是为了炫耀自己的聪明程度 我会overload,所以我要用 调试代码的难度是首次编写这些代码的两倍。因此,如果你在编写代码的时候就已经发挥了全部聪明才智,那么按照常理,你将无法凭借自己的智慧去调试这些代码。——Brian Kernighan 清晰的代码 清晰性是“易于维护、易于重构的程序”最有价值的特性 清晰的代码更容易理解,所以更容易优化效率 编写程序首先为人,其次为计算机。——Steve McConnell 名不正则言不顺 变量名 名字要完全、准确地描述出该变量所代表的事物:currentDate是很好的名字 名字应该尽可能地明确:少用x、temp、I 谨慎地为循环下标变量命名 研究发现,当变量名的平均长度在10到16个字符的时候,调试程序所需花费的气力是最小的 匈牙利命名法:sName与usName 函数名 描述子程序所做的所有事情 避免使用无意义的、模糊或表述不清的动词:handle,manager 给过程起名时使用语气强烈的动词加宾语 类名 类的名称应该表达抽象概念,一般是名词 养成好的习惯 21天养成好习惯 McConnell认为,好习惯很重要,因为程序员做的大部分事情都是无意识完成的 Bill Gates说过,任何日后出色的程序员在入行的前几年就做得很好,从那以后,程序员的优劣就定型了。 编码之前先理解需求 建立业务概念,先有概念再有实现 先写注释再写代码 先有流程再有实现 如果命名很费劲,可能是设计有问题 概念混乱 写完代码,读一遍 态度问题 清晰的代码是改出来的 推荐阅读 《代码大全》 确实是大全,宝典,一本书包含软件开发的所有方面 每一遍读都有不同的感受 《程序员修炼之道》 谢谢
文档评论(0)