文档章节

我的职场和代码重构

dominic69
 dominic69
发布于 2015/12/26 23:26
字数 1746
阅读 86
收藏 3

一,刚踏入职场与代码重构

项目已经开发到一定阶段会对代码的要求更高,对系统crash要求更严格。项目代码重构无非就是为了提高开发效益,为了稳定系统版本。 -- 项目重构好像在我第一份工作就似乎有听到个,那时候的我连一个协议都不会联调的时候,刚刚从学校毕业就去面试软件开发,那时候即是憧憬又是彷徨,项目经理安排的任务不知道该如何下手,甚至第二天去上班的勇气都没有了,当初以为自己能在学校写一点代码,可以几个月拼出一个项目就感觉自己牛得不得了,好像自己真的有什么优势一样,其实真正到了要给企业公司做事情的时候给感觉到压力特别大,毕竟是领着老板的工资,当初我记得项目经理面试我的时候,问我分配的任务能够完成吗?问我学习能力强吗?我面不改色的说我可以按时完成任务,我会积极主动学习,在我还没来及学习的时候问题就堆成山,面临这些问题我感觉每天我都需要加班,我得花一些时间去学习,自己吃透不会的知识点,一天一天过去,自己熟悉了整个项目,同时分配的任务也能按时完成,但是好景不长,因为没有大牛的带领,我一个人一直在已有的项目上迭代,导致项目代码冗余,很难维护现有的代码结构和扩展,刚好一期项目结束。项目经理就告诉我二期项目需要代码重构,我第一次听代码重构?我因为在之前自学都是习惯的去SEO,所以我就搜索什么代码重构。

二,认识代码重构

我作为一年多工作人,开始对自己产生了一些不满意的想法,原单位是一个独立岗位开发,android开发只有我一个人,对于自己开发能力和以后的一些规划产生了一系列的想法,我开始需要突破自己,提升自己的开发水平,就想到更大的公司,有一些团队一起开发,向他们学习一些经验,提升自己,这时候我就对项目经理说我需要辞职,发出邮件的10分钟他就找我谈话,因为邮件至发给他一个人,没有发给HR,他跟我聊了很多,对我即是肯定又是表扬的,还对我生活上的照顾,那时候我似乎忘记自己为什么要提辞职,过了两周我主动去找他说我决定了要走,然后到了腾讯SNG(也就是互娱平台)做的是道具商城项目,刚去又是接手别人写过的代码,我虽说有一年多的工作经验,但是在大神面前我依旧是班门弄斧,阅读他们的代码也就是不知所以然。过了几个月,产品已经发布上线了,感觉还是充满了挑战,因为大公司所以对代码和文档技术都是很有要求的,大公司做事情总是有合理的安排和布置,规范的流程,对项目要求更严格,领导提出需要代码重构,我又再次进入代码重构,这次我知道什么是代码重构,是对项目结构和代码的优化,代码解耦,对于我这个小菜来说  根本提升不了代码的性能和优化,我就看着大神重构的代码,代码没有重构的时候添加需求或者改动牵扯的class 太多。

三,代码重构的意义

我用自己的话来说,代码重构就是为了更好的写代码,写出稳定流畅的系统。 重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提高软件的扩展性和维护性

四,如何代码重构

1、提取类/抽离方法   解除代码的冗余,提高代码的复用,提出公告的代码,这就是Java中体现的封装,因为平时习惯写代码为了赶时间,赶进度,考虑的是功能,没有考虑代码的质量。他类的成员方法的成员方法。这些方法也应该被迁移到合适的类中。

2,分离条件 

if( seat.equals("硬座")|| seat.equals("硬卧") ||seat.equals("软卧")||seat.equals("无座")) { 

if(ticket>0){

  System.out.print("出票成功,可以回家了");

}else{

  System.out.print("出票失败,继续在公司加班。。");}

   }

}

else { 

System.out.print("继续在公司加班。。");} 

重构

if(ticket>0&& !TextUtil.isEmpty(compareSeat(String seat))){

  System.out.print("出票成功,可以回家了"+compareSeat(String seat));

}


private String compareSeat(String seat){

String resultTicket = "";

if("硬座".equals(seat)){

resultTicket  = "硬座";

}

else if("硬卧".equals(seat)){

resultTicket  = "硬卧";

}

else if("软卧".equals(seat)){

resultTicket  = "软卧";

}

else if("无座".equals(seat)){

resultTicket  = "无座";

}

3、引入参数对象/保留全局对象 

在我做代码审查时发现另外一个很常见的情况 - 好几个参数被传入方法。问题主要与需要从已有方法中增加或者移除一个方法参数有关。在这种场景,建议将相关方法参数组成一个对象(引入参数对象),让方法传递这些对象而不是每个单独的参数。 

4,代码规范

a.图片用英文名
b.代码注释规范。 例如: int age;//年龄 
c.类名,方法名,变量名命名规范,要有意思,最好用英语。 
d.冗余代码要删除(废弃的方法、变量名,注释掉的代码快) 
e.新建文件夹要在相应的工程目录文件夹里面新建 



四、降低重构的风险

   把你重构的代码和其它程序隔离开,这样能让你更容易找到出问题的地方。 
   为你的重构活动准备测试计划,包括回归测试,功能测试,反向测试,负载测试,性能测试和用户确认测试。 
   投入全部精力来研究其中的逻辑,不要分心做其它事情。 
  在需要的地方使用设计模式。不要为了设计模式而增加设计模式。设计模式应该用在合适的时间和合适地方。




© 著作权归作者所有

dominic69
粉丝 5
博文 27
码字总数 20080
作品 0
浦东
程序员
私信 提问
重构与模式:Delphi TDD 的另一个示例编码

这是我姗姗来迟的第二篇关于在Delphi里进行测试驱动开发(TDD)的文章。 这是《TDD in Delphi:基础知识》的后续篇, 另外一篇文章是几个月前写的。 我想集中讨论测试驱动开发周期中的一个流行...

oschina
2012/12/20
282
1
读《代码重构》一书小计

通过阅读《代码重构》一书,让我了解的最重要的一点是“重构不同于优化”。在这之前,我的观念中,“重构”与“优化”是划等号的。不过通过这本书,我了解到他们做着完全不同的事情,甚至是对...

钟良
2016/07/13
160
1
[读书]读《重构-改善既有代码的设计》

读《重构-改善既有代码的设计》 断断续续,加上过年,花了快2个月吧,把《重构-改善既有代码的设计》读完了,这里总结下。 发现此书背景 读的感觉 知识感触 发现此书背景 这本书是从同事的桌...

zemel
2016/03/07
6
0
代码整洁之道------它山之玉可以重构:身份证号码解析、验证工具(第一天)

首先感谢原作者的代码: 《面向对象的15位、18位中国大陆身份证号码解析、验证工具》. 如果有版权问题,敬请告知。 原代码给了我很好的起点,是的,这些代码都是玉,我在这只是再琢磨琢磨。 ...

予沁安
2012/12/06
0
5
JeeSpringCloud v3.1.1 发布,互联网云快速开发平台

JeeSpringCloud,一款免费开源的JAVA互联网云快速开发平台,微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控...

suncos
2018/11/12
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Guava RateLimiter + AOP注解实现单机限流、统计QPS

1、基于springboot项目pom.xml添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><d......

铁骨铮铮
38分钟前
3
0
龙芯版办公软件下载

金山wps office   rpm包:http://ftp.loongnix.org/os/loongnix/1.0/os/Packages/w/wps-office-10.8.0.6472-1.a20p1.mips64el.rpm   deb包:http://packages.deepin.com/loongson/pool/......

gugudu
44分钟前
2
0
BI报表分析和数据可视化,推荐这三个开源工具!

开源篇 一、Superset 1、技术架构:Python + Flask + React + Redux + SQLAlchemy 2、使用人群: (1)开发/分析人员做好看板,业务人员浏览看板数据 (2)业务人员可自行编辑图表,查看满足...

飓风2000
51分钟前
3
0
CountDownLatch

CountDownLatch的概念 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。 CountDownLatch能够使一个线程在等待另外一些线程...

少年已不再年少
59分钟前
2
0
centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部