拆解重构学习法训练是什么

有人知道英语里面的拆解重构训练么 - 知乎2 个月前关注有人知道英语里面的拆解重构训练么分享举报{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\u002Fpay.zhihu.com\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&pin&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&113984&:{&isPending&:false,&title&:&有人知道英语里面的拆解重构训练么&,&author&:&cai-zhao-ying-zi-de-mao-shi-tai&,&content&:&\u003Cdiv\u003E有人知道英语里面的拆解重构训练么\u003C\u002Fdiv\u003E&,&updated&:new Date(&T01:45:17.000Z&),&canComment&:true,&commentPermission&:&anyone&,&commentCount&:0,&collapsedCount&:0,&likeCount&:0,&state&:&published&,&isLiked&:false,&slug&:&113984&,&lastestTipjarors&:[],&virtuals&:{&isLiked&:false},&repinCount&:0,&likers&:[],&tags&:[],&adminClosedComment&:false,&topReactions&:{},&id&:&113984&,&reactionCount&:0,&viewPermission&:&all&,&isDeleted&:false,&url&:&\u002Fpins\u002F113984&,&sourcePinId&:0,&created&:,&comments&:[],&tagSpecials&:{},&excerptTitle&:&有人知道英语里面的拆解重构训练么&,&type&:&pin&,&contentHtml&:&\u003Cdiv\u003E有人知道英语里面的拆解重构训练么\u003C\u002Fdiv\u003E&,&isAdminCloseRepin&:false,&FULLINFO&:true}},&User&:{&cai-zhao-ying-zi-de-mao-shi-tai&:{&isFollowed&:false,&name&:&踩着影子的猫师太&,&headline&:&大学生在读&,&gender&:0,&avatarUrl&:&https:\u002F\u002Fpic4.zhimg.com\u002F50\u002Fv2-71ff49236aed_l.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&cai-zhao-ying-zi-de-mao-shi-tai&,&isBlocking&:false,&userType&:&people&,&urlToken&:&cai-zhao-ying-zi-de-mao-shi-tai&,&url&:&\u002Fpeople\u002F7e02b3de2ab41eaf3d3255&,&followerCount&:0,&pinEasterEggs&:{&worldcup&:null},&isBlocked&:false,&id&:&7e02b3de2ab41eaf3d3255&,&reactionCount&:0}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&searchAdvertPosition&:&1&,&growthSearch&:&s2&,&nwebQAGrowth&:&experiment&,&qawebRelatedReadingsContentControl&:&close&,&liveStore&:&ls_a2_b2_c1_f2&,&nwebSearch&:&nweb_search_heifetz&,&searchHybridTabs&:&pin-3#album-7&,&newSignBg&:&new&,&rt&:&y&,&isOffice&:&false&,&newLiveFeedMediacard&:&new&,&newMobileAppHeader&:&true&,&androidPassThroughPush&:&all&,&np&:&1&,&hybridZhmoreVideo&:&yes&,&nwebGrowthPeople&:&default&,&nwebSearchSuggest&:&default&,&qrcodeLogin&:&qrcode&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&androidSearchTabStyle&:&search_tab_style_b&,&growthBanner&:&default&,&newMobileColumnAppheader&:&new_header&,&androidDbRecommendAction&:&open&,&searchTab&:&collapse&,&zcmLighting&:&zcm&,&androidDbFeedHashTagStyle&:&button&,&appStoreRateDialog&:&close&,&mobileFeedGuide&:&block&,&default&:&None&,&isNewNotiPanel&:&no&,&adR&:&a&,&wechatShareModal&:&auto_down_load&,&uRe&:&1&,&androidProfilePanel&:&panel_b&}},&columns&:{&next&:{}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&updating&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null},&deleteFail&:{&fail&:false},&recommendTopic&:[],&reallyRecommendTopics&:[],&selectedColumn&:0,&videoCovers&:[]},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&trafficSource&:&production&,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&name&:&Trident&,&version&:&7.0&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}可拆卸和重构的支撑体结构_Roger_BrunoRichard_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
可拆卸和重构的支撑体结构_Roger_BrunoRichard
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩3页未读,
定制HR最喜欢的简历
你可能喜欢《叔叔的故事》:被拆解和重构的故事_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
《叔叔的故事》:被拆解和重构的故事
龙源创新数字传媒(北京)股份有限公司|
总评分0.0|
试读已结束,如需继续阅读或下载
享专业文档下载特权
赠共享文档下载特权
10W篇文档免费专享
定制HR最喜欢的简历
你可能喜欢4.24-26重构实战训练营:改善软件代码质量培训课程_苦逼的社红火_新浪博客
4.24-26重构实战训练营:改善软件代码质量培训课程
【课程介绍】&&
&软件重构面临的背景都是相似的,程序员们为了快速完成需求和上线而写出了最基本的代码,而在功能的不断扩充过程中,以打补丁的方式对代码进行扩充,中间还会面临着开发人员的变更和离职。逐渐的,代码就会越来越臃肿,渐渐的变得难以维护。&
&很多开发人员对重构有着严重的误解,错误的认为重构是专门安排一个阶段来进行的,但是我们却认为是持续进行的,而不是在项目结束时、发布版本时、迭代结束时甚至不是每天快下班时才进行的.重构是我们每隔一个小时或者半个小时就要去做的事情。通过重构,我们可以持续地保持代码尽可能干净,简单并且具有表达力。因此重构成为了每个开发人员必备的基本技能,可是国内的开发人员却很少去重构。&
&那么糟糕的软件代码结构会有什么样的影响?首先是开发效率的降低,在糟糕架构下加进新功能,会受之前代码的影响,可能存在意想不到的改动点和问题点,开发和调试时间都会大大增加;其次是故障率的提升,在质量低下的代码中,总是容易藏着很多不易发现的坑,这些都会成为故障的隐患;同时,架构也会使得需求的完成大打折扣,使得设计好的目标,因为架构限制或者性能等原因,只能完成80%甚至更低。&
&大多数软件开发方面的培训都是关于新系统的设计和开发,讲师教你如何从无到有创建出一个新的应用来。然而在真实的项目,许多产品如今往往依然运行在基于复杂架构设计和传统技术实现的遗留系统上,并依赖着它们,
如何摸索出有效方法应对这些遗留系统, 已经成为我们最需解决的问题之一。&
&随着不同产品的推出、不同客户,不同版本的发布,需要维护的遗留代码越来越多,重构也就在所难免.
迄今为止所有的软件系统都会变成遗留系统,并且都遭遇了缓慢,不可抗拒的腐化,因此软件开发人员不得不面对既有系统的混乱代码.而本课程正是告诉你如何重构既有的遗留系统,
如何重构代码,重构设计,重构架构.&
&这就是本课程所要讲述的内容---重构。简言之,该课程教你如何扭转系统腐化,重构复杂遗留系统,减低维护成本。在面对一个错综复杂的,不透明的,令人费解的系统时如何慢慢地,逐步地将其变成一个简单的,有良好组织和设计的系统。【培训对象】&
各类软件研发中心的软件设计师、架构师,
项目经理,技术总监,质量部门经理。对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人,效果最佳。&
各类软件研发中心的软件设计师、架构师,
项目经理,技术总监,质量部门经理。对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人,效果最佳。&
数据库重构
软件腐烂监控
数据库工程师
【培训特色】&
&本课程注重实战,采用案例贯穿方式完成实践,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总,研讨,并最终形成培训教程。本次培训从程序员的编程思维开始讲解,通过大量的真实案例,详细地介绍了重构需要注意的要点以及难点,这些知识都是讲师十几年经验的总结。&
&本次课程1/3时间讲解核心思想,1/3时间动手重构实践,1/3点评分析总结。【学员基础】学员学习本课程应具备下列基础知识:&&&&&&
1、目前正在面临复杂遗留系统,必须需要维护和重构;&&&&&&
2、具有面向对象基本概念,熟悉基本设计模式。【培训内容】
&&&&&&&&&&&&&&&&&授课内容
第一部分 为什么软件需要及时重构
第一单元&剖析软件质量不断下降的根源
一、质量不断下降的表现:1.&
程序代码越来越乱2.& 软件维护成本越来越高3.&
软件变更越来越困难4.&
无法进行新技术的改造二、以往采取的措施:1.&
头痛医头,脚痛医脚2.& 抛弃掉重新编写3.&
因担心未来变化而做的过度设计三、带来的问题1.&
团队成员越来越多但效率却越来越低2.&
测试变得越来越困难而任务繁重3.&
软件系统越来越笨重而不适应未来变化分析与反思&四、案例分析:一个遗留系统的演化过程1.&
起初的设计2.& 随后的变更3.&
质量不断下降的过程五、软件质量下降的根源:1.&
软件总是因变更而变得越来越复杂2.&
软件结构已经不再适应复杂的软件需求3.&
必须要调整软件结构以适应新的软件需求&六、软件是因需求变更而质量下降吗?案例分析:推演软件变更的设计过程应对软件变更的最佳方式:两顶帽子1.&
重构原有代码以适应新的需求2.&
实现新的需求案例:演示两顶帽子的设计过程
第二单元&高质量的软件设计过程
一、以往软件设计的过程:1.&
演示以往软件设计的过程2.&
剖析以往软件设计的问题与风险二、小步快跑模式的开发过程:1.&
用最快的速度开发一个最核心的功能2.&
让第一个版本运行起来并可以验证3.&
在第一个版本的基础上不断添加功能:a.&
每次只添加一个很简单、很单一的功能b.&
每次以两顶帽子的方式添加新功能c.& 运行、调试与验证d.&
重复这个过程添加下一个功能4.&
复杂的系统就是由一次次正确开发的不断积累而成三、案例:演示小步快跑的开发过程小步快跑解决的问题:1.&
复杂功能有效地解耦2.& 代码编写总是可测试与验证3.&
简化设计与思考的复杂度4.&
适时重构以避免软件退化&四、测试驱动设计1.&
TDD vs. 后测试开发2.&
案例:演示测试驱动设计的过程3.& 测试驱动设计的优势4.&
实践测试驱动设计的难题讨论:自动化测试脚本应当由谁来写?练习:运用小步快跑的方式设计一个软件
第二部分 重构的执行
&第三单元&何为重构
一、软件重构的概念1.&
重构是一系列代码的等量变换案例:一个Hello World重构过程2.&
重构的保险索:自动化测试案例:Hello World的自动化测试过程3.&
软件修改的四种动机——重构的价值4.&
一个真实的谎言——重构的误区5.&
重构的主要方法与技巧&二、案例分析:重构一个大型遗留系统1.&重构第一步:分解大函数超级大函数及其危害案例:演示大函数产生的过程案例:演示抽取方法操作步骤实践抽取方法会遇到的问题和解决方案2.&重构第二步:拆分大对象超级大对象及其危害案例:演示超级大对象的产生过程案例:演示抽取类的操作步骤讲解单一职责设计原则案例:演示“分久必合,合久必分”的重构过程3.&重构第三步:提高复用率讲解顺序编程及其危害“不要重复代码”原则案例:提高代码复用的6个方法案例:演示新增代码时的代码复用过程用静态检查工具检查重复代码4.&重构第四步:可扩展设计过度设计
恰如其分的设计讲解“开放-封闭”的设计原则案例:讲解可扩展设计的4个方法案例:讲解新增代码的可扩展设计过程5.&重构第五步:降低耦合度案例:讲解接口、实现与工厂模式案例:讲解外部接口解耦与适配器模式案例:讲解继承泛滥问题与桥接模式案例:讲解方法解耦与策略模式案例:讲解过程解耦与命令模式案例:讲解透明扩展与组合模式、装饰者模式6.&重构第六步:系统分层反思软件架构需要怎样的分层结构遗留系统如何拥抱需求变化遗留系统如何应对技术变革7.&重构第七步:领域驱动设计领域驱动设计的概念讲解领域模型分析方法讲解原文分析法与领域驱动设计&讨论:如何制定重构项目计划练习:重构一个小程序并编写测试脚本
第四单元&关于重构的讨论
一、什么时候重构1.&
重构是一种习惯2.& 重构让程序可读3.&
重构,才好复用4.& 先重构,再扩展5.&
紧急任务时的重构&二、测试的困境1.&
重构初期的困局2.& 解耦与自动化测试3.&
建立自动化测试体系&三、重构的评价1.&
评价软件质量的指标2.& 评价软件质量的工具
第三部分 系统级的重构项目案例
第五单元&遗留系统的技术改造难题
一、技术改造的难题一些大型遗留系统已经运行维护十年以上,现在面临着技术改造的难题:1.&
程序越来越乱:代码在退化,软件质量持续下降,维护成本越来越高;2.&
面临技术改造:一直在犹豫改还是不改,但现在到了不得不改的时候了。&二、以往的解决方案:1.&&修修补补,遇到什么问题就解决什么问题:存在的问题:a.始终治标不治本,不能从根本上解决许多问题;b.有过一些改造,但不敢尝试真正的技术改造,越老的系统技术越落后存在的问题:面临着被市场淘汰的绝大风险&2.&&彻底丢弃原有系统重新开发,从而快速摆脱以往技术债务存在的问题:原系统运行维护十年以上,积累大量繁复而细微的业务需求与程序逻辑,但在重做过程中都遭到遗失,给项目带来巨大的风险&三、问题的实质:1.&
面临巨大市场压力,改造是想做不想做都得做的事情了;2.&
原系统中积累大量繁复而细微的业务需求与程序逻辑,既不在设计文档中,也不为现有的维护人员所掌握,但一旦遗失却严重后果;3.&
一边在技术改造,一边还有新的需求需要维护,意味着改造中的新系统,在还未替代老系统前,还要不断与老系统同步;4.正是有了如此多的难题与风险,使得旧系统改造面临进退两难的困境。&四、演化式重构解决方案:1.&&演化式地对原系统进行重构,渐进式地进行优化改进不是丢弃原系统,而是从原系统开始,运用重构方法进行一小步一小步的优化与调整,使技术改造过程变得平滑。2.&&培训、指导与审查并举,切实提高代码编写质量首先对人员进行代码质量与重构的培训,制订代码规范与静态代码检查。在开发初期加强对每项设计的指导,之后组长责任制进行代码审查。3.&&组件开发-测试为一体的团队一边改造,一边编写自动化测试脚本,让改造过程随时处于质量监控之下。4.&&优化与维护并行开展,让改造工作快速起效制订迭代式计划,每完成一次改造就发布一个可运行版本。之后的运行维护在该版本的基础上开展。5.&&平台建设与系统重构并行开展,加快改造速度分成平台组与重构组并行开展工作,一边在搭建新的技术开发平台,一边运用重构在优化原有系统,最终实现原有系统向新开发平台的代码迁移。&
第六单元&系统级软件重构过程
一、案例分析:演化式重构的改造过程:1.&&重构的概念及解决的问题演化式重构的概念建立领域驱动设计的过程2.&&模块的选择与迭代项目计划先选择易上手、快速起效的模块开始改造再选择最核心、最关键的模块进行改造制订迭代式技术改造项目计划3.&&组建一个开发-测试为一体的团队测试人员与开发人员同时开始工作改造初期的自动化测试过程逐渐编写自动化测试程序的过程4.&&平台建设与系统重构并举重构组:一边在重构,一边在升级维护上线,既使改造工作快速起效,又使重构的成功以最快的速度得到验证,降低改造风险平台组:构建基于领域的轻量级系统架构,既为旧系统代码移植创造条件,又为技术的更迭降低成本5.&&平滑地代码移植代码移植的条件:1)旧系统完成了代码重构,实现业务代码与技术代码的有效解耦;2)新平台构建了一个基于领域的系统架构。代码移植过程:1)将旧系统中的业务领域层有效提取出来;2)将业务领域代码放入新平台中3)完成其它的配置、接口、前端界面等工作4)运行、调试、测试二、改造的效果:1.&
实现领域驱动设计,拥抱未来需求的变化2.&
建立自动化测试体系保障软件质量3.&
更加灵活而快速地应对未来技术的更新&三、讨论:系统级重构的经验与分享
&注:1、确定报名参加培训的学员,请及时把此回执表填好发给我培训中心。2、报名后,经本中心确认,将学费一次性汇入以下账户:单位名称:国软育诚(北京)信息科技有限公司开户银行:工行北京八大处支行账&&&
号:00617453、我中心会在每个课程开课前一周把详细的上课报到通知发送给学员,详告训练地点、乘车路线、住宿安排情况及注意事项,如有问题请与我中心及时联系:&&
话:010-&&&&
联系人: &郭洋
博客等级:
博客积分:0
博客访问:151
关注人气:0
荣誉徽章:}

我要回帖

更多关于 拆解重构学英语 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信