`
isaac
  • 浏览: 39905 次
  • 性别: 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  
常见的整理代码的时机有两个,实现一个功能之前,以及之后。

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

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

相关推荐

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

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

    API之网络函数---整理网络函数及功能

    StartPage 打印一个新页前要先调用这个函数 StartPagePrinter 在打印作业中指定一个新页的开始 WritePrinter 将发送目录中的数据写入打印机 5. API之文本和字体函数 AddFontResource 在Windows系统中添加一种...

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

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

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

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

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

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

    Android代码-Android

    因此,为了方便公司或者自己的开发,抽空准备整理出一个比较完善的库,方便以后开发可以随时拉取代码。如果你对这部分的代码感兴趣,欢迎引入使用,如果引用过程中发现遇到什么闪退,麻烦在Github上给我提个issue,...

    超级API浏览器 (含源代码)

    而在 Microsoft Visual Studio 7.0 (.net) 及以上版本中为了达到跨平台、安全等一系列新特性,微软已经写好了一个内容丰富的受管制的代码类集合(.net基类库), 来完成以前要通过Windows API来完成的绝大多数任务, 虽然...

    PHPCB1.01 EditPlus+PHPCB打造完美的PHP代码格式化功能

    EditPlus还有一个很好的功能就是可以集成插件,那么今天就给大家介绍一款非常不错的,可以集成在EditPlus或其它编辑器中的PHP代码格式化工具:phpCodeBeautifier,简称phpCB,目前最新版本是2007年1月发布的1.0.1版...

    editplus 代码编辑器html c++ jsp css

    如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 a. 选择要操作的行 b. 编辑-格式-删除行注释 c. 在弹出对话框里面输入要清除的行首字符,确定 【4】正则表达式应用...

    TabBars---VC6 IDE增强插件

    2001年的时候我在网上见到了一款名为“WndTab”的VC插件,它提供了一个集成在编辑窗口的table标签栏,每个打开的文档对应一个标签栏的按钮,通过鼠标点击按钮可以在文件之间快速切换,大大方便了代码查看和编辑,除...

    DFW数据整理工具 v1.1

    [添加] 对代码的分类可能混乱,那位朋友做一个更好的分类表命名为“type.ini”,程序会自动读取新的分类。可以将新的分类发给我,让我把新的分类集成到程序中,或者上传到大富翁上,供大家下载使用。用到的第三方控...

    仿58源代码 安装简单 操作方便

    重新整理代码,代码经过多重优化,去掉冗余和重复,优惠后速度一流,并最新增减了防SQL注入功能,让你的网站更安全,去除漏洞 新系统可扩展性强,方便二次开发,集中标签和模板 界面简洁美观大方,模仿了大网站...

    磁盘文件分析整理工具 WizTree 3.39 中文.zip

    WizTree 正在积极开发中,并且会定期添加新功能。如果您对新功能有任何建议,请与我们联系。 它很快 扫描NTFS格式的驱动器时,WizTree 直接从磁盘读取硬盘的主文件表(MFT)(就像 Everything 搜索一样)。它还...

    Android代码-AndroidAlbum

    因此,为了方便公司或者自己的开发,抽空准备整理出一个比较完善的库,方便以后开发可以随时拉取代码。如果你对这部分的代码感兴趣,欢迎引入使用,如果引用过程中发现遇到什么闪退,麻烦在Github上给我提个issue,...

    自己动手写操作系统(含源代码).part2

    书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤,读者可以由一个最简单的引导扇区开始,逐渐完善代码,扩充功能,最后形成一个小的操作系统。 本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的...

    自己动手写操作系统(含源代码).part1

    书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤,读者可以由一个最简单的引导扇区开始,逐渐完善代码,扩充功能,最后形成一个小的操作系统。 本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的...

    JAVA面试题最全集

    修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被...

    Huddle:来自frontendmentor.io的初始目标网页挑战,我已经构建并继续个性化将新功能添加到

    持续发展展望未来,我想在创建移动版本的页面方面获得更多经验,因为我认为代码在设置了常规样式表后最终变得更混乱,无法按我想要的方式获得所有功能。 也许在下一个项目中首先构建移动版本? 对于这个特定的项目,...

    EditPlus 2整理信箱的工具

    如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 a. 选择要操作的行 b. 编辑-格式-删除行注释 c. 在弹出对话框里面输入要清除的行首字符,确定 【4】正则表达式应用...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    19.6 使用另一个记录集对象 19.6.1 添加记录集类 19.6.2 添加记录集的视图类 19.6.3 定制记录集 19.6.4 访问多个表视图 19.6.5 查看产品的订单 19.7 查看客户的详细情况 19.7.1 添加客户记录集 19.7.2 创建客户...

Global site tag (gtag.js) - Google Analytics