亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? extremereuse.html

?? 極限編程 Extream Programing
?? HTML
字號:
<head><title>Extreme Reuse</title></head><body><h1><img src="logo.gif"> Extreme Reuse</h1>When I first heard about XP, I wanted to try it.  Being a C++ programmer, the first  step involved porting <a href="KentBeck.html">KentBeck</a> and <a href="http://c2.com/cgi/wiki?ErichGamma">ErichGamma</a>'s JUnit to C++.  I dubbed it <a href="http://c2.com/cgi/wiki?CppUnit">CppUnit</a>.  Secondarily, I needed to figure out where I was going to start. 
<p>I needed to add some new capabilities to my software.  The new capabilities paralleled some capabilities that the software already had.  My best bet was to develop the new capability, existing in parallel with the old, and slowly migrate it in  (I've heard this called ArchitecturalSubstitution<a href="http://c2.com/cgi/wiki?edit=ArchitecturalSubstitution">?</a>).  However, to get my feet wet, I started to test a few classes that were already there.  I noticed immediately some coupling that I didn't like and I worked to get rid of it.  After doing that, I started testing other classes that I had and each time I learned a little more about some entangled dependencies that were not really necessary.  Although reality set in and I had to get back to adding the new capability, the lesson was not lost on me: <em>Even though it is better to write <a href="UnitTests.html">UnitTests</a> before you  code, you can learn a lot about existing code by writing <a href="UnitTests.html">UnitTests</a> for it.</em>
<p>I got a bit more of this insight later.  I was using a component that someone else had written and the source was not readily available.  I had a spec sheet with the signatures of all of the component operations.  I knew the guy who wrote it, and I'd used it in another context.  To see how well it might serve me now, I started writing <a href="UnitTests.html">UnitTests</a> for it.  Based upon that experience, I tend to think that reuse can be handled by writing <a href="UnitTests.html">UnitTests</a> for existing things, and by writing <a href="UnitTests.html">UnitTests</a> for adapters on existing things.  The big question is &quot;how much do I trust what I am reusing?&quot;  Trust can be based on many things, many of them outside of the code realm.  Sometimes tests are not enough to instill reuse confidence.  Sometimes they are.
<p>Now, is this type of reuse Simple?  Or Easy? (see <a href="DoTheSimplestThingThatCouldPossiblyWork.html">DoTheSimplestThingThatCouldPossiblyWork</a> and <a href="http://c2.com/cgi/wiki?SimpleIsntEasy">SimpleIsntEasy</a>).  The decision to use a black box and adapter rather than writing something from scratch is significant.  Adapters uglify code, but on the plus side, you didn't have to write the code, and you have test cases that tell you (you hope) enough to be able to use the component with confidence.  Moreover, because <a href="UnitTests.html">UnitTests</a> can act as specifications (<a href="http://c2.com/cgi/wiki?UnitTestingIsDesign">UnitTestingIsDesign</a>), you can always revisit your decision later and rip out the adapted component... provided you replace it with something that keeps the tests running.
<p>-- <a href="http://c2.com/cgi/wiki?MichaelFeathers">MichaelFeathers</a>
<hr>
Even with access to the source code (white box?, opaque box?), writing experimental applications or <a href="UnitTests.html">UnitTests</a> seems a good idea -- the <a href="http://c2.com/cgi/wiki?ScientificMethod">ScientificMethod</a> as a learning tool.    --<a href="http://c2.com/cgi/wiki?ScottJohnston">ScottJohnston</a> 
<hr>
I would like to bring up something slightly different.
<p>Programming without the use of libraries and other components is not possible in any reasonable size project. So there is a codebase that you have to trust in. Sorry enough, most libraries ship without any test framework.
The question really is: How do you integrate existing or foreign code into your own code? Do you just use it and trust that it's bug free? I would say No.
How do you write the tests? And what tests do you write?
<p>Should I write <a href="UnitTests.html">UnitTests</a> for all library functions I want to use?
That would create a test framework for the library really, which is not my job. It is way too much work as well. And if I find a bug in the library, I often can't fix it anyways. (no source)
<p>Should I write replacement methods for the library I use to generate working <a href="UnitTests.html">UnitTests</a>?
Should I use Adapters to attach the library and insert some kind of test there?
<p>What do I do if my code breaks because of a used library?
Sometimes I can program a workaround, but that's not always possible.
<p>That are a lot of questions....
What are your ideas or experiences? -- <a href="http://c2.com/cgi/wiki?MalteKroeger">MalteKroeger</a>
<hr>
To <a href="DoTheSimplestThingThatCouldPossiblyWork.html">DoTheSimplestThingThatCouldPossiblyWork</a> would be to use the library without testing it.
What's to be gained from doing a lot of testing on a 3rd party library that you cannot change?
<p>Now, once you start using a library and find a bug in it, you should...
<OL><li> report the bug to the vendor,
<li> work around the bug, and
<li> write a <a href="http://c2.com/cgi/wiki?UnitTest">UnitTest</a> that illustrates the bug.
</OL>The <a href="http://c2.com/cgi/wiki?UnitTest">UnitTest</a> is documentation; it reminds you that you have to keep working around the bug when writing new software and maintaining the existing code.
It also helps notify you when the vendor fixes the bug, and to verify that it is indeed fixed.
<p>This may not be <a href="ExtremeProgramming.html">ExtremeProgramming</a>, but it's what I do:
If you have the source code for the library, and find a bug, it might make sense for you to fix it yourself.
But you must be absolutely sure to...
<UL><li> Report the bug to the vendor.
<li> Make <a href="UnitTests.html">UnitTests</a> for the code you are about to change.
<li> Use a source code control system to keep track of the original source from the vendor, and your changes to it.
<li> Make the smallest change possible.  (Yes, I know their <a href="CodeSmells.html">CodeSmells</a>, but you don't really want to take over their job and abandon all hope of accepting upgrades from them later, do you?)
</UL>The vendor will, eventually, release a new version of the library.
What are you going to do then?
You have to know <em>exactly</em> what changes you made, so that you can repeat them,
to fix the bugs that the vendor <strong>still</strong> hasn't bothered to fix.
<p>I don't like changing 3rd party code.
It's dangerous, and can easily get out of hand.
But sometimes you have no other reasonable options.
-- <a href="http://c2.com/cgi/wiki?JeffGrigg">JeffGrigg</a>
<hr>
<DL><dt> <dd>What's to be gained from doing a lot of testing on a 3rd party library that you cannot change?
<p></DL>The most obvious benefit is that it can save you from writing a lot of code to a library that ultimately proves to be unusable.  Since you need to evaluate a third-party component before you invest a lot of time and money in it (unless the component has such a reputation that there is no question of its suitability for your project), why not conduct this evaluation in such way that it produces <a href="UnitTests.html">UnitTests</a> as a side effect?  (It may not be cost-effective to product <a href="UnitTests.html">UnitTests</a> for the third-party component that are as comprehensive as <a href="UnitTests.html">UnitTests</a> one would write for code developed in-house, but it's still something.  Technically, I suppose, that means they're not &quot;<a href="UnitTests.html">UnitTests</a>&quot; if they don't test the component completely but they are, uh, er, AlmostUnitTests<a href="http://c2.com/cgi/wiki?edit=AlmostUnitTests">?</a>, which, as pointed out elsewhere on this site, is another way of saying NotUnitTests<a href="http://c2.com/cgi/wiki?edit=NotUnitTests">?</a>.  But they're still useful tests.)
<hr>
I totally agree with Jeff. But I wonder if XP encourages code reuse. When I always just <a href="DoTheSimplestThingThatCouldPossiblyWork.html">DoTheSimplestThingThatCouldPossiblyWork</a> it might be simpler to code a piece of software myself instead of understanding and using a 3rd party library. But in the &quot;long&quot; run, I will do better using the library. So where are those &quot;long term&quot; decisions in XP? -- <a href="http://c2.com/cgi/wiki?MalteKroeger">MalteKroeger</a>
<hr>
If I understand XP correctly, it does encourage reuse. <a href="http://c2.com/cgi/wiki?OnceAndOnlyOnce">OnceAndOnlyOnce</a> discourages rewriting existing functionality and if you <a href="RefactorMercilessly.html">RefactorMercilessly</a> you'll end up with a lot of code reuse. Coding a piece of software yourself might be easier than using a 3rd party library (or, for that matter, other pieces existing code) but I don't think it's the simplest thing that could possibly work (see <a href="http://c2.com/cgi/wiki?SimpleIsntEasy">SimpleIsntEasy</a> and discussion above). -- <a href="http://c2.com/cgi/wiki?OliverKamps">OliverKamps</a>
<hr>
How do you define software reuse?  Is it using a fixed capability from many places? Is it branching the development of pre-existing code? Is it the factoring of object-oriented methods?  Is it a combination of these and more?   Under <a href="http://c2.com/cgi/wiki?EvolutionaryProgramming">EvolutionaryProgramming</a> <a href="RonJeffries.html">RonJeffries</a> said XP wasn't about maximizing software reuse, but about maximizing developer productivity. -- <a href="http://c2.com/cgi/wiki?ScottJohnston">ScottJohnston</a>
<hr>
I see it like this.  If you're going to use a library API that you haven't used before, especially one of those Microsoft or Java APIs with the incomplete documentation, you will inevitably write little programs to see what the API actually does in the situation you need it.  Why not write that into a test object?  You'd then have a test to make sure that when the library changes, your API still works the way you expected.  In fact, if we all did this a lot, then perhaps Microsoft's service packs would come out sooner with better beta testing.  We'd just run our test suites to tell them if they got it right.  -<a href="http://c2.com/cgi/wiki?JohnDuncan">JohnDuncan</a>
<hr>
In an exchange on the e-group on reuse <a href="http://c2.com/cgi/wiki?UncleBob">UncleBob</a> said he would import a previously used piece of code with its tests, <a href="KentBeck.html">KentBeck</a> said he would re-write it (the CharlesMoore<a href="http://c2.com/cgi/wiki?edit=CharlesMoore">?</a> Forth approach).
<hr>
The <a href="http://c2.com/cgi/wiki?SimplestThing">SimplestThing</a> for me is to choose a third-party library or component, rather than implement my own, <strong>if</strong> this component conforms to a well-known API, or an open standard, or otherwise avoids lock-in. I'm a big fan of XML as a result of that policy.
<p><hr><a href="http://c2.com/cgi/wiki?edit=ExtremeReuse">EditText</a> of this page (last edited October 17, 2000)<br><a href="http://c2.com/cgi/wiki?FindPage&value=ExtremeReuse">FindPage</a> by browsing or searching<p><font color=gray size=-1>This page mirrored in <a href="index.html">ExtremeProgrammingRoadmap</a> as of March 31, 2001</font></body>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区不卡在线| 中文字幕一区二区三区在线观看| 成人av在线网| 久久精品一区二区| wwwwxxxxx欧美| 精品国内片67194| 精品久久国产字幕高潮| 337p粉嫩大胆色噜噜噜噜亚洲 | 日韩精品91亚洲二区在线观看| 日韩视频在线一区二区| 欧美一区二区三区四区在线观看| 欧美性猛片xxxx免费看久爱| 91福利国产精品| 欧美性猛交xxxxxxxx| 欧美巨大另类极品videosbest | 欧美一区二区三区四区五区| 欧美一区二区三区四区视频 | 三级精品在线观看| 丝袜诱惑制服诱惑色一区在线观看| 亚洲h在线观看| 老色鬼精品视频在线观看播放| 国产女同互慰高潮91漫画| 欧美激情一区二区三区不卡 | 久久99久久久久久久久久久| 激情久久久久久久久久久久久久久久| 精品一区二区三区在线观看国产 | 在线视频你懂得一区| 狠狠色综合日日| 国产91对白在线观看九色| aaa国产一区| 91国在线观看| 日韩精品一区二区三区中文不卡| 久久久五月婷婷| 亚洲免费在线观看视频| 天天色图综合网| 国产一区二区不卡在线 | 日韩欧美一级精品久久| 久久久久久久久一| 亚洲欧美日韩电影| 青娱乐精品视频在线| 成人久久18免费网站麻豆| 美女性感视频久久| 美美哒免费高清在线观看视频一区二区| 国产在线不卡一卡二卡三卡四卡| 99久久精品国产麻豆演员表| 欧美精品视频www在线观看| 337p日本欧洲亚洲大胆精品| 一区二区三区四区在线免费观看 | 成人国产免费视频| 欧美专区在线观看一区| 精品久久久久一区| 亚洲精品伦理在线| 久久国产夜色精品鲁鲁99| 99精品欧美一区二区三区小说| 欧美群妇大交群的观看方式| 国产拍欧美日韩视频二区| 亚洲第一搞黄网站| 粉嫩av一区二区三区| 在线电影国产精品| 国产精品日韩成人| 麻豆精品视频在线观看| 色猫猫国产区一区二在线视频| 精品国产乱子伦一区| 亚洲最大成人综合| 一区二区三区日韩欧美精品| 国产一区二区久久| 91精品国产欧美一区二区18| 中文字幕日韩欧美一区二区三区| 美女久久久精品| 欧美无砖砖区免费| 亚洲婷婷国产精品电影人久久| 免费的成人av| √…a在线天堂一区| 奇米在线7777在线精品| 99麻豆久久久国产精品免费 | 国产精品国产三级国产普通话蜜臀 | 精品第一国产综合精品aⅴ| 亚洲女人的天堂| 成人福利视频在线| 欧美精品一区二区三区一线天视频 | 久久精品噜噜噜成人88aⅴ| 色综合久久久久综合99| 欧美激情综合网| 黑人巨大精品欧美一区| 欧美夫妻性生活| 亚洲综合网站在线观看| 99国产精品久久久久| 国产亚洲欧美色| 激情综合亚洲精品| 日本一区二区三区电影| 久久精品国产亚洲一区二区三区| 欧美嫩在线观看| 亚洲国产另类av| 欧美性猛片xxxx免费看久爱| 一区二区三区在线观看动漫| 91麻豆国产福利在线观看| 国产精品午夜在线| 大桥未久av一区二区三区中文| 久久久午夜精品| 日韩视频免费直播| 日韩精品一区二区三区中文不卡| 日韩主播视频在线| 欧美一区二区三区视频在线观看 | 成人国产电影网| 91久久精品一区二区二区| 综合在线观看色| 99久久精品国产麻豆演员表| 亚洲视频一区在线| 色av一区二区| 亚洲高清免费视频| 欧美久久免费观看| 免费观看一级欧美片| 精品久久国产97色综合| 日韩亚洲欧美综合| 亚洲日本在线观看| 91国在线观看| 日韩综合小视频| 欧美r级电影在线观看| 蜜臀av一区二区在线观看| 日韩一卡二卡三卡四卡| 国内精品久久久久影院薰衣草 | 国产欧美日韩精品a在线观看| 国产精品一二三在| 亚洲欧洲成人av每日更新| 色悠久久久久综合欧美99| 亚洲高清免费观看高清完整版在线观看| 5月丁香婷婷综合| 激情久久久久久久久久久久久久久久 | 91国偷自产一区二区三区观看 | 日韩欧美专区在线| 欧美高清在线一区二区| 91在线一区二区三区| 亚洲专区一二三| 日韩一二三区不卡| 亚洲欧洲无码一区二区三区| 蜜臀av亚洲一区中文字幕| 久久欧美中文字幕| 91免费视频观看| 天天操天天干天天综合网| 欧美zozozo| 91视频免费看| 日韩成人av影视| 国产精品丝袜在线| 欧美日韩一区三区| 国产精品影音先锋| 一区二区三区日韩欧美| 久久综合九色综合欧美98| 色综合天天综合给合国产| 青青草精品视频| 综合欧美亚洲日本| 日韩亚洲欧美成人一区| www.亚洲色图.com| 蜜桃av一区二区| 一区二区三区在线视频免费 | 日韩一区二区影院| yourporn久久国产精品| 欧美96一区二区免费视频| 国产精品久久一级| 日韩视频123| 色综合天天综合狠狠| 国产乱理伦片在线观看夜一区| 一区二区三区四区精品在线视频| 国产一区二区三区av电影| 日韩免费电影一区| 91黄色免费网站| 国产91丝袜在线观看| 日本在线观看不卡视频| 亚洲免费观看在线视频| 久久亚洲私人国产精品va媚药| 中文字幕亚洲一区二区av在线| 久久国产成人午夜av影院| 亚洲欧美日韩在线播放| 久久精品一区二区三区四区 | 一区二区三区在线播放| 国产日韩影视精品| 日韩欧美国产一区二区三区| 欧美在线综合视频| eeuss鲁片一区二区三区| 激情av综合网| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区三区**美女毛片| 欧美激情中文字幕一区二区| 国产露脸91国语对白| 日本伊人午夜精品| 一区二区成人在线| 亚洲欧美偷拍三级| 欧美国产日韩a欧美在线观看| 日韩精品一区二区三区在线 | 国产日韩在线不卡| 精品国产3级a| 日韩视频一区二区三区 | 日韩高清在线电影| 亚洲一区二区四区蜜桃| 亚洲品质自拍视频| **欧美大码日韩| 国产精品免费看片| 欧美韩日一区二区三区四区| 精品国产乱码久久久久久图片| 欧美一级生活片| 日韩一区二区视频在线观看|