有次接到个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. JS代理模式实现图片预加载

    ---恢复内容开始--- 刚刚说了懒加载,现在我们来搞搞预加载吧 预加载的核心: 图片等静态资源在使用前提前请求. 资源后续使用可以直接从缓存中加载,提升用户体验. 几个误区: 预加载不是为了减少页面 ...

  2. JavaScript中何时使用===,何时使用==

    建议尽量都使用===,原因如下: 一致性:使用==对一致性没有任何好处,那么为什么不避免使用呢. 简单和性能:一般来说,===是最简单的操作符,因为它不用进行类型转换.JavaScript引擎的性能参 ...

  3. OSGI企业应用开发(十二)OSGI Web应用开发(一)

    前面文章中介绍了如何在OSGI应用中整合Spring和Mybatis框架,本篇文章开始介绍如何使用OSGI技术开发Web应用.对于传统的Java EE应用,应用中涉及到的Web元素无非就是Servle ...

  4. ajax分页查询

    (1)先写个显示数据的页面,分页查询需要那几个部分呢? 1.首先是查询的文本框输入,还有查询按钮,那么就开始写代码吧 1 2 3 4 <div> <input type=" ...

  5. Flutter——设置appBar的高度

    使用脚手架Scaffold可以设置AppBar,想要设置高度,在AppBar外包一层PreferredSize,设置preferredSize的属性为想要的高度即可. Scaffold( appBar ...

  6. Java Web 开发填坑记- 如何正确的下载 Eclipse

    一直以来,做 Java web 开发都是用 eclipse , 可是到 eclipse 官网一看,我的天 http://www.eclipse.org/downloads/eclipse-packag ...

  7. python 遇到的一些坑

    lst = [1, 2, 4] print lst.__iter__().next() # 打印出来的是 1 print lst.__iter__().next() # 打印出来的是 1 # 调用__ ...

  8. synchronized的四种用法

    一 修饰方法  Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起 ...

  9. 关于Apache连接数限制的设置

    昨天晚上收到监视团队的电话,说web服务器连不上.(作为DBA,这貌似超出了我的工作范畴啊...) 于是马上VPN连上服务器,发现网络负载均衡下的两台Apache服务器都没有响应,而服务器OS层面上正 ...

  10. 获取 MySQL 崩溃时的 core file

    对于一般进程,要让进程崩溃时能生成 core file 用于调试,只需要设置 rlimit 的 core file size > 0 即可.比如,用在 ulimit -c unlimited 时 ...