`
isaac
  • 浏览: 41060 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么在添加一个新功能前先整理代码?

阅读更多

       在添加一个新功能前,要先整理现有的代码,使其能非常容易的添加新功能。

      一直对这句话理解很肤浅,只是从字面意思理解而已。今天写代码突然有种感觉,好像自己理解了,所以拿出来和大家分享一下,也自己记录下来。

       我做一个库存管理的模块,在出入库时都会有更新库存台帐、更新库存账目和更新库存容量的动作,今天添加了一个盘点的功能,在盘点时也更新库存台帐、库存账目和库存容量。由于在盘点时,盘点物料明细中没有物料主键和库存主键,只有其名称,所以直接去更新库存账目和库存容量不能实现,只能从库存台帐中取物料主键和库存主键才行,然后才能完成功能,这样就有点走弯路。
        所以我把出入库的代码整理了一下,出入库时只更新库存台帐,把更新库存账目和更新库存容量的功能移到库存台帐的业务类中,这样在更新库存台帐时系统自动更新库存账目和更新库存容量。这样在盘点时只更新库存台帐就可以了。

分享到:
评论
10 楼 抛出异常的爱 2009-06-01  
halida 写道
抛出异常的爱 写道
mock1234 写道
mock1234 写道
根据行业经验来判断哪些需求不是简单的眼前的需求这么简单,而可能是一个比较多类似需求的代表,这就够了!

不得不说,这确实是XP所没有提及的。因为大师们都天生有这个素质,习惯于自己看到了未来然后给路人指出眼前脚下的道路。

人们不喜欢增加功能代码的主要原因是恐惧.
------------------------------------------
装修有什么难的
为什么大家没事不装修?
1.家具放在哪里
2.就是拆墙,是否承重墙
3.刨地板,是否有管线
4.不能一间一间的装只能全装一遍,时间体力耗费大
5.不能确定自己的设计自己会满意
6.由于现在的装修还能凑合.
7.对装修公司的不信任.
-----------------------------------------

这与软件有太多相似之处了.

再来看看公司的装修
-----------------------------------------
1.吊顶.可以把以后所要加的可能性留出空间
2.全开间,可以用隔断来分割房间
3.地毯,不用刨地
4.工位都一个样子,想移就移了.


off topic 一个,为什么大家不按照公司装修的方法来装修呢?

因为家时的变化没有公司大
所以不必花这么多力气为以后作预见

就像一个小的应用明知道它只会用2个月...
你会用EJB LDAP WSAD 单点登陆 可平行扩展. 热插拔 么
9 楼 halida 2009-06-01  
抛出异常的爱 写道
mock1234 写道
mock1234 写道
根据行业经验来判断哪些需求不是简单的眼前的需求这么简单,而可能是一个比较多类似需求的代表,这就够了!

不得不说,这确实是XP所没有提及的。因为大师们都天生有这个素质,习惯于自己看到了未来然后给路人指出眼前脚下的道路。

人们不喜欢增加功能代码的主要原因是恐惧.
------------------------------------------
装修有什么难的
为什么大家没事不装修?
1.家具放在哪里
2.就是拆墙,是否承重墙
3.刨地板,是否有管线
4.不能一间一间的装只能全装一遍,时间体力耗费大
5.不能确定自己的设计自己会满意
6.由于现在的装修还能凑合.
7.对装修公司的不信任.
-----------------------------------------

这与软件有太多相似之处了.

再来看看公司的装修
-----------------------------------------
1.吊顶.可以把以后所要加的可能性留出空间
2.全开间,可以用隔断来分割房间
3.地毯,不用刨地
4.工位都一个样子,想移就移了.


off topic 一个,为什么大家不按照公司装修的方法来装修呢?
8 楼 抛出异常的爱 2009-03-09  
mock1234 写道
mock1234 写道
根据行业经验来判断哪些需求不是简单的眼前的需求这么简单,而可能是一个比较多类似需求的代表,这就够了!

不得不说,这确实是XP所没有提及的。因为大师们都天生有这个素质,习惯于自己看到了未来然后给路人指出眼前脚下的道路。

人们不喜欢增加功能代码的主要原因是恐惧.
------------------------------------------
装修有什么难的
为什么大家没事不装修?
1.家具放在哪里
2.就是拆墙,是否承重墙
3.刨地板,是否有管线
4.不能一间一间的装只能全装一遍,时间体力耗费大
5.不能确定自己的设计自己会满意
6.由于现在的装修还能凑合.
7.对装修公司的不信任.
-----------------------------------------

这与软件有太多相似之处了.

再来看看公司的装修
-----------------------------------------
1.吊顶.可以把以后所要加的可能性留出空间
2.全开间,可以用隔断来分割房间
3.地毯,不用刨地
4.工位都一个样子,想移就移了.
7 楼 抛出异常的爱 2009-02-27  
futily 写道
我的推荐添加完功能后整理;有时间的话我会在功能添加前整理,完成需要添加饿功能后,再看看能否再整理。就是麻烦了点 !!!
   "坏味道"没记错的话应该是来自 《重构 改善既有代码的设计》

我记得是gigix翻译的....
6 楼 futily 2009-02-27  
我的推荐添加完功能后整理;有时间的话我会在功能添加前整理,完成需要添加饿功能后,再看看能否再整理。就是麻烦了点 !!!
   "坏味道"没记错的话应该是来自 《重构 改善既有代码的设计》
5 楼 king_108 2008-12-03  
"坏味道",好词,想不起在何年马月的一本书看过这个词了
4 楼 抛出异常的爱 2008-12-03  
sshquery 写道
photon 写道
现有的代码经常会被后来的代码使用到,就像大楼的基础,如果现有的代码不做整理,就好象地基不深、不牢,对整座大楼的质量会产生问题。

如果现有的代码会被以后经常用到,您是怎么编程的呀?难道凭着感觉,我要加功能了,所以改代码,而没有需求文档或者别的规范??我认为,软件设计时就应该考虑到软件的现有需求,还应该考虑到未来可能的需求..代码应该在功能之后整理就好了

2002年穿越过来的?
3 楼 sshquery 2008-12-03  
photon 写道
现有的代码经常会被后来的代码使用到,就像大楼的基础,如果现有的代码不做整理,就好象地基不深、不牢,对整座大楼的质量会产生问题。

如果现有的代码会被以后经常用到,您是怎么编程的呀?难道凭着感觉,我要加功能了,所以改代码,而没有需求文档或者别的规范??我认为,软件设计时就应该考虑到软件的现有需求,还应该考虑到未来可能的需求..代码应该在功能之后整理就好了
2 楼 photon 2008-09-13  
现有的代码经常会被后来的代码使用到,就像大楼的基础,如果现有的代码不做整理,就好象地基不深、不牢,对整座大楼的质量会产生问题。
1 楼 gigix 2008-09-12  
常见的整理代码的时机有两个,实现一个功能之前,以及之后。

每一小块功能做完了以后应该始终给自己一点时间,消除显而易见的“坏味道”:长方法,重复,不清晰的条件逻辑,等等。这个时候的清理通常不会产生新的对象,因为这时候你通常不知道什么位置需要扩展。你只是让代码变得干净。

做新功能之前应该始终给自己一点时间,找出要做的事情和现有代码之间的关系:是修改,还是扩展。一个修改应该只影响一处代码,找到你应该修改的那一处。如果修改点/扩展点不清晰,重构让它变得清晰。然后再做你需要的修改。

相关推荐

    flash cs3书籍源代码整理

    然后,创建了一个新的圆`ball2`,同样地设置了它的位置,并使用`addChild`将其添加到舞台上。 最后,例2-6展示了基本的数学运算,如加法、减法、乘法、除法,以及处理除以零的情况。在ACTIONSCRIPT 3.0中,除以零会...

    jquery word格式排版整理代码.zip

    本资源"jquery word格式排版整理代码.zip"提供了一种利用jQuery来处理Word文档格式排版的方法,特别是针对去除无用空格和首行缩进的问题。在开发过程中,有时候我们需要将数据导出为Word文档,或者从Word文档中导入...

    source insight 整理代码插件AStyle

    **AStyle(Artistic Style)** 是一个开源的代码格式化、美化工具,支持C、C++、C++/CLI、Objective-C、C#和Java等多种语言。AStyle能够按照特定的编码规范对代码进行整理,如K&R、GNU或Allman风格,使得代码更整洁...

    Excel Web将添加新功能.docx

    近期,微软在其官方博客上宣布了一系列即将加入Excel Web App的新特性,这些新功能大多源于用户反馈的需求。以下是一些关键的新功能介绍: 1. **添加和编辑冻结窗格**:此功能使得用户可以固定表格的顶部行或左侧列...

    Itext处理word文档整理代码

    这个"Itext处理word文档整理代码"的Demo应该包含了一个示例程序,演示了如何结合Itext和Apache POI实现上述功能。为了运行这个Demo,你需要一个支持Java的环境,并确保所有依赖的库都已经正确配置。 在实际应用中,...

    为Adobe添加书签功能

    `bookmark_page.js`很可能是一个包含自定义书签功能代码的JavaScript脚本。通过编辑这个脚本,我们可以实现对特定页面添加、删除或管理书签的操作。 书签功能的基本操作通常包括以下几点: 1. **添加书签**:用户...

    很实用的js代码整理工具

    4. **注释**:添加适当的注释能帮助理解代码功能,特别是在处理复杂逻辑时。注释应简洁明了,描述代码的主要目的和工作方式。 5. **函数和变量作用域**:理解`var`、`let`和`const`的作用域差异,以及块级作用域的...

    二次开发:添加最新交易滚动显示功能插件 for ecshop.rar

    昨天给速度购物网添加了首页滚动显示最新交易的功能,今天整理一下发上来造福民众,O(∩_∩)O~ 对于ecshop添加新功能我感觉无外乎就是两个地方的修改,显示的要修改模板,为了方便下次升级,最好都做成lbi,下次升级...

    最新整理java初学者源代码

    "最新整理java初学者源代码"这个压缩包,正如其标题所示,是一系列为初级Java学习者准备的代码实例,涵盖了基础的Java编程概念和技巧。 首先,让我们从"Java简单实例"这个标签开始。简单实例通常包括基础的数据类型...

    最新版PHP域名授权验证更新系统 v2.6.8 完整源码全新的UI界面 添加了授权搜索功能

    3、添加防止客户站重复升级4、零度中国整理教程 2017-6-13 -----修改了可以单个域名选择泛域名授权 -----修复了IP双重验证提示为0的错误 2017-6-10 -----修改了双重验证方式 -----添加了授权搜索功能 -----添加...

    在NS2中添加路由协议(整理).zip_NS2 路由协议_NS2添加新协议_NS2路由协议_在ns2中添加路由的方法_路由

    在NS2(Network Simulator 2)中添加路由协议是一个复杂的过程,涉及到对源代码的理解、编译和调试。NS2是一个广泛使用的网络模拟工具,它允许研究人员和工程师模拟各种网络环境,包括不同的路由策略和协议。这篇...

    OneMark插件可以实现在OneNote笔记中输入代码块.zip

    这对于IT专业人士,尤其是程序员和开发者来说,是一个非常实用的功能,因为它允许他们在记录笔记的同时,能够清晰地展示和组织编程代码。 在传统的OneNote使用中,插入代码块可能需要手动格式化,而OneMark插件则...

    JS 添加网页桌面快捷方式的代码详细整理

    在这个函数中,首先尝试创建一个Windows Script Host Shell对象("WScript.Shell"),这是Windows系统中的一个功能强大的自动化工具,它可以用来访问文件系统、启动程序、创建快捷方式等。 代码中,使用`Special...

    emlog最新文章邮件推送插件 v1.3

    emlog最新文章邮件推送插件是一个为emlog而开发的自动推送插件,它可以将最新的文章推送到想要推送的邮箱上,而不用手动的一个个去进行邮箱发送。特色功能:发布新文章后能够立刻发信到指定邮箱收件人的手里收件人...

    Keil MDK 5.26 最新版本的代码格式化插件 AStyle3.1

    AStyle3.1 版本是该工具的一个较新版本,它提供了丰富的代码格式化选项,包括缩进风格(空格或制表符)、括号放置位置、换行处理、空行处理等,可以按照个人或团队的编码规范对代码进行整理。 将AStyle3.1集成到...

    (整理)Matlab如何添加新的工具箱经验总结..pdf

    在Matlab中添加新的工具箱是为了扩展其功能,以满足特定的计算或算法需求。以下是如何在Matlab中添加新工具箱的详细步骤: 1. **存放工具箱**: - 新工具箱通常以压缩文件的形式下载,解压后会包含一系列`.m`文件...

    工作中整理的前后端技术文档与代码规范

    本文档是关于前后端开发中的代码...这个文档不仅适用于新项目的开发,也可以作为已有项目维护和重构的参考,确保代码质量,提高团队协作效率。通过持续更新,这份手册将不断丰富和完善,成为开发者日常工作的得力工具。

    一个管理自己代码的小工具codehelp

    它旨在提供一个便捷、高效的方式,帮助用户整理、存储、检索以及分享自己的代码片段。这个小工具可能包含了多种功能,比如代码分类、搜索、版本控制、注释编辑等,以适应不同编程语言和项目的需求。 在开发过程中,...

    代码整理阅读

    在IT行业中,代码整理阅读是一项至关重要的技能,无论是对于初学者还是资深开发者,它都是提升编程能力、理解和维护代码库的关键步骤。这个压缩包文件包含了多个编号为01到09的子文件,很可能是按照一定的逻辑顺序...

    SublimeLinter:Sublime Text 3的代码整理框架

    我们正在构建一项名为“快速操作”的新功能,该功能使您可以快速忽略特定的错误消息。 首先,SublimeLinter将为 , , , 和。 想查看您最喜欢的短毛绒的动作吗? 请打开您添加到的PR。 我们也可以添加一些。 ...

Global site tag (gtag.js) - Google Analytics