过早的优化是万恶之源

这两天,我做了两件事:

  1.重构了系统某个模块的部分代码:

  花了一天时间,一个6k多行的java文件,搞到4k行加若干个类文件,恕我能力有限,后面的实在重构不下去了,那是一种3个domain属性名几乎一样100多个字段但是却用同一个copy了三遍的方法来处理的欲哭无泪,那是一种使劲滚鼠标滚轮都滚不到一个方法尾部的绝望(100多个字段的几个类属性equals来,equals去,get来,set去的,这样类型的方法有那么五六个,你说能不多吗)......

  2.做了一个日志处理的小工具:

  客户要求把日志里面记录的一些东西整理出来发给他们业务人员分析,有若干个日志文件,20多m一个,我本来打算一个一个Ctrl+F,Ctrl+C,Ctrl+V的,但是后来想到自己能否更高效去处理这件事,毕竟自己出来工作两年了,很多时候做一些重复的事情,这样不会有提高,所以我决定用自己写个处理日志的小工具

  把一个log文件里面的内容按关键字找到然后解析相应字段然后格式化写到excel里面去,

  我把日志简化一下,其中一个片段样子大概是这样的:

    field1:=value1

    field2:=value2

    field3:=value3

    ......

    ......  

    ......

    xxxxxxxxxxx:field3:value3 field4:value4 field5:value5 

  我们需要取得field1,field3,field4,field5名字以及值

  field3-field5很好办,直接定位"field3:"所在的行,然后把这一行取出解析出来即可

  但是field1的值不是很好处理,我当时就想了最傻的一个办法:扫一遍文件解析出field3-field5,然后用field3的值再扫一遍文件找到field1的值,速度那个慢呀

  后来就想了一个稍微更聪明一点的办法,

  把

    field1:=value1

    field2:=value2

    field3:=value3

  封装成一个数据结构, 每一行用一个字符串来装,在扫描第一遍的时候,就把这个数据结构的用List存起来,假设为TempList,把field3-field5作为一个数据结构存进一个list,这样的话 我处理之前得到的field3-field5这个List和这个TempList,内存操作,速度提升很明显。

收获和教训:

  1.做这两件事的一个大背景是在版本正在开发的过程中,我写的版本计划预留了一部分时间去应对需求变更,但是自己却花了多余的时间做了第一件事,吃力不讨好,最后还没动需求要做的东西,重构了半天,代码还是如此的让人绝望,现在才深刻体会到,看别人写的优秀代码,是对自己的一种提高,看别人写的很恶心的代码,对自己也是一种提高:告诉自己不要这样写。

  2.效率这个东西,是很重要的,特别是在做项目的过程中,如果能尽量让机器帮忙解决的事情,就不要人工去做,而对于程序员来说,尽可能多的写一些小工具(当然我技术不好,可能写个工具的时间都要影响进度-_-#)来帮忙解决一些手工问题,会大大提高自己的工作效率,同时,又可以锻炼自己的编程能力。

  3.项目开发的过程中,核心的技能就是尽量精确的评估,如果一件事,你没有评估就贸然去做,是一件非常可怕的事情,如果让我重新选择,我不会拿上班的时间再去重构这部分代码,我会先把任务完成,完成的基础上,下班后,在Intern version(for practise)上练习重构。

  4.突然想到自己为什么要用这个标题。-_-#

时间: 2025-01-01 12:14:48

过早的优化是万恶之源的相关文章

过早优化是万恶之源

今天早上考虑了一些问题,觉得有些地方按自己的设想会导致效率下降,如果改了可能把自己的架构搞乱.纠结了半天,领悟到这么一点: 架构.设计完成后,就这样做,觉得有地方可以修改,可以记录下来,以后优化时再修改.因为按照自己的架子来搭建程序的话,开发效率会很高,后期汇总了所有可优化的地方,再来修改也会很有针对性.如果一边写,一边改,一方面是让开发效率下降,还可能让自己的设计思路变得混乱,严重可能导致错误,甚至停止不前.所以,优化一定放在最后再来做!!! 同时,看lua文章时,看到一句话: Knuth有句

谈谈对一些软件架构设计箴言的理解 对软件的过早地优化是万恶的根源

http://www.nowamagic.net/librarys/veda/detail/1897在做项目的时候,有些同事总是提前考虑性能优化,需求变更又是一大堆的重写,让我想起了Donald Knuth 提到的:对软件的过早地优化是万恶的根源.这里就简单的说几条重要的软件名人哲学. 软件中唯一不变的就是变化 在软件开发过程中需求是不停的变化的,随着客户对系统的认识,和现有开发功能和软件的认识,也许一开始他提出的需求就是背离的.记得网上有一句笑话,是说需求变化的: 程序员XX遭遇车祸成植物人,

python真的是万恶之源么?(初识python)

python真的是万恶之源么? 计算机基础及puthon了解 1.计算机基础知识 cpu : 相当于人类大脑,运算和处理问题 内存 : 临时存储数据,单点就消失,4G,8G,16G,32G 硬盘 : 永久存储数据 操作系统 : 是一个软件,控制每一个硬件之间的数据交互 2.python的应用和历史 python的创始人为吉多·范罗苏姆 python主要崇尚的市优美,清晰,简单,并且功能全面,易学易懂,可扩展的语言. 目前puthon的主要应用领域 云计算 : 云计算最火的语言, 典型应用Open

万恶之源-再谈编码

万恶之源-再谈编码 本节主要内容: ?小数据池 is和==的区别 3. 编码的问题 ?一. ?小数据池 在说?小数据池之前. 我们先看?一个概念念. 什什么是代码块: 根据提示我们从官?方?文档找到了了这样的说法: A Python program is constructed from code blocks. A block is a piece of Python program text that is executed as a unit. The following are bloc

最短路算法模板合集(Dijkstar,Dijkstar(优先队列优化), 多源最短路Floyd)

再开始前我们先普及一下简单的图论知识 图的保存: 1.邻接矩阵. G[maxn][maxn]; 2.邻接表 邻接表我们有两种方式 (1)vector< Node > G[maxn]; 这个是之前就定义了图的大小了,再下面使用的时候就不用对图的大小进行申请了, 但是因为是直接申请了大小 要对图进行初始化,因此可能在某些题目中这样使用的话会超时 (2)vector< vector<Node> > G; 这个是未定义大小,但是在使用之前要对其的大小内存进行申请. G.resi

wordpress疯狂的大叔,主题标题+标签云等多项优化,附带主题源码下载

cu主题是由疯狂的大叔设计,界面简洁大方是它最大的特点之一. 手残君也比较喜爱这款主题,在使用的过程中,根据手残君的个人习惯,对其进行了优化. 标题优化 标题居中显示 增加标题div背景色 标题div平滑优化 相关代码: .wen-title{ margin-bottom: 60px; background-color:#00bcd4; padding-top: 10px; padding-bottom: 10px; border-radius: 15px 5px; padding-right:

记一次PHP优化极速、赛车源码平台搭建架设案例

一.案例分析.极速.赛车源码平台搭建架Q:2947702644我们可以想到,既然是访问缓慢,有时候直接访问不了,以前是没问题的,到现在就突然出现了问题,那必定是我们的nginx与php响应不过来导致的,原因可能是其他域名网站的用户连接数巨增导致的.那我们找到问题的根源解决并优化就可以了.接着凭着自己的经验与百度,去解决问题. 二.问题解决与过程分析 1.Nginx优化: 1.查看nginx的日志,找出错误 $ cat /usr/local/nginx/logs/error.log | grep

万恶之源 - Python基础

Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. (龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者). 2018年4月的TIOBE排行榜,Python已经占据第四的位置, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言

群智能优化算法-测试函数matlab源码

群智能优化算法测试函数matlab源代码 global M; creatematrix(2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %画ackley图. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ackley x from[-5 5] % x=-5:0.01:5; % [x,y]=meshgrid(x); % temp1=x.^2+y.^2; % temp2=cos(2*pi*x)+cos(2*pi*y); % z=20+