这本书买了有段时间了,前段时间一直被两个项目压着,透不出时间来看书,最近接近尾声,终于可以好好看看这本书了。本书由Martin Fowler所写,ThoughtWorks的首席科学家,这里有他的一些介绍http://blog.sina.com.cn/s/blog_4a400574010007q3.html
重构是一本与设计模式齐名的著作,初次看完这本书,给我最深印象的不是那一条条实用的重构准着,也不是那些能找出”坏味道”的例子,而是熊节先生在译序里面说的一句话:
如果没有单元测试和重构,我没法写代码。
单元测试现在所有的java书应该都有了,自己也曾在项目初期写上了单元测试,并决心贯穿项目始终,但是过了一两周以后,随着项目的进度以及一些技术问题,我慢慢忘记了单元测试,而且在我回想起来的时候,发现没写单元测试其实问题不大。等到项目中后期,当我烦恼于在myeclipse中一次次部署,不断刷新网页查看结果时,我终于想起了单元测试,但是这时候我发现再去写测试已经是项比较庞大的工程,代价不小,而且对于工期也会有一定的拖累,就在这种权衡之中,项目慢慢接近尾声,虽然项目完成的还行,但是中间的很多教训还是得吸取,特别是有些花了几天调试的bug,如果坚持单元测试的话,都是可以避免的。
曾经以为那些大型的项目的代码都是复杂的,里面充满各种奇技淫巧,对于菜鸟来说根本是不可理解的,这些才是高手写出来的代码,才是大项目。但是自己做了两个项目以后,有了一些实战经验,我才发现,
真正的高手不应该是这样的,他们的代码应该是规范的,用尽可能简单高效的手法实现需要的功能,避免了各种奇技淫巧,有的话也会加上详尽的注释,对于大断复杂的代码,将其”肢解”,增加可读性,扩展性。
突然又想起武侠小说里面的高手,他们往往会一门高深的武功,招式复杂,对手经常没看到他的武器就挂了,横行天下,现在我倒是认为高手与菜鸟相比,更多的是在基本功扎实,有实战经验,而不是体现在招式的复杂度上,复杂的估计都已经失传了
。
再回头说说这本书,前面四章是一定要看的,特别是第三章,推荐参考里面但提到的各种准来看,如果你有一些实际项目经验,相信你一定会产生共鸣。
这本书不仅有英文版和中文版,还有中英注释版本,对自己英语水平没什么信心,所以当时买了中文版。
就先到这吧,下篇在写一些具体的读书笔记。
分享到:
相关推荐
综上所述,"react-旨在重构一个react事例"的项目涵盖了React组件化开发、Flux架构的应用以及代码重构的实践。通过对这个项目的学习,你可以深入理解React和状态管理,并了解如何通过重构提升代码质量和应用程序的...
在本文中,我们将深入探讨如何使用MATLAB实现压缩感知(Compressed Sensing, CS)中的正交匹配追踪法(Orthogonal Matching Pursuit, OMP)来重构一维离散信号。压缩感知是一种革命性的信号处理理论,它允许我们用远...
本文将深入探讨“电子功用-在蜂窝式移动无线电系统中重构一个网孔的方法”这一主题,旨在理解并优化这类系统的性能。 蜂窝式移动无线电系统是一种基于地理分割的通信网络,通过将服务区域划分为多个小的六边形区域...
MP算法、OMP算法重构一维信号代码
压缩感知(Compressed Sensing, CS)是一种革命性的信号处理技术,它颠覆了传统观念,表明我们可以用远少于奈奎斯特定理所要求的采样率来获取信号,并仍能精确重构原始信号。该技术在图像处理、医学成像、无线通信等...
- 遵循小步快跑的原则,每次重构一小部分,频繁提交,以便及时回滚。 - 定期进行代码审查,发现并修复重构后的潜在问题。 总的来说,代码重构是软件开发中的持续过程,通过不断优化代码结构,保持代码的清晰性和可...
1. **小步快跑**:每次只重构一小部分代码,确保每一步都是安全且可测试的。 2. **持续集成与自动化测试**:重构前后应运行完整的测试套件,确保代码行为没有变化。 3. **代码审查**:通过团队成员之间的代码审查,...
2. **小步快走**:每次只重构一小部分代码,并且频繁地运行测试,确保代码仍然工作正常。 3. **避免过早优化**:除非性能成为瓶颈,否则不要因为性能原因去重构代码。 4. **保持单一职责原则**:每个函数或类应该...
- **小步快跑**:每次只重构一小部分代码,确保每次重构都能通过所有测试。 - **测试先行**:重构之前应该先编写测试用例,确保重构后代码的功能保持不变。 - **不要同时重构多个地方**:一次只专注于一处改动,避免...
4. 逐步进行:重构不应一次性完成,而是应采取小步快跑的方式,每次重构一小部分,便于回滚和测试。 5. 测试先行:重构前后的测试至关重要,确保重构不会引入新的错误。自动化测试套件能提供有力保障。 6. 沟通与...
- **持续迭代:** 重构一小部分后立即更新测试用例并验证结果。 #### 四、案例分析 假设有一个复杂的业务逻辑被多次复制到不同的地方,导致代码难以维护。我们可以采取以下步骤进行重构: 1. **分析问题:** ...
你曾去想重构一个很老的模块,但是你只看了一眼你就恶心极了。文档,奇怪的函数和类的命名,等等,整个模块就像一个带着脚镣的衣衫褴褛的人,虽然能走,但是其已经让人感到很不舒服。面对这种情况,真正的程序员会是...
3. **小步快跑**:每次只重构一小部分代码,完成并验证测试后再进行下一步,避免一次性改动过多导致的风险。 4. **保持简洁**:遵循DRY(Don't Repeat Yourself)原则,避免代码冗余;遵循单一职责原则,确保每个类...
通常,为了精确地重构一个高维信号,我们需要获取该信号的完整采样,但这在很多情况下是不切实际或成本高昂的。压缩感知则提出,只要信号具有稀疏性(即在某种变换域中大部分元素为零),我们可以通过远少于奈奎斯特...
2. **小步快跑**:每次只重构一小部分代码,避免一次性重构整个系统带来的风险。 3. **重构前的测试**:在进行任何重构之前,先编写测试用例,确保重构不会破坏原有的功能。 4. **代码审查**:让团队成员参与代码...
本项目关注的是如何利用MATLAB的spline插值函数来重构一个连续函数,并评估重构后的误差。以下是关于这个主题的详细说明。 首先,我们需要理解spline插值的基本概念。Spline插值是一种高级的数学方法,用于构建一个...