zoukankan      html  css  js  c++  java
  • 《编程格调》摘录笔记

    编程格调/The Elements of Programming

    仅仅通过听取一般原理,就想很好地掌握程序设计,这是不可能的事。

    一、绪论

    撰写简洁的程序——不要耍聪明

    编程是为了解决问题,要点在于使代码的意图不会被误解,而不是为了炫技。简洁、真确是首要的。

    尽量编写更通用的程序

    好的程序应当能够返回错误信息或简短消息

    Tacey:不要把计算机的输出奉为圭臬。但,时代发展至今,多数错误还是要在自己写的代码中找。

    二、表达

    语句的完美表达是用任何注释、格式规范或补充文档都无法替代的。

    简单并且直接地表达你要说的意思

    尽量使用语言内置函数、模块。

    使用库函数

    代码过度“精明”和代码过度“简单”一样难于理解。

    避免使用临时变量

    在现代语言中这已经不是太过重要的注意点了

    代码要清晰,不要为了“效率”牺牲可读性

    让机器干脏活

    没必要为机器感到劳累,机器没有“人格”。机器的成本远小于人员成本

    用函数调用替代重复的表达式

    这已经是编程的常识

    加括号避免歧义

    括号很重要,可以避免歧义,不用过度记忆优先级,减少脑力、心智负担

    选择不会被混淆的变量名

    这已经是编程常识

    避免不必要的分支

    注意精简代码,精简逻辑

    使用语言好的特性,避免使用不好的特性

    要熟悉、理解自己常用语言的特性。扬长避短

    不要使用条件分支来代替一个逻辑表达式

    注意逻辑的清晰。

    如果通过电话大声朗读,其他人就能理解你的代码,这就说明代码写的足够清楚。

    三、控制结构

    计算机程序是数据的表示和控制流的语句所塑造的。

    使用DO-WHILE来进界定语句组

    已经是编程常识。在Python中甚至已经是语法的一部分强制规定

    用IF-ELSE强调两个操作中只有一个被执行

    用DO-WHILE来强调循环的存在

    这个要看具体的语言语法了。主要的是明确循环退出的那部分,不要将其隐藏在循环的内部。

    确保你的程序是自顶向下阅读的

    方便阅读,在实际编程中是有一定限制的

    使用IF...ELSE IF ... ELSE IF ...ELSE来实现多路分支

    额,现在多数语言都支持了switch语法。

    使用基本的控制流结构

    过时了

    先用容易理解的伪语言编写代码,然后再翻译成你需要的语言

    在构建一个模型、服务时,先用流程图、示意图分析整个流程。或者先试着写代码的整个结构。

    避免使用ELSE GOTO 和ELSE RETURN

    尽量把RETURN语句放置在函数尾部

    判断要尽肯能紧挨着与之相关的操作

    除非判断是为了确定一个后续操作的一个标志。

    选择可以简化程序的数据表示方法

    不要止步于第一遍的代码草稿

    不断重构优化代码

    四、程序结构

    多数的程序规模都太大,以至于难以当作一个整块来理解,必须划分成更小的部分才能分别掌握。这是编写可靠程序的唯一方法,也是阅读和理解程序的唯一途径。

    把代码合理地划分到模块之中是编写程序很重要的一个方面。

    模块化,使用子例程

    已经是常识。现在

    让模块之间的耦合变得可见

    每一个模块都应该做好一件事

    确保每一个模块都隐藏好一些东西

    以数据为导向来构建程序的结构

    不要修补烂代码——重写它

    分块编写和测试大的程序

    对于递归定义的数据结构使用递归过程

    五、输入和输出

    校验输入的合法性和合理性

    保证输入数据不会未被程序的限制

    利用文件结束符号或结束标志来终止输入,不要让用户去计数

    识别出非法输入数据,如果可能则纠正之

    使用同一的形式处理文件结束条件

    使输入数据易于准备,并让输出数据意义不言自明

    使用统一的输入格式

    让输入数据易于校对

    尽肯能选择自由格式输入

    输入含义自明的输入,指定默认值,将以上二者输出

    将输入与输出局限在子例程中

    六、常见错误

    确保所有的变量在使用之前被初始化

    不要停留在一个bug上

    使用调试编译器

    在DATA语句或INITIAL属性初始化常量,用可执行语句初始化变量

    小心“差一”错误

    要注意对不等式进行正确的分支

    避免循环有多个出口

    确保你的代码巧妙地“不做事情”

    在边界上测试程序

    预防性编程

    10.0乘以0.1不等于1.0

    不要比较浮点数是否相等

    七、效率和测试工具

    先做对,再做快

    在提高程序运行速度时,要保持其正确性

    先把程序改得简介,再提高其运行速度

    不要为了“效率”上的蝇头小利而牺牲程序的简洁性

    让编译器执行平凡优化

    不要勉强的服用代码,应该进行改变

    保证特殊情况真的有特殊性

    保持简单性,反而会更快

    不要为了提高速度而画蛇添足——去寻找更好的算法

    在程序中放置测试语句 ,“增效”之前先执行测算

    八、文档

    确保注释和代码一致

    不要注释复述代码做的事情,每个注释都要有实际意义

    不要注释糟糕的代码——重写它

    使用含有意义的变量名

    使用含有意义的语句标签

    程序的格式要有助于读者理解

    用缩进来体现程序的逻辑结构

    记录你的数据规划

    不要过度注释

  • 相关阅读:
    软件质量的“奥秘”(一)——虚伪的质量
    IT项目管理中的假设约束依赖和承诺
    [转载]IT知识体系结构图
    如何看待项目开发过程中基于度量结果的绩效考评
    我常用的一些ASP自定义函数
    女生永远也不知道男生为什么***
    系统分析员、系统架构师、项目经理的区别
    软件工程知识体系全景图
    my music / NightWish / Groove Coverage / DJ
    qiushibaike.com
  • 原文地址:https://www.cnblogs.com/taceywong/p/11031803.html
Copyright © 2011-2022 走看看