要区别一个模块是否设计良好,最重要的因素是,对于其他模块而言该模块隐藏其内部数据和其他实现细节的程度.设计良好的模块应该隐藏所有实现细节,将API与其实现清晰地隔离开来.这样,模块之间通过他们的API进行通信,而不必知道其他模块的内部工作情况.这个概念被称为信息隐藏(information hiding)或封装(encapsulation),是软件涉及的基本原则之一. 信息隐藏之所以重要有许多原因,大多数原因都源于这样一个事实:它可以将组成系统的各个模块解耦,使得这些模块可以独立地开发.测试.优…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 类和接口是Java编程语言的核心.它们是抽象的基本单位.该语言提供了许多强大的元素,可以使用它们来设计类和接口.本章包含指导原则,帮助你充分利用这些元素,使你的类和接口是可…
类和接口 第13条 使类和成员的可访问性最小化 1.设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况:即信息隐藏或封装,是软件设计的基本原则之一. 2.Java提供了许多机制来协助信息隐藏.访问控制(access control)机制决定了类.接口和成员的可访问性(accessibility). 3.第一规则:尽可能地使每个类或者成员不被外界访问.或者说在保证功能的情况下,使用最小的访问级别. 4.…
本文参考 本篇文章参考自<Effective Java>第三版第十五条"Minimize the accessibility of classes and members" Access modifiers (private, package-private, protected and public) 访问修饰符 同类 同包 不同包子类 不同包非子类 private √       package-private(默认) √ √     protected √ √ √  …
尽可能地降低可访问性 接口和成员变量访问级别四种访问级别: 私有的(private) --- 只有在生命该成员的顶层类内部才可以访问 包级私有的(package-private) --- 缺省的"default"访问级别 声明该成员的包内部的任何类都可以访问这个成员 受保护的(protected) --- 该类的子类和包内部的任何类都可以访问该成员 共有的(public) --- 在任何地方都可以访问该成员 注: 1 . 方法覆盖超类的一个方法,访问的级别不允许低于超类中的访问级别 2…
1.为什么要使类和成员可访问性最小化 它可以有效地解除组成系统的各模块之间的耦合关系,使得这些模块可以独立的开发 测试 优化 使用 理解和修改.提高软件的可重用性 2.成员的访问级别 私有(private):只有在声明该成员的顶层类内部才可以访问这个成员 包级私有(package-private):声明该成员的包内部的任何类都可以访问这个成员(缺省访问级别) 受保护的(protected):声明该成员的类的子类可以访问该成员 公有的(public)在任何地方都可以访问该成员 3.类具有公有的静态…
为了使类成为不可变的,应该遵循以下五条原则: 1. 不要提供任何会下盖对象状态的方法 2. 保证类不会被扩展 3. 使所有的域都是final的 4. 使所有的域都成为私有的 5. 确保对于任何可变组件的互斥访问(如果类具有指向可变对象的域,不要暴漏该对象的引用,也不要使用客户端提供的引用直接初始化该域.可以使用保护性拷贝技术)…
第13条:使类和成员的可访问性最小化 第一规则很简单:尽可能地使每个类或者成员不被外界访问.换句话说.应该使用与你正在编写的软件的对应功能相一致的.尽可能最小的访问级别. 对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别:包级私有的(package-private)和公有的(public).如果你用public修饰符声明了顶层类或者接口,那它就是公有.否则,它将是包级私有的.如果类或者接口能够被做成包级私有的,它就应该被做成包级私有的.通过把类或者接口做成包级私有,它实际上成了这个包的实现…
1,OC语言的前世今生 , 一, 在20世纪80年代早期,布莱德.麦克(Brad Cox)设计了OC语言,它在C语言的基础上增加了一层,这意味着对C进行了扩展,从而创造出一门新的程序设计语言,支持对象的创建和操作. 二,1985年,被赶出苹果公司的乔帮主成立了Next公司; 三, 1988年,Next计算机公司获得了OC语言的授权,并发展了OC语言库和一个开发环境,1994年,Next计算机公司(同年更名为Next软件公司)和Sun公司针对NEXTSTEP系统联合发布了一个标准规范,名为OPEN…
本文主要分析 C.C++98.C++11.Java 与 Go,主要论述语言的关键能力.在论述的过程中会结合华为各语言编程专家和华为电信软件内部的骨干开发人员的交流,摒弃语言偏好或者语言教派之争,尽量以客观公正的角度来论述下各个语言的特点和不足,对语言选型作为一个客观的参考. 把这些写出来,期望得到大家的指正与反馈,让整个分析更客观,性能方面,着重对 Go 做深入剖析参考.内容很多,期望不会让你望而却步. 语言整体概要 1.Go 在并发方面, goroutine 和 channel 机制提供了语言…