改代码OR重构?

最近团队中有人总在说“重构”一词,但是我认为他们其实想说的是“改代码”,只不过重构一词比较时髦,如此而已。

一个人的项目,自己瞎改,称之为重构没问题,但在团队中则不一定是好事,改代码的人自以为在改进,其他成员却认为他在改退的事情应该不罕见。

正如Kent Beck所言:一辆车在半山腰坏了,有一部分人要往山上推,有一部分人要往山下推,最终效果不言而喻!

所以,不是所有的改代码都叫重构,重构必须要有团队认可的原则和纪律。欲行重构之事的一个很好的做法是:所有团员都熟读《重构》一书。

如果“重构”对你来说只是个时髦的名词,而没有其他内涵,建议还是不要随便以重构之名来改代码了,因为那会让自己以为事情正在好转,其实不然。

重构,是改善既有代码的设计,真正要成为重构大神,《重构》一书只是入门,要登堂入室还得提升设计的能力。

改代码OR重构?

时间: 2024-08-08 05:17:45

改代码OR重构?的相关文章

应用MVP模式对遗留代码进行重构

AV(Autonomous View)自治视图 在面向终端用户的应用中,都需要一个可视化的UI来与用户交互.这个UI称为View视图. 在早期,我们习惯将所有前台的逻辑,与视图揉在一起,称为AV自治视图. 这些逻辑包括:数据呈现(Display),用户动作的扑捉与响应,数据存储等. 在.Net的Winform和ASP.NET Web Form中,采用的都是事件驱动模型. AV是将所有UI相关的逻辑都注册到视图本身,或者视图元素对应的事件上. 人机交互应用的3个关注点. 数据在UI上的展示. UI

服务器主逻辑代码的重构

不知道前主程是处于什么目的,总之我接手这套程序的时候,出现了超级多的问题,也发现了超级多的问题. 比如说吧,接受网络消息逻辑是线程独立的,而发送消息给客户端缺阻塞在了逻辑线程里面:原本可以放在一个进程里面处理的逻辑,却分散在了四个进程里面去处理,导致我完成一个功能,大部分时间要话费了进程之间的玩家信息的同步上面,在我无法忍受的情况下,我终于是用NIO将网络底层从新写了,而且将四个进程合并,但是在很多逻辑上还是尽量保持了和原逻辑处理的兼容! 先说说这个重构的底层吧! 我们看下最重要的ClientH

android apk反编译(反编译—改代码—再编译—签名)

1.工具(请到网站搜索并自行下载): ①apktool(反编译:能得到图片资源与布局文件等) ②dex2jar(反编译:能得到activity等java代码) ③jd-gui(查看dex2jar得到的java文件) ④手机签名工具(签名) 2.步骤: ①apktool反编译 (1)将apktool.bat aapt.exe  apktool.jar与要反编译的apk文件放到同一目录下 (2)运行cmd并切换到apktool所在的路径 (3)输入:apktool d a.apk test (格式:

cocos2d-x 源码 :可以循环的CCScrollView (代码已经重构过,附使用方法)

1.准备工作 想弄懂可循环的CCscrollView,首先请阅读cocos2d-x本身的CCscrollView源码http://blog.csdn.net/u011225840/article/details/30033501(我已经添加注释,方便阅读). 2.源码展示 因为源码我想放到git上,所以注释都是用的英文,如果这部分源码有人有问题,请在评论区留言,我会逐一回答. 总体说下,CCCycleScrollview继承了CCscrollView以及CCscrollViewDelegate,

重构改善既有代码设计--重构手法07:Remove Assignments to Parameters (移除对参数的赋值)

代码对一个 参数赋值.以一个临时变量取代该参数的位置.     int Discount(int inputVal, int quantity, int yearTodate) { if (inputVal > 50) { inputVal -= 2; } } 重构后: int Discount(int inputVal, int quantity, int yearTodate) { int result=inputVal; if (inputVal > 50) { result -= 2;

重构改善既有代码设计--重构手法08:Replace Method with Method Object (以函数对象取代函数)

你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method. 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型函数分解为数个小型函数. class Order... double price() { double primaryBasePrice; double secondaryBasePrice; double tertiaryBasePrice; // long computation; ... }

重构改善既有代码设计--重构手法02:Inline Method (内联函数)& 03: Inline Temp(内联临时变量)

Inline Method (内联函数) 一个函数调用的本体与名称同样清楚易懂.在函数调用点插入函数体,然后移除该函数. int GetRating() { return MoreThanfiveLateDeliverise() ? 2 : 1; } bool MoreThanfiveLateDeliverise() { return _numberOfLateLiveries > 5; } int GetRating() { return _numberOfLateLiveries > 5

代码评审重构案例讲解

来源:p2p系统repayCalc.cs,本代码可能参考自线下系统 一 函数语言使用问题 1)Backdate日期类型改为DateTime,则可以不用字符串拼接 2)还款日计算错误(1个月 !=  30天) 3)面向对象编程,而不是都通过函数计算 4)构造函数 替代 字符串拼接,字符串拼接和类型转换耗费CPU 5)冗余代码删除,错误情况:第一个还款日晚于借款结束日期,也不可能是按月还款了,应该在UI里面.或者函数开头处理掉,不应该在算法内部 5)类型重构,减少类型转换,删除无用中间变量 同时en

月薪5W的程序员入职新公司,谁知竟是接手烂代码,重构还是走?

事情是这样的,前几天在朋友圈,我看到一朋友发表了一条说说:"入职新公司,从重构代码到放弃",我就问他怎么了?他说:前段时间有公司给我开出了5w的工资,我高高兴兴跳槽了,谁知道,刚进一家新公司,接手代码太烂,领导让我先熟悉业务逻辑,然后去修复之前项目中遗留的bug,实在不行就重构. 关键是,离职的那位仁兄走之前,还跟我在QQ上说,老哥辛苦了,我写的很乱真不好意思,但我是故意的. 这几天,我都在想,要不要离职? 其次,我相信,这个问题很多人都遇到过. 每个新人去一家新公司都会觉得公司代码很