第1章 构,第一个案例1 1.1 起点1 1.2 构的第一步7 1.3 分解并组statement()8 1.4 运用多态取代与价格相关的条件逻辑34 1.5 结语52 第2章 构原则53 2.1 何谓构53 2.2 为何构55 2.3 何时构57 2.4 怎么对经理说60 2.5 构的难题62 2.6 构与设计66 2.7 构与性能69 2.8 构起源何处71 第3章 代码的坏味道75 3.1 DuplicatedCode(复代码)76 3.2 LongMethod(过长函数)76 3.3 LargeClass(过大的类)78 3.4 LongParameterList(过长参数列)78 3.5 DivergentChange(发散式变化)79 3.6 ShotgunSurgery(霰弹式修改)80 3.7 FeatureEnvy(依恋情结)80 3.8 DataClumps(数据泥团)81 3.9 PrimitiveObsession(基本类型偏执)81 3.10 SwitchStatements(switch惊悚现身)82 3.11 ParallelInheritanceHierarchies(平行继承体系)83 3.12 LazyClass(冗赘类)83 3.13 SpeculativeGenerality(夸夸其谈未来性)83 3.14 TemporaryField(令人迷惑的暂时字段)84 3.15 MessageChains(过度耦合的消息链)84 3.16 MiddleMan(中间人)85 3.17 InappropriateIntimacy(狎昵关系)85 3.18 AlternativeClasseswithDifferentInterfaces(异曲同工的类)85 3.19 IncompleteLibraryClass(不完美的库类)86 3.20 DataClass(纯稚的数据类)86 3.21 RefusedBequest(被拒绝的遗赠)87 3.22 Comments(过多的注释)87 第4章 构筑测试体系89 4.1 自测试代码的价值89 4.2 JUnit测试框架91 4.3 添加更多测试97 第5章 构列表103 5.1 构的记录格式103 5.2 寻找引用点105 5.3 这些构手法有多成熟106 第6章 新组织函数109 6.1 ExtractMethod(提炼函数)110 6.2 InlineMethod(内联函数)117 6.3 InlineTemp(内联临时变量)119 6.4 ReplaceTempwithQuery(以查询取代临时变量)120 6.5 IntroduceExplainingVariable(引入解释性变量)124 6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值)131 6.8 ReplaceMethodwithMethodObject(以函数对象取代函数)135 6.9 SubstituteAlgorithm(替换算法)139 第7章 在对象之间搬移特性141 7.1 MoveMethod(搬移函数)142 7.2 MoveField(搬移字段)146 7.3 ExtractClass(提炼类)149 7.4 InlineClass(将类内联化)154 7.5 HideDelegate(隐藏“委托关系”)157 7.6 RemoveMiddleMan(移除中间人)160 7.7 IntroduceForeignMethod(引入外加函数)162 7.8 IntroduceLocalExtension(引入本地扩展)164 第8章 新组织数据169 8.1 SelfEncapsulateField(自封装字段)171 8.2 ReplaceDataValuewithObject(以对象取代数据值)175 8.3 ChangeValuetoReference(将值对象改为引用对象)179 8.4 ChangeReferencetoValue(将引用对象改为值对象)183 8.5 ReplaceArraywithObject(以对象取代数组)186 8.6 DuplicateObservedData(复制“被监视数据”)189 8.7 ChangeUnidirectionalAssociationtoBidirectional(将单向关联改为双向关联)197 8.8 ChangeBidirectionalAssociationtoUnidirectional(将双向关联改为单向关联)200 8.9 ReplaceMagicNumberwithSymbolicConstant(以字面常量取代魔法数)204 8.10 EncapsulateField(封装字段)206 8.11 EncapsulateCollection(封装集合)208 8.12 ReplaceRecordwithDataClass(以数据类取代记录)217 8.13 ReplaceTypeCodewithClass(以类取代类型码)218 8.14 ReplaceTypeCodewithSubclasses(以子类取代类型码)223 8.15 ReplaceTypeCodewithState/Strategy(以State/Strategy取代类型码)227 8.16 ReplaceSubclasswithFields(以字段取代子类)232 第9章 简化条件表达式237 9.1 DecomposeConditional(分解条件表达式)238 9.2 ConsolidateConditionalExpression(合并条件表达式)240 9.3 ConsolidateDuplicateConditionalFragments(合并复的条件片段)243 9.4 RemoveControlFlag(移除控制标记)245 9.5 ReplaceNestedConditionalwithGuardClauses(以卫语句取代嵌套条件表达式)250 9.6 ReplaceConditionalwithPolymorphism(以多态取代条件表达式)255 9.7 IntroduceNullObject(引入Null对象)260 9.8 IntroduceAssertion(引入断言)267 第10章 简化函数调用271 10.1 RenameMethod(函数改名)273 10.2 AddParameter(添加参数)275 10.3 RemoveParameter(移除参数)277 10.4 SeparateQueryfromModifier(将查询函数和修改函数分离)279 10.5 ParameterizeMethod(令函数携带参数)283 10.6 ReplaceParameterwithExplicitMethods(以明确函数取代参数)285 10.7 PreserveWholeObject(保持对象完整)288 10.8 ReplaceParameterwithMethods(以函数取代参数)292 10.9 IntroduceParameterObject(引入参数对象)295 10.10 RemoveSettingMethod(移除设值函数)300 10.11 HideMethod(隐藏函数)303 10.12 ReplaceConstructorwithFactoryMethod(以工厂函数取代构造函数)304 10.13 EncapsulateDowncast(封装向下转型)308 10.14 ReplaceErrorCodewithException(以异常取代错误码)310 10.15 ReplaceExceptionwithTest(以测试取代异常)315 第11章 处理概括关系319 11.1 PullUpField(字段上移)320 11.2 PullUpMethod(函数上移)322 11.3 PullUpConstructorBody(构造函数本体上移)325 11.4 PushDownMethod(函数下移)328 11.5 PushDownField(字段下移)329 11.6 ExtractSubclass(提炼子类)330 …… 第12章 大型构359 第13章 构,复用与现实379 第14章 构工具401 第15章 总结409 参考书目413 要点列表417 索引419
2022-07-31 22:17:22 31MB java
1
Qt实战案例之利用QProcess实现应用程序启功能.zip,可参考文章:https://wendy.blog.csdn.net/article/details/126087475
2022-07-31 19:04:39 4KB qt qt5 c++ ui
1
用工具,如果有拍摄日期则按拍摄日期命名,如果没有则按创建日期或修改日期。 拖文件夹到程序图标上即可,密码是两个OKOK 慎,不可逆,但是有文件名备份,可以手动改
2022-07-30 22:00:56 359KB 照片批量按拍摄日期重命名工具
1
拼多多补单软件是一款帮助广大拼多多商家安全,稳定,高效地提升销量排名,动态评分,权,坑产,全自动开团,参团,单买,批量导出发货订单表格等功能为一体的软件。
1
pvrcnn是一个两阶段检测算法。stage1采用常规的voxel-based的方法得到proposal。stage 2:refine。经过stage1得到了RoI, 刚刚的关键点特征提取得到了每个关键点的特征。然后可以进行refine了。还有一个Predicted Keypoint Weighting模块。它的作用主要是想降低不是前景点的关键点特征对refine阶段的影响。通过训练两层MPL来使得模型能够区分哪些是前景点,哪些是背景点,并对背景点赋予较小的权。以gird point为球心,以某一设定值为半径画球,对包括在其中的关键点再次进行set abstraction操作,得到更高级的特征。这样做有一个好处就是,在画球的过程中,有可能将RoI之外的点包括进来,从而提供更丰富的语义信息,帮助模型更好的回归。这样复6 * 6 * 6次,就能得到6 * 6 * 6个特征向量。
2022-07-30 16:05:41 46.79MB 3D目标检测 点云检测 人工智能
1
基于shell的文件内部文字替换或者文件名命名的工具包
2022-07-28 21:00:34 159KB 工具包
1
MAC/网卡.修改无需启。对电脑网卡无损。还能还原
2022-07-28 11:27:52 827KB MAC/网卡修改
1
本人在基于vs2012 c#编写的一个简单的winform换肤方法,方便大家快速预览皮肤的样式,以便应用。上个版本代码比较乱,没加注释,这个版本代码构了一下,增加了相关注释,希望对大家有用
2022-07-27 11:03:44 4.64MB winform换肤 winform皮肤 IrisSkin2 c#
1
周末比较闲,修正了2.0版的一些小问题,现版本2.1,欢迎测试!   本程序为StarsunYzL所写。使用后将大大提高系统关机/启的速度,据测试一般不会超过2秒,并且对大部分应用程序都有效,已测试开始菜单—关机、万象关机、shutdown -s -t 0命令等,均可实现瞬间启/关机(显示器立马黑掉!和冰点远程关机的效果一样) 单个FlashOff 2.1.exe文件,无需安装,不修改任何系统文件,可以远程调用,随时运行后即起作用,运行几秒后程序自动退出,无任何东东常驻内存,丝毫不影响系统性能,建议把FlashOff 2.1.exe放到开始菜单的启动里。(注意运行FlashOff 2.1.exe不会有任何提示,运行后你就可以测试一下启/关机看看有没有效果了) 2.1版说明: *解决2.0版在冰点下失效的问题 *理论上已支持Windows 2000以上的所有系统 *为了省事把注销给禁用掉了,运行2.1版后系统将无法注销,只能关机/启 *2.1版运行时会释放一个驱动YzLDisCOW.sYs到临时目录并加载它,使用完后程序会自动卸载这个驱动并删除,跟大家说明白免得有人以为是病毒 *除非因驱动导致蓝屏等大错误,应该不再更新…… 添加了两个可选参数: -r 立即瞬间启 -s 立即瞬间关机
2022-07-26 23:33:12 22KB 无盘瞬间关机
1
PointRCNN源代码中的作者提及的预训练模型。[3D检测系列-PointRCNN]复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权下载链接(从0开始以及各种报错的解决方法)。有了该模型就无需自己在训练,可以直接用这个模型对网络进行检测和再训练。并且可以参考我的另一篇博文进行网络复现和可视化操作。利用作者的预训练模型可以直接检测,将模型放在tools下面。复现博文地址:https://blog.csdn.net/Callme_TeacherPi/article/details/125963061
2022-07-26 17:06:58 13.83MB 3D目标检测 深度学习 人工智能
1