zoukankan      html  css  js  c++  java
  • 《代码大全》阅读笔记06

    《代码大全》阅读笔记06

    可以工作的类

    抽象数据类型定义

    ADT(abstract data type),是指一些数据以及对这些数据所进行的操作的集合。 

    使用ADT的益处:

    1、 可以隐藏实现细节。

    2、 改动不会影响到整个程序。

    3、 让接口提供更多的信息。

    4、 更容易提高性能。

    5、 让程序的正确性更显而易见。

    6、 让程序更具有自我说明性。

    7、 无须在程序内部到处传递数据。

    8、 你可以像在显示世界中那样操作实体,而不用在底层实现细节上操作他。

    良好的类接口

    定义类的时候,把public放在最前面,使用类的时候,一下就可以看到公共的方法。

    1、 类的接口应展现一致的抽象层次。每一个类应该实现一个ADT,并且仅实现这个ADT。如果你发现一个类不止实现了一个ADT,或者不能确定究竟它实现了何种ADT,你就应该把这个类重新组织为一个或多个定义更加明确的ADT。

    所谓层次一致,就是要所有的接口都是围绕ADT中的“data”来展开的。并且,要对实现的细节进行隐藏。

    2、 一定要理解类实现的抽象是什么。

    3、 提供成对的服务。大多数接口都有相应的,相等的,相反的操作。

    4、 把不相关的信息转移到其他类中

    5、 尽量让接口可编程,而不是表达语义。编程部分有接口中的数据类型和其他属性构成,编译器强制要求他们。语义部分则由“本接口将会怎样被使用”的假定组成,编译器无法强制检查,比如,接口A应该在接口B调用前调用,否则会引起崩溃;调用接口A前需要设置全局变量。等。断言可以将语义部分转换为编程部分?深入研究一下断言。

    6、 谨防在修改时破坏接口的抽象。流程编辑中的Node类现在有点杂乱了。

    7、 不要添加与接口抽象不一致的公用成员,每次向类中的接口中添加子程序时,问问“这个子程序与现有接口提供的抽象一致吗?”,如果不一致,该如何解决?我遇到过类似的问题,可以参考一下设计模式

    8、 同时考虑内聚性和抽象性。

    良好的封装

    “设计精良的模块和设计糟糕的模块的唯一最大区别,就是对其他模块隐藏本模块内部数据和其他实现细节的程度。”——Joshua Bloch。

    封装是比抽象更强的一个概念。抽象通过让你忽略实现细节的模型来管理复杂度,而封装则强制阻止你看到细节

  • 相关阅读:
    决策树
    flask数据库的迁移
    flask的查询,一对多,多对多
    django的验证码
    第一讲:python环境配置(python2.7+python3.7)
    pytest
    【TS】-类型兼容性
    HTML--src和href的区别
    JS--为什么null是对象?
    JS--null和undefined的区别
  • 原文地址:https://www.cnblogs.com/zhangbaohai/p/8302524.html
Copyright © 2011-2022 走看看