有次接到个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. Angular 6.X CLI(Angular.json) 属性详解

    Angular CLI(Angular.json) 属性详解 简介 angular cli 是angular commond line interface的缩写,意为angular的命令行接口.在an ...

  2. python3获取一个网页特定内容

    我们今天要爬取的网址为:https://www.zhiliti.com.cn/html/luoji/list7_1.html 一.目标:获取下图红色部分内容 即获取所有的题目以及答案. 二.实现步骤. ...

  3. js柯里化

    这篇文章讲的很好啊~例子很好 http://www.zhangxinxu.com/wordpress/2013/02/js-currying/ 这篇是讲函数式编程的,其中也有涉及到,说明了柯里化是一种 ...

  4. GridLayout和GridView的区别

    GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填 ...

  5. hashlib 简单的登录例子

    hashlib例子: =============================================== import hashlib md5 = hashlib.md5() md5.up ...

  6. ASP.NET Core Razor生成Html静态文件

    一.前言 最近做项目的时候,使用Util进行开发,使用Razor写前端页面.初次使用感觉还是不大习惯,之前都是前后端分离的方式开发的,但是使用Util封装后的Angular后,感觉开发效率还是杠杠滴. ...

  7. win10 安装microsoft.net framework3.5

    转载于:https://www.windows10.pro/win10-net-framework-3-5/ 之前手残不小心把microsoft.net framework3.5删了,结果导致Sql ...

  8. 将 HPC 作业从本地计算机提交到部署在 Azure 中的 HPC Pack 群集

    Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource ...

  9. sqlserver性能调优中的逻辑读,物理读,预读是什么意思

    表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...

  10. Unity By Reflection Update Scripts

    App热更新需求 我正在使用Unity 3D开发一个Android的应用,它会下载AssetBundles并加载它们的内容,但由于AssetBundles不能包含脚本,我将使用预编译的C#脚本,并使用 ...