经常出现情况的处理原则
2011-01-12 09:46
232 查看
每一个程序员在长期的代码书过程中,经常会遇到各种各样的情况,会写出千变万化的代码,但是程序员们或多或少的都会遇到似曾相识情况,它们的实际业务可能根本不相同,高人们一般把这种相似的情况抽象为模式,对模式我也是一知半解,在网上还经常听到一个比较流行的词就是重构,对于重构与模式是什么样的东西,它们之间有什么样的联系和区别,我不想去讨论,这样的工作我也做不来,但作为程序员我认为应该经常总结,有自己的想法,对于你遇到的相似情况,要思考该采用什么样的方式来处理,会让自己定出来的程序感觉很“舒服”,这里就结合我自己的学习与理解来进行一个记录与总结
1
使用查询方法取代临时变量
这种说法是我从重构的书本上看到的,使用比较多的临时变量,是很多程序员的毛病,我自己也是如此,问题的本质并不在临时变量,临时变量也没有什么不好,否则就不会有临时变量了。我是这样来看待这个问题的,一个临时变量的背后通常意味着一个算法,而一个算法又往往意味着一个独立的功能(问题多种多样,事实可能并不是如此,但我是这样理解的),如果在一个方法定义中使用临时变量,那么99%可能程序会将这种功能性的算法融入到方法内部,两个或两个以上的这种功能性算法融入在一个方法中(可能意味着两个或两个以上的临时变量),我认为这至少会带来两个不利的因素:A这种功能性算法会被屏蔽,也就是说虽然这些功能性算法已经被设计出来,但是它不能为其它方法提供服务,除了它所在的那个方法;B在一个方法的内部如果存在多个功能性算法,会使这些算法交错偶合在起,这很容易迷惑程序思维与视线,不利于方法的维护。造成这种现象一个主要原因,我认为是很多程序员是从过程化语言开始学习程序设计的,所以在写一个方法的时候总喜欢把思维集中方法内部,没有大局观,只看到眼前的几行代码,当然我意思并不是过程化语言一定会出造成这种现象,只是我认为它比较容易造成这种情况。举一个最常见的例子:在一个方法中有三个求和的临时变量,那么大多数的程序员会使用一个循环,对这三个变量同时求和,而不会在方法内部使用三个循环分别对三个变量进行求和。这就将三个功能性算法进行了偶合,当然在不明实际情况的下,不能对谁优谁劣做出评价,但是如果就前面所说,如果这三个变量分别代表一个对象的三个有实际意义的功能性算法,我认为将三个功能性算法抽取为三个独立的方法会更加优秀,即使这样会做三次循环。关于这个问题我以前总是对性能非常的纠结,但是在99%的情况下应该是没有性能问题,除非情况确实非常特殊。即使存在性能问题,也可以在后期进行优化
1
使用查询方法取代临时变量
这种说法是我从重构的书本上看到的,使用比较多的临时变量,是很多程序员的毛病,我自己也是如此,问题的本质并不在临时变量,临时变量也没有什么不好,否则就不会有临时变量了。我是这样来看待这个问题的,一个临时变量的背后通常意味着一个算法,而一个算法又往往意味着一个独立的功能(问题多种多样,事实可能并不是如此,但我是这样理解的),如果在一个方法定义中使用临时变量,那么99%可能程序会将这种功能性的算法融入到方法内部,两个或两个以上的这种功能性算法融入在一个方法中(可能意味着两个或两个以上的临时变量),我认为这至少会带来两个不利的因素:A这种功能性算法会被屏蔽,也就是说虽然这些功能性算法已经被设计出来,但是它不能为其它方法提供服务,除了它所在的那个方法;B在一个方法的内部如果存在多个功能性算法,会使这些算法交错偶合在起,这很容易迷惑程序思维与视线,不利于方法的维护。造成这种现象一个主要原因,我认为是很多程序员是从过程化语言开始学习程序设计的,所以在写一个方法的时候总喜欢把思维集中方法内部,没有大局观,只看到眼前的几行代码,当然我意思并不是过程化语言一定会出造成这种现象,只是我认为它比较容易造成这种情况。举一个最常见的例子:在一个方法中有三个求和的临时变量,那么大多数的程序员会使用一个循环,对这三个变量同时求和,而不会在方法内部使用三个循环分别对三个变量进行求和。这就将三个功能性算法进行了偶合,当然在不明实际情况的下,不能对谁优谁劣做出评价,但是如果就前面所说,如果这三个变量分别代表一个对象的三个有实际意义的功能性算法,我认为将三个功能性算法抽取为三个独立的方法会更加优秀,即使这样会做三次循环。关于这个问题我以前总是对性能非常的纠结,但是在99%的情况下应该是没有性能问题,除非情况确实非常特殊。即使存在性能问题,也可以在后期进行优化
相关文章推荐
- java语言中出现异常的情况及其处理原则
- BaseAdapter的getView中经常出现position=0的情况
- 为什么多线程线程处理数据经常出现singnal异常,寻址异常
- 阿里2015 实习笔试题笔记 分布式系统中的RPC请求经常出现乱序的情况
- 关于div的设置:display:inline-block出现div对不齐的情况处理方法·
- 在 centos下 yum安装出现 package is no available情况处理
- Python 文件中出现中文情况处理
- 在jsp中出现异常后应该停止往下执行的情况,怎么处理?
- css不兼容情况 background-position在firefox下不兼容,出现图片位置不对,的处理情况;ie6、ie7强制选择器。
- 基础知识记录:OOM异常出现的情况与处理方式
- 步进电机在运行过程中出现“只响不转”的情况该怎样处理
- Python读取数据库,处理中文输出时,出现问号的情况
- sql 在not in 子查询有null值情况下经常出现的陷阱
- Ceph中出现unfound object的情况和处理
- ios6 处理横屏 两个viewcontroller之间切换的时候出现的错位情况
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- linux 下安装nginx经常出现 make[2]: Leaving directory `/usr/local/ssl' 或make[2]: Leaving directory `/usr/local/openssl' 找不到的情况解决方法
- sql 在not in 子查询有null值情况下经常出现的陷阱
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出