易读程序之美学一)~(五).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标记 意义 TODO: 作者还没有处理的部分 FIXME: 已知的问题 HACK: 承认解决方法不够优雅 XXX: 危险!重要问题 批注程序代码缺陷 范例一: NUM_THREADS = 8 如果加上批注 NUM_THREADS = 8 # 只要 = 2 * num_processors 就够好了 常数的批注 范例二: // 加上合理的限制─没有人能读那么多文章 const int MAX_RSS_SUBSCRIPTIONS = 1000; 范例三: Image_quality = 0.72 // 使用者认为0.72在大小/质量上有最好的平 // 衡 常数的批注 利用「想象程序代码在外人眼中的样子」技巧。 预期可能出现的问题 注明可能发生的陷阱 「全局」批注 摘要批注 为读者设想 范例: struct Recorder { vectorfloat data; ... void Clear() { vectorfloat().swap(data) ?? 为什么不用 data.clear() } }; 预期可能出现的问题 范例: struct Recorder { vectorfloat data; ... void Clear() { //强制释放内存(参看STL swap trick) vectorfloat().swap(data); } }; 预期可能出现的问题 范例一 void SendMail(string to, string subject, string body); 注明可能的陷阱 范例一 //呼叫外部服务发送email(逾时时间为1分钟) void SendMail(string to, string subject, string body); 注明可能的陷阱 范例二 def FixBrokenHtml(html): ... 注明可能的陷阱 范例二 //运行时间为O(number_tag * average_tag_depth),要特别注意太 //遭的输入值 def FixBrokenHtml(html): ... 注明可能的陷阱 为新成员着想。 为新成员介绍程序的来龙去脉。 这些正是高阶批注的内容。 简单几句也比一片空白来的好。 范例: //本档案内容辅助函数,为文件系统提供较方便的介绍 //处理档案权限以及其他基础细节 「全局」批注 范例一: #找到所有为自己购买商品的客户 for customer_id in all_customers: for sale in all_sales[customer_id].sales: if sale.recipient == customer_id: ... 摘要批注 范例二(长函数): def GenerateUserReport(): #取得使用者的锁(lock) ... #从数据库读取用户信息 ... #将数据写入档案 ... #释放使用者的锁 ... 摘要批注 作者建议:要有what、how、why等三者。 批注内容为何? 许多程序设计师不喜欢写批注。 解法: 直接写下心中的想法。 读出批注,看看是否需要修正与改善。 改善。 避免写作抗拒 范例: //天啊,如果串行里出现重复,情况就会十分棘手。 //注意,要特别小心。如果串行里出现重复,情况就会 //十分棘手。 //注意,要特别小心。如果串行里出现重复,处理输入数据 //的程序代码就会十分棘手。 //注意,要特别小心。如果串行里出现重复,处理输入数据 //的程序代码就会很难实作。 避免写作抗拒 如果能使用辅助程序: CheckFullName(Doug Adams, Mr. Doug Adams, ); CheckFullName( Jake Brown , Mr. Jake Brown III, ); CheckFullName(No Such guy, , no match found); CheckFullName(John, , more than one result); 用方法(method)消除混乱 辅助程序: void CheckFullName(string partial_name, string expected_full_nam

文档评论(0)

139****3928 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档