??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AⅤ永久无码精品AA,亚洲va在线va天堂va不卡下载,亚洲成AV人影片在线观看http://m.tkk7.com/phoenixtoday/category/25066.html每天q步一点点Q努力做好自?/description>zh-cnWed, 09 Jan 2008 22:55:45 GMTWed, 09 Jan 2008 22:55:45 GMT60一炚w构心?/title><link>http://m.tkk7.com/phoenixtoday/archive/2008/01/08/173844.html</link><dc:creator>朱雀</dc:creator><author>朱雀</author><pubDate>Tue, 08 Jan 2008 15:56:00 GMT</pubDate><guid>http://m.tkk7.com/phoenixtoday/archive/2008/01/08/173844.html</guid><wfw:comment>http://m.tkk7.com/phoenixtoday/comments/173844.html</wfw:comment><comments>http://m.tkk7.com/phoenixtoday/archive/2008/01/08/173844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/phoenixtoday/comments/commentRss/173844.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/phoenixtoday/services/trackbacks/173844.html</trackback:ping><description><![CDATA[昨天Q要写一D늨序完成一个定时Q务,是有关Socket 发送的。胖子给我发了一D늎成的E序Q这D늨序基本上的功能是实现了,但是表达的ƈ不是那么清晰Q因此我想重构一下。没惛_重构的过E竟然花了一个多时Q从晚上八点多,一下就写到了十点,但是重构完后Q感觉清晰多了。仔l想x获颇多,因此在这里写写经验进行ȝ?br /> <br /> 重构E序的目的,不是因ؓE序不能用才要你去重构,重构的目的是因ؓ一、你的代码,被h看的ơ数Q远比它用到的次数多Q二、重构有利于你发现问题,让你的程序结构优化,因此可复用性更强,遵守了知识的唯一性,DRY 原则Q三、如果你要改动这D代码,那么先重构,使得你的代码好改Q这实际是在Z的未来减工作量Q而且一D优U的代码,带给你的价|q比你每ơ都要Ctrl+CQCtrl+V 大得多?br /> <br /> 写代码,要让你的代码W一ơ呈现在别h面前的时候,像读p一般,那么你的代码功底是够了。你的代码就可以UC你最好的文档了,其余什么文,大可不必Q?br /> <br /> Z昨天的经验,我新ȝ了两条:<br /> 一、经怋用重构方法extract method 的hQ会发现QL可以省掉一些时变量。这是好事,但这可能会造成如下的结果:<br /> <br /> <span style="background-color: #b8c2af;">method_one(method_two(method_three(method_four())))</span><br /> <br /> 也就是说Q很可能会导致这U长串的嵌套Q导致程序可L的下降Q人看的晕头{向。那么如何解军_Q其实是一个度的问题。我l自己定了一个规矩,临界Ҏ三个函数q样U联hQ如果超q三个,我就它们拆开。比如说上面q个例子,我会拆成Q?br /> <br /> <span style="background-color: #b8c2af;"> arg = method_three(method(four));</span><br /> <span style="background-color: #b8c2af;">method_one(method_two(arg));</span><br /> <br /> 虽然费了一个时变量,但是q样可以让Z眼看懂我的意思,可读性提升,修改h自然也会Ҏ些?br /> <br /> 二、写qJava I/O 的hQ肯定看到过q样的程序:<br /> <br /> <span style="background-color: #b8c2af;"> Reader in = null;<br /> Writer out = null;<br /> try<br /> {<br />     in = new InputStreamReader(socket.getInputStream(),"utf8");<br />     out = new OutputStreamWriter(socket.getOutputStream(),"utf8");<br /> <br /> /**<br />  * some TODOs here<br />  *<br /> **/<br /> }catch(IOException ioe)<br /> {<br />     System.err.println("error message");<br />     ioe.printStackTrace();<br /> }<br /> finally<br /> {<br />    try<br />     {<br />         if(in != null)<br />            in.close();<br />         if(out != null)<br />            out.close();<br />     }catch(IOException ioe2)<br />     {<br />        System.err.println("some error message");<br />        ioe2.printStackTrace();<br />     }<br /> }</span><br /> <br /> 怎么说呢Q这D代码看上去Q其实是够好了,其实不重构也是可以的。也许我偏执吧,我认为它不够好,因ؓQ首先,大段的try catch 的确会捕获异常,但是q段代码臛_有好几段是会独立抛出异常的,q里包含了四个IO 实例的创建和销毁,q四D代码如果出错都会抛出异常,那么你捕L到底是哪个呢Q其ơ,没有把功能段合理分开Q这D代码的逻辑功能实际上是两个Q一个是读,一个是写,那么合ƈ在一P首先序很ؕQ其ơ容易让阅读的h产生困惑Q从而造成代码可读性差。我是这样做的:<br /> <br /> <span style="background-color: #b8c2af;"> private void writeFile(String fileName, String outStr)<br />         {<br />             Writer writer = null;<br />             try<br />             {<br />                 writer = new OutputStreamWriter(new FileOutputStream(fileName),<br />                         "utf8");<br />             }<br />             catch (UnsupportedEncodingException e)<br />             {<br />                 System.err.println("不支持的~码方式");<br />                 e.printStackTrace();<br />             }<br />             catch (FileNotFoundException e)<br />             {<br />                 System.err.println("初始化文件失败,或\径不存在Q? + fileName);<br />                 e.printStackTrace();<br />             }<br />             try<br />             {<br />                 writer.write(outStr);<br />                 writer.flush();<br />             }<br />             catch (IOException e)<br />             {<br />                 System.err.println("写文件失?);<br />                 e.printStackTrace();<br />             }<br />             finally<br />             {<br />                 try<br />                 {<br />                     if(writer != null)<br />                         writer.close();<br />                 }<br />                 catch (IOException e)<br />                 {<br />                     System.err.println("关闭文gp|");<br />                     e.printStackTrace();<br />                 }<br /> <br />             }<br />         }</span><br /> <br /> cM的,也将ȝ逻辑独立抽出来,虽然Q这不但没代码的量减少Q却增加了很多try catch 模块Q不q逻辑上很完整Q而且发挥了每个try catch 的最佛_效。我把它起名曎ͼ我个人的偏执情节吧?br /> <br /> CQ要睡觉了,本来q想代码从最初模P到最后模Lq程复述一遍,改天有机会再__֍都已l说了。嘿?br /> <br /> <img src ="http://m.tkk7.com/phoenixtoday/aggbug/173844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/phoenixtoday/" target="_blank">朱雀</a> 2008-01-08 23:56 <a href="http://m.tkk7.com/phoenixtoday/archive/2008/01/08/173844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://2xpp.com" target="_blank">ޱһ</a>| <a href="http://class3g.com" target="_blank">͵ۺ</a>| <a href="http://xianliwang.com" target="_blank">һۺ߲</a>| <a href="http://k5nn.com" target="_blank">㶮ַѹ</a>| <a href="http://se988.com" target="_blank">˳վۿ</a>| <a href="http://jsjumei.com" target="_blank">99ѹۿ</a>| <a href="http://wwwjjz.com" target="_blank">޼Ƶ߹ۿ</a>| <a href="http://448tk.com" target="_blank">պĻƵ</a>| <a href="http://199291.com" target="_blank">޳aƬ߹ۿapp </a>| <a href="http://32-k.com" target="_blank">޼Ļ</a>| <a href="http://df6618.com" target="_blank">þþþѿӰƬ</a>| <a href="http://xyflash.com" target="_blank">ɫͼ.com</a>| <a href="http://52ku6.com" target="_blank">ĻѸ</a>| <a href="http://huakangweicai.com" target="_blank">һĿ޿鶹</a>| <a href="http://fenxiangceo.com" target="_blank">ѿƵվ</a>| <a href="http://xianliwang.com" target="_blank">޳av޳av</a>| <a href="http://liulaogendawutai.com" target="_blank">ѿƬѲ</a>| <a href="http://yy12345.com" target="_blank">jzzjzzѹۿƬ</a>| <a href="http://yinyinai155.com" target="_blank">Ļþ2017</a>| <a href="http://gwcyy.com" target="_blank">þݾƷ38</a>| <a href="http://imfever.com" target="_blank">޳˸߹ۿ</a>| <a href="http://wangquanai.com" target="_blank">ˬִ̼߳</a>| <a href="http://wwwy66y6.com" target="_blank">˳Ƶ߹ۿ</a>| <a href="http://eee94.com" target="_blank">ŷƷһ</a>| <a href="http://lybb16.com" target="_blank">19žžڵվ</a>| <a href="http://6123fa.com" target="_blank">ձ</a>| <a href="http://cc006.com" target="_blank">޾ҹþþþþ</a>| <a href="http://513net.com" target="_blank">޾ƷĻ</a>| <a href="http://8884493.com" target="_blank">޾Ʒվ</a>| <a href="http://8aa3.com" target="_blank">Ļк޴Ƭ</a>| <a href="http://zhidianzh.com" target="_blank">99þ޾Ʒһ</a>| <a href="http://njjngs.com" target="_blank">˿ҳ </a>| <a href="http://222mp3.com" target="_blank">йƷһëƬѲ</a>| <a href="http://mogo321.com" target="_blank">޹ۺһ </a>| <a href="http://19520888.com" target="_blank">岻Ƶ</a>| <a href="http://by7258.com" target="_blank">ĻþþƷ2021</a>| <a href="http://woaianli.com" target="_blank">պëƬѿ</a>| <a href="http://4438xx21.com" target="_blank">999zyz**վëƬ</a>| <a href="http://kmyake.com" target="_blank">޹bvվ </a>| <a href="http://zjhydouyaji.com" target="_blank">޹Ʒר߹ۿ </a>| <a href="http://bqjonline.com" target="_blank">޾ƷAv߹ۿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>