




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP和JS的代码组织,2015-11-06,1,目,录,1,2,3,4,5,6,PHP和JS在公司已有项目中的作用,面向过程和面向对象,PHP面向对象,PHP良好的代码组织实践,JS函数式编程,闭包和面向对象,总结,2,PHP和JS在公司已有项目中的作用,官网,A,OA,B,易宝,C,易火,D,3,?,对象狂热,过程狂热,面向过程和面向对象,面向对象与面向过程在许多编程语言中只能使用二者之一来进行编程,但是PHP语言与其他编程语言有不同之处,那就是我们可以自由的选择或者将PHP面向对象和PHP面向过程二者混用。PHP的一些基础开发,PECL和PEAR都收到了很多赞扬和批评。这两个项目为阐明PHP面向过程和面向对象编程的区别提供了很好的例子。,4,ThePHPExtensionCommunityLibraryPHP扩展模块过程狂热,最喜爱的编程语言是C和汇编,写驱动程序,文件系统或其它的偏向底层的编程,他们的注意力集中于速度和代码的精炼。PECl提供了PHP的扩展库,用C和面向过程的方式开发,注重速度和简洁精炼。通常,这些都是从已经存在的LGPL软件中移植而来,其中许多有趣的特性已经加入PHP。毕竟,PHP是用C写的。(PhpMyAdmin),PECL,面向过程,5,ThePHPExtensionandApplicationRepositoryPHP扩展与应用库对象狂热,在任何时候使用PHP面向对象的风格来书写代码。他们没有真正考虑过用这种方式是否会影响程序的执行效率。PEAR则贡献了很多有趣的类如建立Excel表或改变DNS记录等。使用PEAR类库可以为你节约大量时间。(Smarty,ThinkPHP),PEAR,面向对象,6,PHP面向对象三大特征,1、封装,1,2、继承,2,3、多态,3,1.封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作.2.继承可以解决代码复用,让我们的编程更加靠近人类思维.3.重载”是类的多态的一种实现。覆写,子类可以把父类中继承过来的方法进行重写,便于扩展。,7,当系统各部分代码紧密绑在一起时,就会产生密耦合,这时在一个组件中的变化会迫使其他部分随之改变。,低耦合,03,内聚是一个模块内部各成分之间相关联程度的度量。低内聚的代码间关联范围广,维护很困难。,高内聚,02,过程式代码忙于处理细节,而面向对象代码只需一个接口即可工作,并且不用考虑实现的细节。,职责分明,01,正交指将职责相关的组件紧紧组合在一起,而与外部系统环境隔开保持独立。,正交,04,面向对象设计,8,MVC,企业模式,数据映射.,数据库模式,单例模式工厂方法模式抽象工厂模式,生成对象的模式,组合模式装饰模式外观模式,组织对象和类的模式,解释器模式策略模式观察者模式访问者模式命令模式,面向任务的模式,设计模式,9,一、DuplicateCode(重复代码),1、同一个类,两个方法含有相同表达式。解决方法:你可以ExtractMethod提炼重复代码,然后让这两个方法都调用这个ExtractMethod。2、两个类,有相似的方法。解决方法:(1)把两个类的方法提出来,共同构造一个父类。(2)把其中一个类的方法删除,调用另一个类的方法。,”,“,PHP良好的代码组织实践,10,二、LongMethod(过长的函数方法),1、短函数:代码阅读费点力气,因为我们必须经常转换上下文去看看子程序做了什么。但是让smallmethod容易理解的真正关键在于一个好的名字。读者可以通过名字了解函数的作用,根本不必去看其中写了些什么。早期的编程语言中,调用方法需要额外开销,这使得coder不愿意使用smallmethod。但是现代的OO语言几乎已经完全免除了process内的额外开销(函数调用)。2、注释地方提炼信号:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。可以对一组或甚至短短一行代码做这件事。只要函数名称能够解释其用户,我们也该毫不犹豫地那么做。,”,“,PHP良好的代码组织实践,11,12,13,动机,简短而有良好命名的函数:finelygrained(细粒度)1、复用机会大。2、函数读起来像读一系列comments。3、函数覆写容易。,14,三、LargeClass(万能的类),1、Class内数个属性变量有相同前缀或者字尾,可使用ExtractClass。2、Class内并非大多数变量使用属性变量,可使用ExtractClass。3、有太多代码,可ExtractClass。,”,“,PHP良好的代码组织实践,15,四、ReplaceTempwithQuery(查询替换临时变量),如果一个Temp变量,保存一个表达式,将这个表达式ExtractMethod。这就是所谓的查询式,query,”,“,PHP良好的代码组织实践,16,17,动机,1、局部变量会使代码难以提炼。2、临时变量会驱使你写出更长的代码。如果改成querymethod,那么class下的method,都可以获得这份信息。将编写出更清晰的代码。3、ReplaceTempwithQuery往往是你运用ExtractMethod之前必不可少的步骤。,18,函数式编程让JS更优美,函数式编程只描述在程序输入上执行的操作,不必使用临时变量保存中间结果。重点是捕捉“是什么以及为什么”,而不是“如何做”。与将重点放在执行连续命令上的过程性编程相比,函数式编程的重点是函数的定义而不是状态机(statemachine)的实现。函数式编程概念,包括匿名函数、调用函数的不同方法,以及将函数作为参数传递给其他函数的方式。在许多情况下,JavaScript的重复代码导致了一些拙劣的编码。如果使用函数式编程,就可以避免这些问题。此外,可以利用函数式编程风格编写更加优美的回调。,下一代编程,19,闭包就是能够读取其他函数内部变量的函数闭包是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。另一方面,在函数外部自然无法读取函数内的局部变量。,理解并用好闭包(closure),20,可以读取函数内部的变量,1,让这些变量的值始终保持在内存中,2,闭包的用途,21,使用闭包的注意点,1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(PublicMethod),把内部变量当作它的私有属性(privatevalue),这时一定要小心,不要随便改变父函数内部变量的值。,“,”,22,JS的面向对象,面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装、继承、多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义JS中对象:无序属性的集合,其属性可以包含基本值、对象或者函数。可以简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法)。,23,Loremipsumdolorconsecteturadipisicingdoeiusmodtemporincididuntlaboreoloremagnaaliquadoloradipisicingdodoeiusmodtemporincicicdiduntlaboreipsumdolor.,工厂模式,构造函数模式,原型模式,组合构造和原型,动态原型,创建对象,24,原型链,借用构造函数,组合继承,原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行写作比赛试题及答案
- 文秘专业试题及答案
- 化水专业试题及答案
- 新闻专业笔试题及答案
- 幼儿文学专业试题及答案
- 林业专业知识考试试题及答案
- 湖北省汉川市金益高级中学2025-2026学年高二上学期9月起点考试英语试卷(解析版)
- 电路专业笔试题目及答案
- 广东省汕头市潮阳区六校2024-2025学年八年级下学期5月月考地理试卷(含答案)
- 客厅吊顶平顶施工方案
- (2025年标准)禁止学生早恋协议书
- 智能会计应用课件
- 2025年日语能力测试N1级试卷:真题模拟分析与预测模拟试题
- 三方委托付工程款协议书
- 学校课后延时服务费分配细则
- 2025年化工自动化控制仪表考试题模拟考试题库及答案
- 2025中煤电力有限公司总部及所属企业招聘16人笔试参考题库附带答案详解(10套)
- 幼儿园仓库卫生管理制度
- 钾离子结合剂在慢性肾脏病患者高钾血症治疗中应用的中国专家共识重点2025
- 别墅整装交付管理办法
- 《风景谈》课件-课件
评论
0/150
提交评论