Fork me on GitHub

随笔分类 -  C#

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