随笔分类 - C#
摘要:一、前言 2017年最后几天,你们都高高兴兴的跨年,博主还在加班制作.net安装包。因为年前要出来第一版的安装包,所以博主是加班加点啊。本来想用VS自带的制作工具,不过用过的人都知道,真是非常好(tong)用(ku),各种包需要单独下载不说,界面也不美观,所以决定弃用之。同事推荐用Advanced
阅读全文
摘要:一、写在前面 最近做项目需要用到识别图片中文字的功能,本来用的Tesseract这个写的,不过效果不是很理想。 随后上网搜了一下OCR接口,就准备使用腾讯云、百度的OCR接口试一下效果。不过这个腾讯云OCR就折腾了一天! 二、OCR-通用印刷体识别 首先附上文档地址:OCR-通用印刷体识别。 1、通
阅读全文
摘要:返回总目录 本小节目录 Replace Inheritance with Delegation(以委托取代继承) Replace Delegation with Inheritance(以继承取代委托) 11Replace Inheritance with Delegation(以委托取代继承) 概
阅读全文
摘要:返回总目录 10 Form Template Method(塑造模板函数) 概要 你有一些子类,其中相应的某些函数以相同的顺序执行类似的操作,但各个操作的细节不同。 将这些操作分别放进独立的函数中,并保持它们都有相同的签名,于是原函数也就变得相同了,然后将原函数上移至基类。 动机 继承是避免重复行为
阅读全文
摘要:返回总目录 本小节目录 Extract BaseClass(提炼基类) Extract Interface(提炼接口) Collapse Hierarchy(折叠继承体系) 7Extract BaseClass(提炼基类) 概要 两个类有相似特性。为这两个类建立一个基类,将相同特性移至基类。 动机
阅读全文
摘要:基类中的某个函数只与部分(并非全部)子类有关。将这个函数移到相关的那些子类去。
阅读全文
摘要:异常能清楚地将“普通程序”和“错误处理”分开了,这使得程序更容易理解。
代码的可理解性应该是我们虔诚追求的目标。
阅读全文
摘要:有一个函数,从来没有被其他任何类用到。将这个函数设为private。
阅读全文
摘要:对象调用某个函数,并将所得结果做为参数,传递给另一个函数。而接受参数的函数本身也能够调用前一个函数。
让参数接受者去除该项参数,并直接调用前一个函数。
阅读全文
摘要:你有一个函数,其中完全取决于参数值而采取不同行为。针对该参数的每个可能值,建立一个独立的函数。
阅读全文
摘要:某个函数既返回对象状态值,又修改对象状态(副作用)。
建立两个不同的函数,其中一个负责查询,另一个负责修改。
阅读全文
摘要:返回总目录 本小节目录 Rename Method(函数改名) Add Parameter(添加参数) Remove Parameter(移除参数) 1Rename Method(函数改名) 概要 函数的名称未能揭示函数的用途。 修改函数的名称。 动机 将复杂的处理过程分解成小函数是良好的编程风格。
阅读全文
摘要:返回总目录 7 Introduce Null Object(引入Null对象) 概要 你需要再三检查某对象是否为null。 将null值替换为null对象。 动机 系统在使用对象的相关功能时,总要检查对象是否为null,如果不为null,我们才会调用它的相关方法,完成某种逻辑。这样的检查在一个系统中
阅读全文
摘要:返回总目录 本小节目录 Replace Nested Conditional with Guard Claues(以卫语句取代嵌套条件表达式) Replace Conditional with Polymorphism(以多态取代条件表达式) 5Replace Nested Conditional
阅读全文
摘要:返回总目录 本小节目录 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) Remove Control Flag(移除控制标记) 3Consolidate Duplicate Conditional Fragments(合并重复的条件片段)
阅读全文
摘要:返回总目录 本小节目录 Decompose Conditional(分解条件表达式) Consolidate Conditional Expression(合并条件表达式) 1Decompose Conditional(分解条件表达式) 概要 你有一个复杂的条件(if-else if-else)语句
阅读全文
摘要:返回总目录 本小节目录 Introduce Foreign Method(引入外加函数) Introduce Local Extension(引入本地扩展) Introduce Foreign Method(引入外加函数) Introduce Local Extension(引入本地扩展) 7Int
阅读全文
摘要:返回总目录 本小节目录 Hide Delegate(隐藏“委托关系”) Remove Middle Man(移除中间人) Hide Delegate(隐藏“委托关系”) Remove Middle Man(移除中间人) 5Hide Delegate(隐藏“委托关系”) 概要 客户通过一个委托关系来调
阅读全文
摘要:返回总目录 本小节目录 Extract Class(提炼类) Inline Class(将类内联化) 3Extract Class(提炼类) 概要 某个类做了应该由两个类做的事。 建立一个新类,将相关的字段和函数从旧类搬移到新类。 动机 如果一个类中有大量的函数和数据,这个类往往太大而且不易理解。这
阅读全文


浙公网安备 33010602011771号