初学者如何进行代码重构

只要你想,哪怕是初学者也可以对代码进行重构。

首先要明白的一点是:重构是建立在代码正确可以运行的基础上对其进行优化、改进的过程,我们要做的是使能满足最基本的需求的代码变得更易读、易维护、效率更高 。

1.易读:

我们写的代码是给别人看的,写完的代码你不可能永远维护着,所以有必要让自己的格式代码更容易被别人看懂。

(1)足够多的换行、空格 ,反正解析代码的时候并不会解析这些空白的部分,不用白不用啊,还能显的代码行数多呢^^

(2)要做到这一点,最简单的是添加足够的注释,说明类和方法的功能,方法的入参出参的含义、格式,方法中关键语句的逻辑;

(3)命名方式:用直白的类名、方法名、变量名,用驼峰型(或其他你们项目组规定的变量格式),用$a,$123这样变量名的哪怕加了注释也是够了的。

2.不重复:

(1)类的功能不应该重复:如果重复了说明你应该考虑使用类的继承的

(2)方法的功能不应该重复:哪怕是在不同的类中,完成相同功能的方法用同一个就可以了,将方法的属性设置为public就可以被别的类调用了。如果有很多这样通用的方法,不妨建立一个专门的类存放这样的方法,不至于在调用的时候乱了手脚;

(3)重复使用变量:在类中频繁的使用某个变量,可以考虑创建一个全局的变量取代它,降低内存的耗用;

3.使用成熟的模式和框架:

通俗的说,模式就是前面很多人在进行相同的需求开发,发现自己累死累活的做出来的东西基本都是大同小异的,那么干嘛不创建一种模板,以后碰到类似需求开发的时候,直接套用不就好了。

《深入php对象、模式与实践》一书中讲了这样一个栗子(我改编成大家比较习惯的栗子):

假设有这么一个基类Lesson表示新东方的课程,Lesson类有两个子类:ChineseLesson类表示语文课程,EnglishLesson类表示英语课程;按照上课的形式分为白班和晚班两种,上课的课时和收费都不一样;

于是按照传统的方法会先建立5个类:Lesson类 - ChineseLesson类 - DayChineseLesson类()和NightChineseLesson类

                             -  EnglishLesson类 - DayEnglishLesson类和NightEnglishLesson类

底层的4个子类中分别包含了课程安排的方法lesson()和收费的方法charge()

如果后面有更多种的课程或更多通用的方法(必然会如此),代码重复情况就更严重了,重复意味着高耦合,这是一种不好的现象

一种比较好的解决方案是采用策略模式,通过剔除最底层的方法将Lesson类 - ChineseLesson + EnglishLesson 简化,创建一个策略类Strategy类 - DayStrategy + NightStrategy 。

将Lesson类和Strategy类组合起来,通过创建Strategy类的子类添加新的课程安排或收费模式,并且不会影响到Lesson类

常用的设计模式:单例模式、策略模式、观察者模式、工厂模式……

常用的框架:Yii,thinkphp,CI……

时间: 2024-08-05 21:26:36

初学者如何进行代码重构的相关文章

Windows程序代码重构

代码重构:在程序功能实现之后,对代码进行一定规模的整理,使之符合"高内聚.低耦合"的软件设计原则,便于维护和使用. ①用函数封装消息处理代码--对Windows程序窗口函数中的每一个case程序段进行封装以形成一个消息处理函数,而在case中调用这个函数. ②利用数组或链表实现消息映射表进一步实现代码的隔离--因为窗口函数switch-case结构实质上实现的就是一个根据消息标识来查找消息处理代码的功能,故可以用消息映射表和一段查表程序来替代它,表中的每一项可以使用一个函数指针来指向消

Job Service代码重构遐想

最近有大概半个月的时间可以重构下代码,刚好可以重新整理下Job Service相关的代码.前段时间由于忙于完成Job Service所有功能以及完成对Auto Job的支持以正常上线,使得有些地方的代码写得不是特别优雅.主要集中在以下一些地方: DAG状态的转移 目前DAG状态分为3层,分别为ApplicationStatus.TaskStatus.InstanceStatus.每个层次都有以下几种状态,Waiting.Running.Finished.Stopped.Failed.并且DAG有

第九课、计算器界面代码重构

一.重构的概念 1.重构是以改善代码质量为目的代码重写 (1).使其软件的设计和架构更加合理 (2).提高软件的扩展性和维护性 2.代码实现和代码重构的不同 (1).代码实现:按照设计编程实现,重在实现功能 (2).代码重构:以提高代码质量为目的软件架构优化 (3).区别 A.代码实现时不考虑架构的好坏,只考虑功能的实现 B.代码重构时不影响已实现的功能,只考虑架构的改善 3.软件开发的过程 (1).从工程的角度对软件开发中的活动进行定义和管理 4.什么样的代码需要重构 (1).当发现项目中重复

step 1 代码重构

代码重构 代码重构介绍 重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 1  新建一个方法 ?                     新建方法 ?                     把要抽取的代码,直接复制到新方法中 ?                     根据需求调整参数 2  调整旧代码 ?                     注释原代码,给自己一个后悔的

转有关代码重构

转自:http://blog.csdn.net/weiky626/article/details/1602691 开发人员可能听到过"bad smell"这个词,这个词用在软件编码中是什么意思呢? 代码还有smell吗?当然没有,正如计算机病毒,bug等词一样,这只是个形象的说法.这个词在这里的意思是代码实现了需求,但是代码却不精炼,冗余,结构混乱,难读懂,难维护,难扩展等等.与之相对应的一个词是"refactor",即代码重构.我们在看些外国人写的程序时可以发现,

代码重构实例之数据聚集

敏捷开发强调,要经常重构代码.在开发过程中,往往是开发和重构交替进行.短暂的重构,可以使得后续的开发维护更加容易.我觉得,代码重构可以分为逻辑重构和数据结构重构.数据结构的重构往往需要对代码进行多处改动:但是,数据结构的重构也可以为后续的开发维护带来更大的便利.这里就是一个数据结构重构的例子. 这是以前的一次代码重构经历,今天想起了,就记下来,帮助自己记忆.当然,既然是重构,总得承认自己写的第一版丑陋的代码. 为了方便描述,采用javascript来进行说明. 故事是这样的.刚开始,任务是画一些

妮子的iOS 代码重构1

昨天面试,被问了个代码重构,直接愣住了... 回来稍微看了下,对代码重构有了一点了解...就是让自己的代码有更好的结构,更简洁易读吧,是提高代码质量的一种方法吧!Xcode提供了几个代码重构功能,有Rename(重命名).Extract.Create Superclass.Move Up.Move Down.Encapsulate. 使用:在代码区右击——Refactor,调出重构功能.Rename用于对类名.方法名.属性名等重命名,Extract用于将自己写的一段代码变成一个方法,Create

CSS代码重构

CSS代码重构的目的 我们写CSS代码时,不仅仅只是完成页面设计的效果,还应该让CSS代码易于管理,维护.我们对CSS代码重构主要有两个目的:1.提高代码性能2.提高代码的可维护性 提高代码性能 提高CSS代码性能主要有两个点:1.提高页面的加载性能提高页面的加载性能,简单说就是减小CSS文件的大小,提高页面的加载速度,尽可以的利用http缓存2.提高CSS代码性能不同的CSS代码,浏览器对其解析的速度也是不一样的,如何提高浏览器解析CSS代码的速度也是我们要考虑的 提高代码的可维护性 提高CS

CSS代码重构与优化之路

写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多,如果没有及时对CSS代码进行维护,CSS代码不断会越来越多.CSS代码交错复杂,像一张庞大的蜘蛛网分布在网站的各个位置,你不知道修改这行代码会有什么影响,所以如果有修改或增加新功能时,开发人员往往不敢去删除旧的冗余的代码,而保险地增加新代码,最终的坏处就是项目中的CSS会越来越多,最终陷入无底洞. CSS代码重构的目的 我们写CSS代码时,不仅仅只是完成页面设计的效果,还应该让CSS代码易于管理,维护.我们对CSS