zoukankan      html  css  js  c++  java
  • 代码大全2阅读笔记 10~1

    第6章 可以工作的类

    警惕有超过约7个数据成员的类。

    优先使用“深层副本(deep copies)”,除非论证可行,才采用“浅层副本(shallow copies)

    第7章 高质量的子程序

    复杂的布尔判断,应该使用子程序来实现。

    人类很难同时记住超过7个单位的信息。

    子程序的名字是它的质量的指示器。如果名字糟糕但恰如其分,那说明这个子程序设计得很差劲。如果名字糟糕而且又不准确,那么它就反映不出程序是干什么的。不管怎样,糟糕的名字都意味着程序需要修改

    第8章 防御式编程

    • 保护程序免遭非法输入数据的破坏。检查所有来源于外部的数据的值。
    • 用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况。
    • 可以让软件的某些部分(某个抽象层,公用方法等)处理“不干净的”数据,而让另一些部分处理“干净的”数据,即可让大部分代码无须再担负检查错误数据的职责。

    异常

    用异常通知程序的其他部分,发生了不可忽略的错误。在恰当的抽象层次抛出恰当的异常,比如底层异常不应该在高层抽象中被抛出。

    第3部分 变量

    第10章 使用变量的一般事项

    初始化

    • 在声明变量的时候初始化。
    • 理想情况下,在靠近第一次使用变量的位置声明和定义改变量。
    • 在可能的情况下使用final或者const。

    作用域

    使变量的引用局部化,减小变量的作用域:

    • 在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。

    • 直到变量即将被使用时再为其赋值。

    • 把相关语句放在一起,可能的情况下提取成单独的子程序。

    • 开始时采用最严格的可见性(比如设为private),然后根据需要扩展变量的作用域。

    “方便性”和“智力可管理性”两种理念之间的区别,归根结底来源于侧重写程序还是读程序之间的区别。

    每个变量只应该用于单一用途,且不应该有隐藏含义(比如当x大于5000时代表什么)。

    第11章 变量名的力量

    通常,对变量的描述就是最好的变量名。名字对于代码读者的意义要比对作者更重要。

    一个好名字通常表达的是“what”而不是“how”。一般而言,如果一个名字反映了计算的某些方面而不是问题本身,那么它反映的就是“how”而不是“what”了。

    较长的名字适用于较长的作用域,较短的名字适用于短的作用域(循环、小的方法等)。

    计算限定词,如Total、Sum、Average、Min、Max、String、Pointer等等,应该放在名字的最后。

    典型的布尔变量名:done, error, found, success, ok等。布尔变量应该是那些隐含了“真/假”含义的名字,如done和success等。应该使用肯定的布尔变量命名,而不是notFound,notDone等。

    枚举类型要有统一的组前缀。

    避免使用具有相似含义的名字。如果你能够交换两个变量的名字而不会妨碍对程序的理解,那么你就需要为这两个变量重新命名了。

    命名规则应该能够区分局部数据、类的数据和全局数据。

    第12章 基本数据类型(Fundamental Data Types)

    Tips:

    • 避免使用Magic Number。

    • 每次遇到除法时都要检查预防除零错误。

    • 显式地使用类型转换。

    • 避免混合类型的比较。

    • 整数:小心溢出。

    • 浮点数:避免“相等”判断,避免数量级相差巨大的数之间的加减运算。

    • 字符和字符串:尽早决定是否使用Unicode

    • C语言中的字符串:

      • 警惕任何包含字符串和等号的表达式

      • 字符串的长度声明为“CONSTANT+1”

      • 用null初始化字符串以避免没有结束符的字符串,使用calloc()而不是malloc()

    • 布尔变量:使用布尔变量来简化复杂的判断

    • 数组:

      • 任何情况下,确认所有的数组下标都没有超出数组的边界

      • 尽量使用容器来取代数组,或者将数组作为顺序化结构来处理

    • 自定义类型

      • 使用自定义类型(通过typedef等方法)实现更好的抽象

      • 给所创建的类型取功能导向的名字,避免使用那些代表了计算机数据类的类型名(如BigIngeger

    , LongString等)。

    第13章 不常见的数据类型

    • 指针:

      • 把指针的操作限制在子程序或类里面。比如通过NextLink()PreviousLink()等方法代替直接操作指针。

      • 指针的声明和定义放在一起(一行)。

      • 在与“指针分配”相同的作用域中删除指针。

      • 在使用指针之前检查指针。

      • 用额外的指针变量来提高代码清晰度,避免类似pointer->next->last->next等使用指针的方法

      • 在删除或者释放指针之后把它们设为空值(null)

    • 全局数据:

      • 仅在确实需要的使用使用全局数据(首先把每一个变量设置为局部的,仅当需要是再设置为全局的)

      • 全局数据应该让人一看便知,如果使用了全局数据,就公开地使用

      • 用访问器子程序(Access Routines)来取代全局数据

        • 根据全局数据的功能,把全局数据分为不同的模块(包、类)

        • static关键字或者它的等价物来声明该数据,确保该数据只有单一实例

        • 确保对一项数据的所有访问都发生在同一个抽象层上

      文章参考:https://blog.csdn.net/gaopenghigh/article/details/50285363

  • 相关阅读:
    css基础
    html常用标签
    自写一个ant-design-pro AnimationList组件
    设计一个A表数据抽取到B表的抽取过程
    垂直、水平方向观看楼层天际线不变情况下能增加的建筑物高度最大总和
    JavaScript 新旧替换一:变量声明
    前端异常类型及捕获方式
    自定义 create-react-app
    Git Commit 规范参考
    JavaScript 团队规范参考
  • 原文地址:https://www.cnblogs.com/ltw222/p/13759654.html
Copyright © 2011-2022 走看看