- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
代码大全之个人精粹版.ppt
代码大全精粹 Theme1 Theme2 Theme3 Theme4 中文标题 字体: 黑体 字号:30-32pt 色彩:蓝色 中文副标题 字体:华文细黑 字号:20-22pt 色彩:黑色 子目录(2-5级) 字体:华文细黑 字号:18pt 色彩:黑色 中文标题 字体: 黑体 字号:30-32pt 色彩:蓝色 中文副标题 字体:华文细黑 字号:20-22pt 色彩:白色 ——个人整理版本 目录 设计 编码 质量优化 设计 设计关键点 1.封装——信息隐藏 类或模块,只提供合适的接口,并保持不变。实现细节和成员不要暴露给外界即其他模块。 反例: pDomain = (g_AAADomain[DomainID]); if (READY == pDomain-Status) { … } 正例: if (DomainIsReady(DomainID)) { … } 设计关键点 封转的好处: a.降低耦合。尤其是大模块之间。 b.降低复杂度。修改和阅读代码时,一个时刻只用关心一层的设计,不用在庞大的代码中左支右绌。 c.屏蔽变化源。例如某数据索引表从Hash表改成AVL树,不应对外部产生影响,封装可实现这种屏蔽。 Notice: 封装不仅应该用在大模块上,也应该用在模块内的各子模块上。 C语言中不希望被外部调用的函数,可通过函数名前加static前缀来实现信息隐藏 设计关键点 设计关键点 2.隔离容易改变的区域 找出明显容易变化的功能,将之分离出来成独立模块。设计良好接口,使变化不影响模块外部。 容易变化的地方: a.业务规则。例如电话费、上网费的收费模式、费率等。 b.硬件依赖性 c.困难的设计区域和实现区域。因为这些设计和代码不是很好,可能需要重新做。隔离使之对系统影响最低。 举例: 请教练结合自己项目举例 设计关键点 3.抽象 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。 抽象本身很“抽象”,不太容易理解。我们来通过软件实例理解: C++项目中的抽象类 C项目中的通用算法库,例如Hash,就是抽象出了Hash算法的本质,而把具体的“杂凑函数”留给使用者注册。 请教练结合自己项目举例 设计关键点 抽象的好处: 关注高层规则,忽略无关细节,降低软件复杂度 写出高复用性代码 更好的软件层次结构 Notice: 抽象与语言无关,C语言同样可实现抽象。 编码 子程序和变量名 子程序长度 无标准。但超过200行请小心,一般只有复杂算法(如AVL树,加密等)才会写出长函数,其余情况出现长函数则要反省设计、分层是否合理。 一个子程序只在自己的抽象层次上做一件事情。如果一个子程序的名字无法完全描述它做的事,就违背了这一原则。 子程序和变量的名字: 总原则是让代码读起来就跟自然语言一样流畅。例如 if (NameIsValid(userName)) { RemoveAllSpace(userName) … } 子程序和变量名 过程性子程序起强烈的“动词+宾语”的名字,例如RemoveAllSpace()等。 逻辑判断子程序,名字写为肯定语句。 面向对象例子:bool CLASS_USER_NAME::IsValidName(); C语言例子:BOOL NameIsValid(userName); 使用时就是如下流畅的语句: if (userName.IsValidName())或if (!userName.IsValidName()) if (NameIsValid(userName)) 语句 1.循环 循环变量使用有意义的变量名,避免习惯性使用i,j,k 反例: for (i = 0; i MAX_USER_ID; i++) { for (j = 0; j MAX_PAYOUT_TYPE; i++) { sum += employee[i].payout[j]; } } 正例 for (userID = 0; userID MAX_USER_ID; userID++) { for (payType = 0; payType MAX_PAYOUT_TYPE;
您可能关注的文档
最近下载
- HERO9Black狗9中文说明书.pdf VIP
- 中医养生馆策划方案.pptx
- 山东省济南育英教育集团2024-2025学年下学期七年级期中数学试题[含答案].pdf VIP
- ISO 898-2-2022-中文紧固件—碳钢和合金钢制紧固件的机械.pdf
- 高速铁路概论:高速铁路通信系统PPT教学课件.pptx VIP
- 自动化立体仓库堆垛机控制系统的设计稿毕业设计稿.doc VIP
- 浅谈高速铁路通信系统与其它专业接口管理工作.pdf VIP
- 放射科图像质量控制标准(5篇).docx VIP
- 银行重要信息系统投产及变更管理办法模版.docx VIP
- NB∕T 32043-2018 光伏发电工程可行性研究报告编制规程.pdf VIP
文档评论(0)