乐观 发表于 2015-1-16 14:19:16

甚么时分你的代码必要重构

也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。新官上任三把火,入手下手一个全新初步、脚一直蹄、加班加点,一支大张旗鼓的千军万"码"夹裹着程序员热情和扣击键盘的叫金奋力前行,势不可当,攻城掠地,直指"黄龙府"。

开辟司理是这支浩浩汤汤代码步队的统帅,他卖力这支步队的运气,当齐恒公站在山顶上看到管仲练习的步队划一同等地行进时,他叹息说"我有如许一支戎行那里还怕没有成功呢?"。但很遗憾,你手中的这支步队底本只是残兵败将,在行进中招兵买马,不休强大,以是步队变形在所不免。当开辟司理觉察步队变形时,大概就是制止住霸占后方山头的勾引,停下脚步整理步队的时分了。

KentBeck提出了"代码坏滋味"的说法,和我们所提出的"步队变形"是一样的意义,步队变形的旌旗灯号是甚么呢?以以下述的代码症状就是"步队变形"的激烈旌旗灯号:

1,代码中存在反复的代码
中国有118家整车临盆企业,数目几近即是美、日、欧一切汽车厂家数之和,可是天下的年产量却不及一个本国年夜汽车公司的产量。反复建立只会招致效力的低效和资本的华侈。程序代码更是不克不及弄反复建立,假如统一个类中有不异的代码块,请把它提炼成类的一个自力办法,假如分歧类中具有不异的代码,请把它提炼成一个新类,永久不要反复代码。

2,过年夜的类和太长的办法
过年夜的类常常是类笼统分歧理的了局,类笼统分歧理将下降代码的复用率。办法是类王国中的诸侯国,诸侯国太局势必坚定中心集权。太长的办法因为包括的逻辑过于庞大,毛病机率将直线上升,而可读性则直线下落,类的强健性很简单被冲破。当看到一个太长的办法时,必要想举措将其分别为多个小办法,以便于分而治之。

3,牵一发而必要动满身的修正
当你发明修正一个小功效,或增添一个小功效时,就激发一次代码地动,大概是你的计划笼统度不敷幻想,功效代码太甚分离所引发的。

4,类之间必要过量的通信
A类必要挪用B类的过量办法会见B的外部数据,在干系上这两个类显得有点狎昵,大概这两个类本应当在一同,而不该该分居。

5,过分耦合的信息链
"盘算机是如许一门迷信,它信任能够经由过程增加一其中间层办理任何成绩",以是常常两头层会被过量地追加到程序中。假如你在代码中看到必要猎取一个信息,必要一个类的办法挪用另外一个类的办法,层层挂接,就象输油管一样节节相连。这常常是由于跟尾层太多酿成的,必要检察就否有可移除的两头层,或是不是能够供应更间接的挪用办法。

6,各立山头干反动
假如你发明有两个类或两个办法固然定名分歧但却具有类似或不异的功效,你会发明常常是由于开辟团队和谐不敷酿成的。笔者已经写了一个颇好用的字符串处置类,但由于没有实时公告团队其别人员,厥后发明项目中竟然有三个字符串处置类。反动资本是可贵的,我们不该各立山头干反动。

7,不完善的计划
在笔者刚完成的一个比对报警项目中,曾布置阿朱开辟报警模块,即经由过程Socket向指定的短信平台、语音平台及客户端报警器插件发送报警报文信息,阿朱杰出地完成了这项义务。厥后用户又提出了及时比对的需求,即请求第三方体系以报文情势向比对报警体系发送哀求,比对报警体系吸收并呼应这个哀求。这又必要用到Socket报文通信,因为本来的计划未将报文通信模块自力出来,以是没法复用阿朱开辟的代码。厥后我实时调剂了这个计划,新增了一个报文收发模块,使体系一切的对外通信都复用这个模块,体系的全体计划也显得加倍公道。

每一个体系都或多或少存在不完善的计划,刚入手下手大概注重不到,到厥后才会渐渐凸显出来,此时惟有勇于变动才是昀好的前途。

8,短少需要的正文
固然很多软件工程的书本常提示程序员必要避免过量正文,但这个忧虑好象并没有甚么需要。常常程序员更感乐趣的是功效完成而非代码正文,由于前者更能带来成绩感,以是代码正文常常不是过量而是过少,过于复杂。人的影象曲线下落的坡度是陡得吓人的,当过了一段工夫后再转头补正文时,很简单产生"提笔忘字,愈言且止"的情况。

曾在网上看到过微软的代码正文,其细致水平让人蔚为大观,也从中体悟到了微软乐成的一个履历。就安全性而言,Java已经远远低于VB.NET,更无法与安全性著称的C#相比。

透明 发表于 2015-1-18 12:52:11

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

老尸 发表于 2015-1-24 16:53:43

是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。

爱飞 发表于 2015-2-2 11:39:45

那么,ASP.Net有哪些改进呢?

admin 发表于 2015-2-7 19:25:58

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

只想知道 发表于 2015-2-23 09:55:26

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

柔情似水 发表于 2015-3-7 08:17:00

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

活着的死人 发表于 2015-3-14 18:19:40

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

精灵巫婆 发表于 2015-3-21 14:12:33

主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
页: [1]
查看完整版本: 甚么时分你的代码必要重构