??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码成人精品区蜜桃
,亚洲理论电影在线观看,亚洲AV无码一区二区二三区软件
http://www.tkk7.com/Wingel/archive/2006/12/14/87819.htmlWingel Wingel Thu, 14 Dec 2006 13:25:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/14/87819.html http://www.tkk7.com/Wingel/comments/87819.html http://www.tkk7.com/Wingel/archive/2006/12/14/87819.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/87819.html http://www.tkk7.com/Wingel/services/trackbacks/87819.html
链接Q?/strong>
W?4章结对编E?rar
或?下蝲 l对~程的好处:
联合两h的知识去对付一个难题?span lang="EN-US">
知识互相传递?span lang="EN-US">
更有效的查错跟纠错?span lang="EN-US">
E序员都很开心?span lang="EN-US">
减少员工职的损失?span lang="EN-US">
l对~程需要的一些技能:
用代码解释已有的设计l构?span lang="EN-US">
用例子来解释?span lang="EN-US">
用图表来解释设计思\?span lang="EN-US">
如果你无法把你的设计思\表达清楚Q把代码写出来?span lang="EN-US">
让比较迷惑的搭档来写代码Q这样他可以较好的融入你的概念?span lang="EN-US">
l常的休息?span lang="EN-US">
l常的更换搭?span lang="EN-US">
具体内容请下载pdf观看?img src ="http://www.tkk7.com/Wingel/aggbug/87819.html" width = "1" height = "1" /> ]]>Q原创翻译)敏捷开发的必要技?3Q测试驱动编E(TDDQ?/title> http://www.tkk7.com/Wingel/archive/2006/12/11/86952.htmlWingel Wingel Mon, 11 Dec 2006 08:50:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/11/86952.html http://www.tkk7.com/Wingel/comments/86952.html http://www.tkk7.com/Wingel/archive/2006/12/11/86952.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/86952.html http://www.tkk7.com/Wingel/services/trackbacks/86952.html W?3章测试驱动编E?rar 或者?下蝲 TDD 及它的优?span lang="EN-US">
上面q种~程的方式,叫“测试驱动编E?span lang="EN-US">Test Driven Development (TDD) ”,因ؓ我们L在写真正代码之前写一个通不q的试Q然后再写真正的代码Q让试通过?span lang="EN-US">
跟测试后行的开发方式相比,它有如下好处Q?span lang="EN-US">
1.Z更容易的写单元测试,我们会广泛的使用接口Q比?span lang="EN-US">StudentRegistryChecker {)。这个会让单元测试代码很Ҏ读跟写,因ؓ试代码里面没有多余的数据。如果我们不?span lang="EN-US">TDD而是直接写实现的话,我们l常会用现成的c(比如StudentSet Q,试Z调用现成的类Q就不得不创建很多多余的数据Q创建很巨型的对象,像Student 或?span lang="EN-US">Course?span lang="EN-US">
2.因ؓq泛的用接口,我们的类之间׃会藕合(比如EnrollmentSet ׃炚w不知?span lang="EN-US">StudentSet 的存在)Q因此重用性更好?span lang="EN-US">
3.写单元测试的时候,很容易就可以Z个行为写一个测试用例,让它通过Q然后ؓ另一U行为写另一个测试用例。也是_整个d会被划分成很多小的Q务,独立完成。如果我们不?span lang="EN-US">TDD 而直接实现的话,我们很容易就会同时把所有的行ؓ都实C。这栯的时间长Q而且在这相当长的旉里面Q写的代码都是没有测试过Q不能保证准性的。相反的Q用TDD 的话Q我们只实现要测的行为的代码。它只花费很的旉Q几分钟Q,而且可以马上试?/span>
]]> Q原创翻译)敏捷开发的必要技?2Q单元测?/title> http://www.tkk7.com/Wingel/archive/2006/12/09/86506.htmlWingel Wingel Sat, 09 Dec 2006 02:01:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/09/86506.html http://www.tkk7.com/Wingel/comments/86506.html http://www.tkk7.com/Wingel/archive/2006/12/09/86506.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/86506.html http://www.tkk7.com/Wingel/services/trackbacks/86506.html
?/font>
W?2章单元测?rar
或?
下蝲
下蝲pdf?/font>
单元试跟验收测试有什么区别?验收试试的是pȝ的外部行为,而单元测试是试pȝ内部l构Q它只测一个单元(c,甚至一个方法)。验收测试属于客LQ我们没有权利决定验收测试的内容。我们顶多只是帮忙客h据用户例事写出验收测试。单元测试属于我们,因ؓpȝ里面有什么类Q每个类都做什么,是由我们军_的。客户就没有权利涉及了,而且我们也不需要他的参与。我们只是根据我们对q个单元Q类Q的期望写出单元试。因此,q种试又叫“程序员试”?span lang="EN-US">
]]> Q原创翻译)敏捷开发的必要技?1Q对UIq行验收试QAcceptance TestQ?/title> http://www.tkk7.com/Wingel/archive/2006/12/08/86452.htmlWingel Wingel Fri, 08 Dec 2006 13:21:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/08/86452.html http://www.tkk7.com/Wingel/comments/86452.html http://www.tkk7.com/Wingel/archive/2006/12/08/86452.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/86452.html http://www.tkk7.com/Wingel/services/trackbacks/86452.html 阅读全文 ]]> Q原创翻译)敏捷开发的必要技?0Q验收测试(Acceptance TestQ?/title> http://www.tkk7.com/Wingel/archive/2006/12/07/86034.htmlWingel Wingel Thu, 07 Dec 2006 03:17:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/07/86034.html http://www.tkk7.com/Wingel/comments/86034.html http://www.tkk7.com/Wingel/archive/2006/12/07/86034.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/86034.html http://www.tkk7.com/Wingel/services/trackbacks/86034.html 阅读全文 ]]> (原创译)敏捷开发的必要技?Q用CRC卡协助设? http://www.tkk7.com/Wingel/archive/2006/12/05/85515.htmlWingel Wingel Tue, 05 Dec 2006 02:51:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/05/85515.html http://www.tkk7.com/Wingel/comments/85515.html http://www.tkk7.com/Wingel/archive/2006/12/05/85515.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/85515.html http://www.tkk7.com/Wingel/services/trackbacks/85515.html pdf下蝲地址Q W?章用CRC卡协助设?rar 或者: 下蝲 摘录一些东西,具体请下附g观看Q?br />
因ؓ在这些卡里面Q我们写上了cdQ它的职责,以及它的协作关系Q我们管q样的卡片叫?span lang="EN-US">CRC 卡”?span lang="EN-US">CRC是Class Q?span lang="EN-US">Responsibility?span lang="EN-US">Collaboration的简U?span lang="EN-US">
CRC
卡的典型应用
Z么用CRC 卡,而不用文档或者更先进?span lang="EN-US">UML 工具Q?span lang="EN-US">
1.
卡片上面的空间很,q样可以防止我们给q个cd多的职责。如果一个类的职责太多的话(比如Q超q?span lang="EN-US">4 个)Q尝试以更抽象的方式去考虑一下,职责划分?span lang="EN-US">
2.CRC
卡主要是用在探烦或者讨论类的设计的阶段。如果我们觉得这个设计不行的话,我们既不用修Ҏ,也不用修改类图,只要把卡片丢了就行了。此外,一旦设计完成,我们可以把所有的卡丢了。它们不是用来做文档的?span lang="EN-US">
3.
如果我们觉得现在的卡片不合适,之前设计的比较好Q我们只要简单的把之前的卡片拿出来组合就行了?/span>
]]> Q原创翻译)敏捷开发的必要技?Q用用户例事(user story)来管理项?/title> http://www.tkk7.com/Wingel/archive/2006/12/04/85312.htmlWingel Wingel Mon, 04 Dec 2006 03:28:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/04/85312.html http://www.tkk7.com/Wingel/comments/85312.html http://www.tkk7.com/Wingel/archive/2006/12/04/85312.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/85312.html http://www.tkk7.com/Wingel/services/trackbacks/85312.html
W?/span>
8
?/span>
以用户例事管理项?/span>
什么是用户例事
(user story)
假定q个目的客h个饮料自动售货机的制造商。他们要求我们ؓ他们的售货机开发一ƾY件。我们可以找他们的市场经理了解这个Y件的需求?/span>
因此Q我们的客户是他们的市场经理。谈需求的时候,有一回他q样_“用户往售货机每塞一个硬币,售货机都要显C当前该客户已经投了多少钱。当用户投的钱够买某一N料时Q代表这N料的按钮的灯׃亮。如果那个用h了这个按钮,售货机就放一|饮料到出口Q然后找雉l他。?/span>
上面的话描述的是一件事情,一件用户通过pȝ完成他一个有价值的目标Q买一|饮料)的事。这Lq程叫“用h?/span>
(user case)
”或者“用户例?/span>
(user story)
”。也是_上面我们的客h说的话,是在描qC个用户例事(
user story
Q?/span>
(
我解释一下ؓ什么用例事q个词,没兴也可以忽略。在一个系l面前,每个用户要完成同L目标Q都要做q个pȝ讑֮的例行的事,qg事情不是一个例子,所以不叫事例,q也不是故事Q也不能一D历E,而是一个例行的事?/span>
) pdf下蝲地址Q W?章以用户例事理目.rar
]]> Q原创翻译)敏捷开发的必要技?Q-分离数据库访问,UI和域逻辑 http://www.tkk7.com/Wingel/archive/2006/12/01/84879.htmlWingel Wingel Fri, 01 Dec 2006 08:16:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/01/84879.html http://www.tkk7.com/Wingel/comments/84879.html http://www.tkk7.com/Wingel/archive/2006/12/01/84879.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/84879.html http://www.tkk7.com/Wingel/services/trackbacks/84879.html 具体pdf的下载地址Q?br />分离数据库访问,UI和域逻辑 http://wingel.javaeye.com/topics/download/ce15b67a-1df7-4a75-8f03-1a505aca35d8 请从链接中下载,下面的内容只是摘要?br /> 处理三种cd的代码都混在了一P 1.UI: JDialog, JTextField, 响应用户事g的代码?br /> 2.数据库访? Connection, PreparedStatement, SQL statements, ResultSet {等?br /> 3.域逻辑: 参会者的默认idQ参会者的名字必填Q所属地区的限制{等。域逻辑又称为“域模型”或者“业务逻辑”?br /> q三个不同类别的代码混在一P会造成下面的问题: 1.代码很复杂?br />2.代码很难重用。如果我们想创徏一个EditParticipantDialogQ让用户更改参会者的信息Q我们就想重用部分域逻辑Q比如,地区的限Ӟ。但实现q部分域逻辑的代码跟AddParticipantDialog混在了一PҎ不能重用。如果是在一个webpȝ中,更N用了?br />3.代码很难试。每ơ要这L一D代码,我们都要Z个数据库Q还要通过一个用h作界面来试?br /> 4.如果数据库表l构更改了,AddParticipantDialogq个c,q有其他的很多地斚w要跟着更改?br />5.它导致我们一直在考虑一些低层的太细节的概念Q比如数据库字段Q表的记录之cȝQ而不是类Q对象,Ҏ和属性这一cȝ概念。或者说白了一点,一直在考虑怎么往数据库里面装数据Q而没有了面向对象的概念,没有了徏立业务模型的思维?br /> 因此Q我们应该将q三U类别的代码分离开QUIQ数据库讉KQ域逻辑Q。 ?a href="/Files/Wingel/%E7%AC%AC7%E7%AB%A0%E5%B0%86%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BF%E9%97%AE%EF%BC%8CUI%E5%92%8C%E5%9F%9F%E9%80%BB%E8%BE%91%E5%88%86%E7%A6%BB.rar">
]]> (原创译)敏捷开发的必要技? 处理不合适的依赖 http://www.tkk7.com/Wingel/archive/2006/12/01/84733.htmlWingel Wingel Fri, 01 Dec 2006 01:28:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/01/84733.html http://www.tkk7.com/Wingel/comments/84733.html http://www.tkk7.com/Wingel/archive/2006/12/01/84733.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/84733.html http://www.tkk7.com/Wingel/services/trackbacks/84733.html 下蝲Q?br />http://www.tkk7.com/Files/Wingel/W?章处理不合适的引用.rar orhttp://wingel.javaeye.com/topics/download/afd36f87-a11b-4d18-a01b-a843092ec1bc 如果现在有一个类ParentQ里面有个属性的cd是ChildQadd的方法里面还有个参数的类型是GirlQ?br /> class Parent{ Child child; void add(Girl girl){ ... } } 因ؓ上面Parent里面用到了Child跟Girlq两个类Q我们就_Parent引用了类Child跟类Girl。现在的问题是,如果Childq个cL者Girlq个cȝ译不q的话,那么Parentq个cM~译不了了。也是_Parent依赖于Child跟Girl。这章讲q的Q就是因Z些类的依赖造成的无法重用的问题?br />具体的内容在上面的下载链接里面的pdf文g里,内容较多?/font>
]]> 《敏捷开发的必要技巧》各章节都在“敏捷开发”这个分cM http://www.tkk7.com/Wingel/archive/2006/12/01/84728.htmlWingel Wingel Fri, 01 Dec 2006 01:22:00 GMT http://www.tkk7.com/Wingel/archive/2006/12/01/84728.html http://www.tkk7.com/Wingel/comments/84728.html http://www.tkk7.com/Wingel/archive/2006/12/01/84728.html#Feedback 2 http://www.tkk7.com/Wingel/comments/commentRss/84728.html http://www.tkk7.com/Wingel/services/trackbacks/84728.html 或者点q个链接Q?br />http://www.tkk7.com/Wingel/category/17919.html
]]> Q原创翻译) 敏捷开发的必要技?Q慎用?/title> http://www.tkk7.com/Wingel/archive/2006/11/29/84419.htmlWingel Wingel Wed, 29 Nov 2006 12:40:00 GMT http://www.tkk7.com/Wingel/archive/2006/11/29/84419.html http://www.tkk7.com/Wingel/comments/84419.html http://www.tkk7.com/Wingel/archive/2006/11/29/84419.html#Feedback 3 http://www.tkk7.com/Wingel/comments/commentRss/84419.html http://www.tkk7.com/Wingel/services/trackbacks/84419.html 阅读全文 ]]> (原创译)敏捷开发的必要技?Q保持代码的z?/title> http://www.tkk7.com/Wingel/archive/2006/11/28/84137.htmlWingel Wingel Tue, 28 Nov 2006 12:51:00 GMT http://www.tkk7.com/Wingel/archive/2006/11/28/84137.html http://www.tkk7.com/Wingel/comments/84137.html http://www.tkk7.com/Wingel/archive/2006/11/28/84137.html#Feedback 7 http://www.tkk7.com/Wingel/comments/commentRss/84137.html http://www.tkk7.com/Wingel/services/trackbacks/84137.html http://www.tkk7.com/Files/Wingel/W??保持代码z?rar W??保持代码z?/a> W?章?保持代码z?br /> CZ q是一个会议管理系l。它用来理所有参会者的信息。刚开始的时候,我们只需要记录每个参会者的IDQ这是会议组l者分配的Q,姓名Q电话和地址p。于是,我们写了如下的代码: class Participant { String id; String name; String telNo; String address; } class ConferenceSystem { Participant participants[]; } 接着Q新的需求来了:现在每个参会者都可以让组l者帮忙预订酒店,所以我们要记录下他想预订的酒店名,入住日期Q离开日期Q房间类型(单h房或者双人房Q。于是我们又扩充成如下的代码Q ? class Participant { String id; String name; String telNo; String address; boolean bookHotelForHim; String hotelName; Date checkInDate; Date checkOutDate; boolean isSingleRoom; void setHotelBooking(String hotelName, Date checkInDate, ...) { ... } } 接着Q又有一个新的需求来了:参会者可以参加不同的研讨会,所以我们要记录下参会者参加的研讨会。对于他要参加的每一场研讨会Q我们还要记录下他的登记旉Q同时他q需要什么翻译设备。于是代码又扩充成:具体的内容在上面的下载链接里面的pdf文g里?/strong> 完整书籍http://www.tkk7.com/Files/Wingel/%E7%AC%AC4%E7%AB%A0%E4%BF%9D%E6%8C%81%E4%BB%A3%E7%A0%81%E7%AE%80%E6%B4%81.rar ]]> Q原创翻译)敏捷开发的必要技?---消除代码异味 http://www.tkk7.com/Wingel/archive/2006/11/27/83886.htmlWingel Wingel Mon, 27 Nov 2006 13:23:00 GMT http://www.tkk7.com/Wingel/archive/2006/11/27/83886.html http://www.tkk7.com/Wingel/comments/83886.html http://www.tkk7.com/Wingel/archive/2006/11/27/83886.html#Feedback 3 http://www.tkk7.com/Wingel/comments/commentRss/83886.html http://www.tkk7.com/Wingel/services/trackbacks/83886.html http://www.tkk7.com/Files/Wingel/W??20除去代码异味.rar W??除去代码异味 异味q个?可能有点抽象,我们先看一下下面的例子 q是一个CADpȝ. 现在,它已l可以画三种形状?U条,长方?跟圆. 先认真的看一下下面的代码: class Shape { final static int TYPELINE = 0; final static int TYPERECTANGLE = 1; final static int TYPECIRCLE = 2; int shapeType; //U条的开始点 //长方形左下角的点 //圆心 Point p1; //U条的结束点 //长方形的右上角的?br /> //如果是圆的话,q个属性不?br /> Point p2; int radius; } class CADApp { void drawShapes(Graphics graphics, Shape shapes[]) { for (int i = 0; i < shapes.length; i++) { switch (shapes[i].getType()) { case Shape.TYPELINE: graphics.drawLine(shapes[i].getP1(), shapes[i].getP2()); break; case Shape.TYPERECTANGLE: //d条边 graphics.drawLine(...); graphics.drawLine(...); graphics.drawLine(...); graphics.drawLine(...); break; case Shape.TYPECIRCLE: graphics.drawCircle(shapes[i].getP1(), shapes[i].getRadius()); break; } } } } 代码都是一直在改变?而这也是上面的代码会到的一个问? 现在我们有一个问? 如果我们需要支持更多的形状(比如三角?, 那么肯定要改动Shapeq个c? CADApp里面的drawShapesq个Ҏ也要? ?改ؓ如下的样? ...... 如果我们惌支持更多的图形(比如Q三角ŞQ,上面没有一个类需要修攏V我们只需要创Z个新的类Trianglep了?br />具体的内容在上面的下载链接里面的pdf文g里,看pdf比较舒服?/strong> http://www.tkk7.com/Files/Wingel/W??20除去代码异味.rar ]]> Q原创翻译)敏捷开发的必要技?---U除重复代码Q将注释转ؓ代码 http://www.tkk7.com/Wingel/archive/2006/11/27/83885.htmlWingel Wingel Mon, 27 Nov 2006 13:22:00 GMT http://www.tkk7.com/Wingel/archive/2006/11/27/83885.html http://www.tkk7.com/Wingel/comments/83885.html http://www.tkk7.com/Wingel/archive/2006/11/27/83885.html#Feedback 0 http://www.tkk7.com/Wingel/comments/commentRss/83885.html http://www.tkk7.com/Wingel/services/trackbacks/83885.html http://www.tkk7.com/Files/Wingel/敏捷开发的必要技巧第1,2?rar W?章 U除重复代码 重复代码是怎么产生的? 误察下面的代码Q我们已l有一个根据出U记录的id取出U用客户的姓名的Ҏ:getCustomerName?br /> public class BookRental { //该类描述出租记录 String id; String customerName; ... } public class BookRentals { private Vector rentals; public String getCustomerName(String rentalId) { Ҏ出租id取出客户姓名 for (int i = 0; i < rentals.size(); i++) { BookRental rental = (BookRental) rentals.elementAt(i); if (rental.getId().equals(rentalId)) { return rental.getCustomerName(); } } throw new RentalNotFoundException(); } } public class RentalNotFoundException extends Exception { ... } 假定现在你要增加一个新的方法,该方法是Ҏ出租记录的id删除该记?然后把它命名为deleteRental(String rentalId)。现在你已经考虑刎ͼ像getCustomerNameq个Ҏ一P你要一个一个遍历出U记录。所以你将getCustomerNameq个Ҏ里面的一些代码拷出来Q然后稍微修改一下: ..... Z么我们要U除重复代码Q? 我来向各位程序员同学E微说一下,在BookRentalsq个cMQrentalsq个属性的cd是VentorQ如果我们需要将它改为数l,那我们就必须所有的"rentals.size()"改ؓ"rentals.length". 在重构以后的版本中,我们只需要在getRentalIdxByIdq个Ҏ中修改一ơ,而在原来的版本,我们得在getCustomerName跟deleteRental两个Ҏ中都改一ơ。类似的Q我们还要将所有的"rentals.elementAt(i)" 改ؓ "rentals[i]". 又是改一ơ跟改两ơ的比较Q?br /> 大多数情况中Q如果类DL代码?0个地斚w复,当我们修改代码的时候,p修改10个地方,我们q不能保证能把这10个地斚wC了,而一旦漏掉了几个地方Q等待我们的Q是一处一处的错误M复。而最致命的是,当我们修改的是业务逻辑?q时候,不管我们漏掉了几个地方,IDE都不会报错,那么Q等待我们的Q将一堆去查,而造成的一些bug?很可能是短时间内q发C了了.?_-!!具体的内容在上面的下载链接里面的pdf文g里,看pdf比较舒服?/strong> http://www.tkk7.com/Files/Wingel/敏捷开发的必要技巧第1,2?rar ]]>
վ֩ģ壺
鶹Ʒѹۿ |
˳߹ۿŹ |
Ļ99 |
ƷƷһ |
|
Ʒavɫ |
aרav鶹 |
91߹ۿ |
Ʒsuvһ88 |
Ļþۺ |
ѹۿɫƵվbd |
ˮƵ߹ۿ |
ۺһƷ |
Ʒѿþþ |
99ƷһƵ |
ѹۿ˳վ |
ձѹۿ |
һƵ߹ۿ |
97 |
ƷһѲ
|
Ļavר |
˳С˵վɫ |
þþþƷ |
ȫƵѹۿ |
ٸһ |
ɫַ |
99þùۺ |
ձŷҹƬŮԱ
|
jizz |
vvվ |
ĻӰԺѹۿ |
ѹƵС |
ɫҹƵ |
ͩרĻ
|
Ʒɫʹ |
»ɫַ |
av |
һػɫƬ߹ۿ |
91߾Ʒ |
AëƬ߲ |
ëƬ100ѹۿ |