【转载】The Elements of Programming Style之代码风格金科玉律
原始日期:
2017-02-06 16:20
《The Elements of Programming Style 》是一本很古老的书。尽管 Fortran 我们不太使用,尽管新奇的语言层出不穷,但这些,30 年的岁月依旧无法掩盖其中的真知灼见。英文版的 google一下到处有。
把代码写清楚,别耍小聪明。
想干什么,讲的简单点、直接点。
只要有可能,使用库函数。
避免使用太多的临时变量。
”效率“不是牺牲清晰性的理由。
让机器去干那些脏活。
重复的表达式应该换成函数调用。
加上括号、避免歧义。
不要使用含糊不清的变量名。
把不必要的分支去掉。
使用语言的好特性,不要使用那些糟糕的特性。
该用逻辑表达式的时候,不要使用过多的条件分支。
如果逻辑表达式不好理解,就试着做下变形。
选择让程序更简洁的数据表达形式。
先用伪代码写,再翻译成你使用的语言。
模块化。使用过程和函数。
只要你能保证程序的可读性,能不用 goto 就别用 。
不要给糟糕的代码打补丁 - 重写就是了。
把大的程序分成一小片一小片来写,分块测试。
使用递归程序来处理递归定义的数据结构。
正确和错误的输入数据都要测试。
确保输入不会超出程序的限制。
依靠文件结束来终止输入,而不是依赖一个记数。
把文件结束作为一个输入状态来处理。
识别出错误的输入;如果有可能就修复它。
让输入数据很容易构造出来,让输出数据不言自明。
使用统一的输入格式。
让输入容易校对。
如有可能,提供更自由的输入格式。
使用输入提示,允许使用默认值。并把它们显示出来。
把输入输出放到子程序里。
确保所有的变量在使用前都有初始化。
不要因为一个 bug 而停止不前。
打开编译程序的调试选项。
常量结构用数据声明初始化,变量结构用执行代码初始化。
小心 off-by-one 错误。
当循环中有多个跳出点时要小心。
如果什么都不做,那么也要优雅的表现出这个意思。
用边界值测试程序。
手工检查一些答案。
防御式编程 - 为不可能的情况写几句代码。
10.0 乘 0.1 很难保证永远是 1.0 。
7/8 等于 0 ,而 7.0/8.0 不等于 0 。
不要直接判断两个浮点数相等。
先做对,再弄快。
先使其可靠,再让其更快。
先把代码弄干净,再让它变快。
别为了获得一丁点“性能”就牺牲掉整洁。
让编译器做些简单的优化。
不要过分追求重用代码;下次用的时候重新组织一下即可。
确保特殊的情况是真的特殊。
保持简洁以获得速度。
不要死磕代码来加快速度 - 找个更好的算法。
用工具分析你的程序。在做“性能”改进前先评测一下。
确保注释和代码一致。
不要在注释里仅仅重复代码 - 让每处注释都有价值。
不要给糟糕的代码做注释 - 应该重写它。
给变量都起个有意义的名字。
把程序重新整理一下,让阅读代码的人更容易理解。
为你的数据布局写一个文档。
不要过分注释。
【转载】The Elements of Programming Style之代码风格金科玉律的更多相关文章
- [转] 編程風格要素-The Elements of Programming Style 中文英文中英對照
转自: http://www.loliman3000.com/tech/2fe33ce32906f0302412881.php 下面的程序風格規則提煉自Brian Kernighan和P. J. Pl ...
- THE ELEMENTS OF C# STYLE
|前言 程序员其实艺术家,灵动的双手如行云流水般在键盘上创造着生命的奇迹,我认为代码是有灵魂的.同一个模块,在每个程序员手中所缔造出来的是不相同的. 最终,这个模块或者实现了最初的业务,但是回过头看看 ...
- [转] Matlab编程规范(MATLAB Programming Style Guidelines)
转自: Jerry Zitao Liu的博客 主要是参考了下面这篇文章,简洁总结在这里. MATLAB Programming Style Guidelines 简洁总结如下: 表示object的数量 ...
- 转载--Typecho install.php 反序列化导致任意代码执行
转载--Typecho install.php 反序列化导致任意代码执行 原文链接(http://p0sec.net/index.php/archives/114/) 0x00 前言 漏洞公布已经过去 ...
- C Programming Style 总结
对材料C Programming Style for Engineering Computation的总结. 原文如下: C Programming Style for Engineering Com ...
- 代码风格JavaScript standard style与Airbnb style
代码风格JavaScript standard style与Airbnb style
- electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google JavaScript Style Guide代码规范
我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google ...
- GO代码风格指南 Uber Go (转载)
原文地址:https://github.com/uber-go/guide/blob/master/style.md 译文出处:https://github.com/uber-go/guide 本文永 ...
- Google coding Style Guide : Google 编码风格/代码风格 手册/指南
1 1 1 https://github.com/google/styleguide Google 编码风格/代码风格 手册/指南 Style guides for Google-originated ...
随机推荐
- JS上了贼船
本文纯属个人观点,没有引经据典,没有小心求证,just吐槽. 互联网的火热.移动web,带动了前端的飞速发展,js好像搭上了顺风车,身价水涨船高,如日中天. web前端是啥?html + css + ...
- 关于echarts的那些事(地图标点,折线图,饼图)
前记:离上一篇博客的发布已经过去两个月了,这期间总想写点什么,却怎么都写不出来,一直拖到了现在.现在的感觉,不是像这期间一样,想好好整理一番,写一篇好博客,却写不出来.事实发现,随心就好,较好的博客, ...
- 将 Eclipse 的配色改为黑底白字
1.先到 eclipsecolorthemes下载一个主题. 2.Eclipse File-->Import 3.Import视窗内选择 General-->Preferences 4.选 ...
- DCalendar增加月份选择功能--简单jQuery日期选择器插件改动
做时间插件的时候,很多都会遇到要做选择月份的插件,但是DCalendar提供的api只支持日期选择,最近遇到这个问题,所以调整了一下源码,话不多说,先看效果吧 点击日期插件,出现上图,再点击月份就直接 ...
- VR全景:互联网与实体店的完美结合
VR元年已过,VR项目.VR创业潮转为理性,VR行业分为两个方向:硬件和内容.硬件又分为VR头显和辅助设备,内容又分为VR全景和VR虚拟内容,如游戏.娱乐.根据行业划分为VR+购物,VR+教育,VR ...
- 初次使用git配置以及git如何使用ssh密钥(将ssh密钥添加到github)
初次安装git配置用户名和邮箱 初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are. 你需要运行命令来配置你的用户名和邮箱: $ git con ...
- Nuget常用命令操作
Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加.移除和更新引 ...
- NancyFx 2.0的开源框架的使用-Forms
同样的像前面2篇博文一样,每个项目的开始基本都是建个空的Web项目 在NuGet库中安装以下几个NuGet包 Nancy Nancy.Authentication.Forms Nancy.Hostin ...
- Windows 2008 R2下 如何简单使用IIS来配置PHP网站
虽然PHP网站配置一般大多数人可能会联想到用Apache+php+mysql来配置,但是呢,如果是为了安全性考虑或者是说是为了便捷高效快速的完成工作,那么Apache+php+mysql这个配置工作就 ...
- MySQL ProxySQL读写分离实践
目的 在上一篇文章MySQL ProxySQL读写分离使用初探里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异.深入一些去了解ProxySQL,通过测试来说明Pr ...