PHP程序开发的原则汇总

你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起 。 ----- Arthur J.Riel

(1)所有数据都应该隐藏在所在的类的内部。

(2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。

(3)尽量减少类的协议中的消息。

(4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。

(5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。

如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。

(6)不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。

(7)类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。

(8)类应该只表示一个关键抽象。

包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响 .

(9)把相关的数据和行为集中放置。

设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。

(10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。

朝着稳定的方向进行依赖.

(11)确保你为之建模的抽象概念是类,而不只是对象扮演的角色。

(12)在水平方向上尽可能统一地分布系统功能,也即:按照设计,顶层类应当统一地共享工作。

(13)在你的系统中不要创建全能类/对象。对名字包含Driver、Manager、System、Susystem的类要特别多加小心。

规划一个接口而不是实现一个接口。

(14)对公共接口中定义了大量访问方法的类多加小心。大量访问方法意味着相关数据和行为没有集中存放。

(15)对包含太多互不沟通的行为的类多加小心。

这个问题的另一表现是在你的应用程序中的类的公有接口中创建了很多的get和set函数。

(16)在由同用户界面交互的面向对象模型构成的应用程序中,模型不应该依赖于界面,界面则应当依赖于模型。

(17)尽可能地按照现实世界建模(我们常常为了遵守系统功能分布原则、避免全能类原则以及集中放置相关数据和行为的原则而违背这条原则) 。

(18)从你的设计中去除不需要的类。

一般来说,我们会把这个类降级成一个属性。

(19)去除系统外的类。

系统外的类的特点是,抽象地看它们只往系统领域发送消息但并不接受系统领域内其他类发出的消息。

(20)不要把操作变成类。质疑任何名字是动词或者派生自动词的类,特别是只有一个有意义行为的类。考虑一下那个有意义的行为是否应当迁移到已经存在或者尚未发现的某个类中。

(21)我们在创建应用程序的分析模型时常常引入代理类。在设计阶段,我们常会发现很多代理没有用的,应当去除。

(22)尽量减少类的协作者的数量。

一个类用到的其他类的数目应当尽量少。

(23)尽量减少类和协作者之间传递的消息的数量。

(24)尽量减少类和协作者之间的协作量,也即:减少类和协作者之间传递的不同消息的数量。

(25)尽量减少类的扇出,也即:减少类定义的消息数和发送的消息数的乘积。

时间: 2024-11-01 00:43:45

PHP程序开发的原则汇总的相关文章

自己提出的程序开发三大原则:代码简洁,结构清晰,合理运用

(合理运用) 因为图像尺寸只有两个属性,宽和高,也没有什么更复杂的应用逻辑,所以用构结而不用类 (代码清晰) 对于一个类来说,如果它的属性对外部是不可写的,我们可以使用以下方法,如果对于一个类来 说,它的构造方法可以根据实际业务情况进行重载方法的设计,如下,如果建立实现zzl时,不 传递任何参数,它的默认值就是zzl,密码就是zzl123,这样设计的好处就是减少了用户实例化时 的代码量.     (结构清晰) 对于一个对象来说,如果它的内部功能需要与很多对象使用,那应该把它提升为一个抽象基类,把

J2ME程序开发全方位基础讲解汇总

程序     一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识:   1.Java语法基础:包括基本数据类型.关键字.运算符等等   2.面向对象的思想:类和对象的概念,继承和多态等等.   3.异常处理   4.多线程 J2ME

Mac 应用程序开发的绝佳起点

  你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 Mac App Store 变得简单.遵循本路线图以了解如何取得开发工具,理解主要概念及最佳实践,并学会查找更多信息.   继续遵循此路线图,你将使用到 Xcode(Apple 提供的集成开发工具)来开发 Mac 应用程序.你将了解 Objective-C(驱动所有Mac应用程序和框架的程序设

现流行数据库程序开发工具的比较分析

比较|程序|数据|数据库 [程序开发系列一]现流行数据库程序开发工具的比较分析 武汉华中师大信管系 谢刚 摘要:随着计算机技术不断发展,各种数据库编程工具也随着发展,使当今的大多数程序开发人员可以摆脱枯燥无味的用计算机指令或汇编语言开发软件,而是利用一系列高效的.具有良好可视化的编程工具去开发各种数据库软件,从而达到事半功倍的效果,但是现在市面上的数据库编程工具门类众多,优良不齐,比如VB,VC,DEPHI,PB等,对此我特别针对流行的开发语言介绍相应的较为成熟的数据库编程工具. 关键字:数据库

中国高校勤工助学网站程序开发质量和管理标准化

标准|程序 本标准化文档主要针对中国高校勤工助学网站(以下简称中勤在线)的现有技术和发展方向,对网站后台程序的开发作一份详细的规范,仅供中勤在线程序员参考学习.本文档分为两部分,第一.程序开发标准化,其意义为规范各程序员在完成本职工作过程的一切操作行为的标准:第二.程序管理标准化,其意义为规范程序员的管理,考核,培训,奖惩. 一. [程序开发质量标准化]1.开发环境 目前,中勤在线的具体开发/调试/运行环境基本为:程 序:Asp 3.0平 台:Win2K Server + IIS 5.0数据库:

用事实说话!AJAX应用程序开发七宗罪

ajax|程序 AJAX bandwagon是个好去处.它带给你更快.更高效.更强动态的应用.但它也有自身的缺陷. 初一看,具备一些常识似乎就能避免这些缺陷,在一定程度上,的确如此.但从DHTML起源来看,AJAX应用程序充满了结构性差异.不论你在应用程序开发工作中掌握了多少常识,从别人犯的错误中吸取教训也是有好处的.我们称这些错误为"七宗死罪",但它们不能代表全部的错误. 事实上,在你犯这些致命过失之前,你可能首先犯了一些较轻的错误.因此我们从这里着手.这是每个人都可能犯的错误.这些

Visual Studio Whidbey——Web应用程序开发新功能预览

visual|web|程序 摘要:本文介绍了代号为"Whidbey"的Microsoft Visual Studio中一些能够加快和便于数据驱动Web应用程序开发的新功能.这些新功能包括:更好的HTML源代码编辑器,更好的IntelliSense,改进的数据访问支持,以及完全支持XHTML标准等.      内容:   ·更好的HTML源代码编辑器   ·更好的可视化设计器   ·更好的Web项目管理   ·更好的数据访问支持   ·更好的标准支持   ·总结      即将发布的产品

使用ADO封装类的数据库程序开发实例[第二版](上)

从上次在VC知识库发表<使用ADO封装类的数据库程序开发实例>一文后,得到许多网友的响应,甚觉欣慰.但由于我对ADO也非完全精通,所以上次写的类很不完美,甚至可能给某些朋友带来麻烦,因此一直想把它写得更完善一点. 现在写的这个类功能应该说比较完善了,基本上封装了ADO组件的大部分方法,并扩展了一些人们常用到的方法,如把文件或图片写到数据库中,从数据库中读出位图字段,字段的值的智能转换等等. 因为实在是时间不够,我几乎没有对command类做任何有效的测试,也没有写相关的文档,而对connect

2015年最好的10个在线web开发资源网站汇总

  2015年最好的10个在线web开发资源网站汇总来啦!今天,小乐哥推荐2015年最好的10个在线web开发资源网站,希望大家会喜欢它们. 在线Web开发资源可用于查找高品质的网页设计教程,包括HTML.CSS.JavaScript等等可信赖的资源. Web开发资源是开发人员学习开发技能和技巧的最好途径.如果你是一名优秀的Web开发人员,那么你肯定会不断寻找各种方法来提高你的设计能力,扩大你的技术库,及时了解最新的Web设计趋势.可利用的Web开发资源很多,DVD光盘.书籍--,最简单的就是互