有次接到个PM要改版一个功能的UI设计,前端童鞋还没敲定页面的时候,我先看了看这个功能的后台,我擦...简直是惨不忍睹。。对PM来说是改版UI,对我这么有点代码洁癖的来说就是优化代码。

  首先我能肯定的是,原来这个童鞋对面向对象理解的不太好。。其次对代码的整合不够...我就简单log下。。

  先说面向对象理解的问题,在一个入口方法里,去调用该类自己的私有方法,这里传参的时候竟然把类属性的值都传过去了。。当时我就汗了,,显然在被调用的方法里,直接就可以获取这些类属性的值了。。为什么还要去传呢...

  再有我说整合能力,这个入口方法是这样做的,取前端传过来的key,通过这个key值的不同,去调用类里的各个不同的方法,而且原来他自己都已经把各个方法名取的和key的值一样了。然而惨不忍睹的是,如果说几个switch的case,这么写不会让人觉得啥。。重点是这个key的值将近有20个...这再这么写下去代码就太糟糕了。。显而易见的是这几十行代码可以看出来是可以用相同代码的。正好php有个函数叫call_user_func(),可以派上用场。比如这样call_user_func(array($this, $_GET['key']));让实例去调用它的key名字的方法。这里有个小问题,比如原来代码里面有的几个不同key,但走了相同的方法。

这时,可以这样构造一个魔术方法__call(),然后在这个魔术方法里,把这几个特殊key构建成个数组,如果$_GET['key']在这里头的,就共同去调用这个方法。或者不使用魔术方法,而先校验是否可以调用,使用is_callable(array($this, $key)),如果返回false,则再调用那个公共方法或怎么着。

  仔细看,类里面还有很多值得优化的地方。其实一个类被设计的不该过于臃肿,一个类只需要负责好它自己的事就好了。这里的优化,我就抽取出来几个方法新建了一个类。

  顺便我觉得改别人的代码很有意思,发现不合自己意就开始喷哈哈~

=================

说下这次的经验教训吧。。

  终于是上线了,总体上说,是很繁琐,但是没有什么挑战性。

  得到的一个经验是,别太轻易改动历史代码,同事说是费力不讨好,现在想想还真是。。因为你很难彻底查出来到底有多少地方在用这段代码。。你改了,上线的时候影响到别人了,很麻烦。。还好,改的有个地方还在测试的时候发现了问题。也是个小问题,经验教训还是要吸取的。

  还有个教训是,你改动的地方涉及到不同组员之间的协作开发,这时候,上线以后,千万别忘记了其他组改动的文件,这次上线就少了其它组的代码,结果查bug还查了有一会。因为开发环境没问题,线上有问题的时候,debug是很麻烦的,涉及到线上权限的事情。总之,协作开发的时候,考虑周全。别忘了你的代码依赖了别人的代码。

  再有一个老生常谈的是,代码写的要有维护性。。别让其他维护你代码的人去咒骂你。。代码结构怎样合理的组织,让修改的时候更容易。当然尤其要写些个注释!!好比我这次经历的一段代码,相当蛋疼,毛注释没有,还充斥了运算符和嵌套。。这烂代码叫谁去维护都得泪崩。。

  这两天净忙着改版了,还包括些个历史遗留bug,改别人的代码过程真是充满了各种情绪。。上线以后,心情还是很舒畅的哈哈~

log下一次改版优化别人代码的事的更多相关文章

  1. 优化PHP代码的40条建议(转载)

    [size=5][color=Red](译文)优化PHP代码的40条建议[/color][/size] 40 Tips for optimizing your php Code 原文地址:http:/ ...

  2. 优化 PHP 代码技巧

    优化 PHP 代码技巧1. 如果一个方法能被静态,那就声明他为静态的,速度可提高 1/4;2. echo 的效率高于 print,因为 echo 没有返回值,print 返回一个整型;3. 在循环之前 ...

  3. 如何优化JAVA代码

    通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化.一般有两种方案:即优化代码或更改设计方法.我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能 ...

  4. 优化HTML代码的多种技巧

    怎样提升Web页面的性能,非常多开发者从多个方面来下手如JavaScript.图像优化.server配置,文件压缩或是调整CSS. 非常显然HTML 已经达到了一个瓶颈.虽然它是开发Web 界面必备的 ...

  5. 整理及优化CSS代码的7个原则

    作为网页设计师(前端工程师),你可能还记得曾经的那个网页大小建议:一个网页(包括HTML.CSS.Javacript.Flash和图片)尽量不要超过30KB的大小,随着互联网的日益庞大,网络带宽也在飞 ...

  6. PostgreSQL 优化器代码概览

    简介 PostgreSQL 的开发源自上世纪80年代,它最初是 Michael Stonebraker 等人在美国国防部支持下创建的POSTGRE项目.上世纪末,Andrew Yu 等人在它上面搭建了 ...

  7. 优化Python代码的4种方法

    介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...

  8. (原创)一步步优化业务代码之——从数据库获取DataTable并绑定到List<Class>

    一,前言 现实业务当中,有一个很常见的流程:从数据库获取数据到DataTable,然后将DataTable绑定到实体类集合上,一般是List<Class>,代码写起来也简单:遍历+赋值就可 ...

  9. 优化 if-else 代码的 8 种方案

    前言 代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案. 方案. 优化方案一:提前return,去除不必要的el ...

随机推荐

  1. H5音乐播放器【歌单列表】

    上篇详细描述了播放页歌词如何实现跟随跟单滚动,如何解析歌词,那么歌单页又是如何生成的呢,话不多说,直接上图上代码! 首先需要获取数据,具体获取数据api请转到我跟我大兄弟博客去观看学习去,同时也感谢我 ...

  2. WebGIS裁剪算法-线裁剪多边形

    在gis系统中 经常会用到一些裁剪的方法,首先推荐一个非常好用的空间分析JavaScript库--Turf.js,不仅功能强大.使用简单,同时处理速度也很快. Turf.js中提供了一中多边形的裁剪方 ...

  3. AsyncTask POST请求

    布局: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint. ...

  4. PRD文档怎么写

    昨天学习PMP的相关文档,正好看到里面讲的PRD文档是怎么写的 就把一些学习过程,思维方式,还有用到的工具给记录下来 方便自己以后需要的时候,再去查阅,再读这个教程的时候,我顺便用脑图画了一下 脑图工 ...

  5. zabbix系列之九——安装后配置四web监控

    1web监控 描述 详细 备注 概要 1)      需要定义 web 场景(包括一个或多个 HTTP请求),zabbix服务器根据预定义的命令周期性的执行这些步骤. 2)      Web 场景和 ...

  6. ionic默认样式android和ios差异

    ionicframework中android和ios在默认样式上有一些不同的地方,官方文档中都有说明,但是经常会想不起. 一.差异: 1.tab位置,$ionicConfigProvider, tab ...

  7. sql求两表的并集、交集、非交集、差集、结果集排序

    create table A( id ,) Not null primary key, name ) not null default(''), ) INSERT INTO [A]([name]) V ...

  8. Unix操作系统监控详解(一)

    一.描述 监控在检查系统问题运行状况以及优化系统性能工作上是一个不可缺少的部分.通过操作系统监控工具监视操作系统资源的使用情况,间接地反映了各服务器程序的运行情况.根据运行结果分析可以帮助我们快速定位 ...

  9. Python tuple

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表 语法 names = (a,b,c) 它只有2个方法,一个是count,一个是index. 当然也有可变元祖: 可 ...

  10. Oracle EBS OPM 取消生产批

    --取消生产批 --created by jenrry SET serveroutput on; DECLARE p_batch_header_rec gme_batch_header%ROWTYPE ...