访问控制-代码的多级管理

来源:互联网 发布:百度网络定位功能设置 编辑:程序博客网 时间:2024/05/22 17:46

8.2控制访问

1.任何一门技艺到了高级阶段,都是度的学问

2.客户识

客户意识的缺少有几种原因:

首先,不是每个人都有机会开发大型,关键的软件,许多程序员的客户主要是他自己或少数几个开发组成员,修改软件影响到

的代码不多,影响到的人也不多,没有真正吃过设计不当的苦头。

其次,开发库和框架的人毕竟是少数,大多数人开发的代码主要是自己调用或直接针对终端消费者的。即使他们写了一些重用代码

如果代码质量不让认可,也可能无人采用,当一个人习惯于自弹自唱时,是很难培养客户意识。

最后,正如我们在对象范式中指出的,过程式编程鼓励自顶向下,而OOP鼓励自底向上,顶是低的客户,问题是许多OOP程序人习惯于

过程是编程。所设计的类主要是调用其他类或接口,而不是被调用,换句话,它们设计的代码主要角色是客户,而不是客户的服务者

3.如果能认识到客户意识的重要性,培养起来并不难,记住:轻诺者,必寡言。每一个Public类,梅一个非private成员,都是一份承诺。

在没有明确职责,没有准备承担后果之前。请采用最严格的访问控制,有了客户意识,才有接口层次化,千万不要为追求廉价的重用

而轻易扩大接口范围。


8.3接口服务-讲诚信与守规矩

1.作为服务的提供者,最重要的是讲诚信

首先服务要有可靠性,不能阳奉阴违--即接口必须履行它的承诺

其次,服务要有稳定性,不能朝令夕改--即接口一空开,不得随意变更


2.服务的可靠性保证了规范抽象

服务的稳定性保证了数据抽象

3.高质量的服务还要有纯粹性和完备性、

OOP上,则是一个类只提供一套服务,但要完善

4.关键不在于服务数量的多少,而在于服务的一致性和关联性,如果一个类提供几种关联性不强的服务,可以考虑将其划分为几个类,

如果几个类分别提供互补的服务可以考虑将其合并为一个类


5纯粹性和完备是相对的概率与具体场景和语境有关。

餐馆的厨师兼任服务员和厨工是不合理,但一个家庭要请钟点工,然他身兼多职又是合理。有一点请大家记住,目前我们讨论的中心

是类的服务,类似智能手机这种大而全的类,在整个类结构中应该处于顶端的,更多时候不是提供服务而是享受服务,这样的类布局数量

少,而最终实现是建立在大量功能更单一的基础类之上.


6作为服务的享受者,做重要的是守规矩,享受人家服务,自然要按照人家的规矩,否则服务奖得不到保证


7.封装的代码不仅要屏蔽客户代码的访问,最好还能屏蔽客户代码的访问,这样既能鼓励代码作者多些规范稳定,有鼓励带按摩用户多度

规范文档,一切以规范为中心,而不以源码为中心。


8.不要轻视任何一个接口,哪怕它暂时只有空语句的实现,事实上,许多空接口就是为将来的功能扩展预留的,随时可能被充实,或者被

子类覆盖


9.使用类应该以规范文档为依据

不能以源码为依据,前者代码抽象接口,后者代码具体实现,如果文档不够明确,应尽可能滴与作者通过不断改进提交文档交流


10.访问控制职能维护语法上的封装和信息隐藏,而语义上的封装职能靠规范文档来维护,对程序员而言。前者是一种知识,后者是一种素质。

原创粉丝点击