《Pragmatic Programmer》读后感(二):从重复到重用,路在何方?
来源:互联网 发布:mysql数据库实训 编辑:程序博客网 时间:2024/05/22 18:22
《程序员修炼之道》一书中提到了一个非常重要的原则,即DRY(Don't Repeat Yourself),给了笔者很大的启发,更让笔者深深感到要在实践中不折不扣地遵循这个原则,实现从重复到重用的转变,这中间仍需要很长的道路要走。
先谈谈笔者开发过程中所看到的重复现象。抛开文档重复、功能重复等现象不谈,但就代码重复方面就有许多非常需要做进一步优化改进的地方。譬如,因为项目开发需要,笔者曾编写了一个文件扫描的模块,该模块中包含了读写配置文件的若干操作;而同属一个项目组的另一个开发同事,恰好也需要实现其中读配置文件的类似功能,笔者原本以为其会直接使用或者说是稍加修改地使用笔者曾经编写的这个模块中的部分接口(毕竟这部分的代码还属于初步的,该开发同事拥有修改的自主权),然而,其并没有这么做,相反,在笔者作代码审查的时候发现其将其中的部分代码copy出来并组织了一个看似新的而本质却一样的方法。于是乎,代码的重复就这样产生了,并且是显而易见的。
笔者在这里列举上述的例子并非是批评指责该开发同事,笔者在工作过程中一直都努力遵循对事不对人的基本原则。如果真要论是谁之过,那只能说是项目组对整个开发过程并没有完全达成共识,而这其中笔者就应该承担一定的责任了。毕竟,作为该项目组的所谓负责人,笔者没有充分利用各种资源对项目组内开发人员进行很好的组织。
再回过头来看看这个重复的问题吧,又岂是仅仅笔者上面提到的这种情形?其实,如果仔细再审查一下代码,诸如此类的重复问题竟是如此地普遍!笔者愈发感觉到这事情的严重性了,若是再不采取有效措施进行优化改进,那么恐怕这就会成为一个烂尾工程,更别说可维护性了。
于是,笔者最终下定决心,每天挤出一定时间,将项目组成员召集在一起,共同针对项目开发过程中出现的诸多重复问题、破窗户问题等等进行讨论并形成可行的解决方案,然后付诸实际行动,解决之。这样持续了将近一周,代码质量得到了明显改善。
当然,代码质量的显著提高,也直接或间接地带来了代码复用的好处。正如书中所说,你要做的就是营造一种环境,在其中要找到并复用已有的东西,比自己编写更容易。的确,这条道路就是这样走出来的。
也许,很多朋友在刚开始编写代码时都可能出现过代码重复的现象,但其实这也没有什么好可怕的,一旦发现了代码重复,要做的或许应该是沟通、改进并努力让复用变得更为容易。
从重复到复用,这对于单独行动的朋友来说,重复的风险或许没有那么高,代码复用也或许会更容易一点,毕竟项目的生死大权都掌握在自己手中;但对于团体作战的项目组来说,重复的风险就会高很多,代码能够更好地被复用,很多时候取决于团队成员的开发共识。只要共同努力,从重复到复用的转变,其实也不是很困难的事情。
- 《Pragmatic Programmer》读后感(二):从重复到重用,路在何方?
- 《Pragmatic Programmer》读后感(一):为何会有如此多的破窗户?
- 《Pragmatic Programmer》读后感(三):利用一些基本工具提高编程效率
- WCF从理论到实践(4):路在何方
- WCF从理论到实践(4):路在何方
- 软件路在何方(二)
- 软件路在何方(二)
- 读《程序员修炼之道——从小工到专家》(The Pragmatic Programmer: From Journeyman to Master)
- The Pragmatic Programmer
- 读the pragmatic programmer
- 《Pragmatic.Programmer》精华摘录
- 《The Pragmatic Programmer》摘要
- Pragmatic Programmer (1)
- The Pragmatic Programmer 转载
- IPv6路在何方(二)--IPv6的三大魔咒
- 测试员,敢问路在何方?读后感!
- 注重实效的程序员(The Pragmatic Programmer)
- [转] 注重实效的程序员(The Pragmatic Programmer)
- Android无法访问本地服务器(localhost)的解决方案
- android manifest.xml中元素含义
- 让hr显示无边框有颜色某高度IE,firefox
- flash 与随机性:随机抽取(3)
- sql Text
- 《Pragmatic Programmer》读后感(二):从重复到重用,路在何方?
- android应用开机自动运行程序
- OASIS announced Content Management Interoperability Services (CMIS) Version 1.0
- 触发器的命名方法
- away 3d 书籍The Essential guide to 3D in Flash 第二章总结
- menu.addIntentOptions 添加动态菜单
- 关于C++ Traints
- SourceSafe 忘记用户名和密码怎么办?(
- 横向技术分析C#、C++和Java优劣