自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (7)
  • 问答 (2)
  • 收藏
  • 关注

原创 处理继承关系

1. 函数上移重复的代码是滋生bug的温床,因为很容易修改一个而忘了修改另一个。当多个子类都有功能类似的函数时,则将这个函数总结,提升到父类中。如果该函数还引用了子类中的其他方法和字段,把它们都上移到父类中。其他本没有这个函数的子类可以实现缺省方法,或者抛出异常。4. 函数下移如果一个父类中的方法只与少数几个子类相关,则下移到这几个子类中。3. 构造函数本体上移将子类中公共语句...

2019-12-27 20:56:08 625

原创 重构API

1. 将查询函数与修改函数分离因为查询是没有副作用的,但是修改函数却有可能有副作用。这个也可以引申为将查询函数与响应函数分离。就是在查询函数中将所有可能造成副作用的语句提炼成一个函数。这样需要关心的代码就更少了。2. 函数参数化如果多个函数逻辑非常相似,只有一些字面量值不同,那么可以将这些字面量作为参数传入,将多个函数合并成一个。3. 移除标记参数标记参数是指,调用者用它来指示...

2019-12-26 17:35:17 258

原创 简化条件逻辑

1. 分解条件表达式对条件表达式的每一个分支都提炼一个方法,甚至是对条件语句提炼一个方法,便于理解。2. 合并条件表达式如果多个检查条件各不相同,但最终行为却一致,则使用逻辑与和逻辑或将其合并为一个条件表达式。3. 以卫语句取代嵌套条件表达式条件表达式一般有两种风格,一是两个条件分支都属正常行为,另一种是只有一个条件分支是正常行为,另一个分支则是异常情况。对于第二种风格,我们应...

2019-12-24 17:49:44 379

原创 重新组织数据

将一个值用于多个用途,就是催生混乱与bug的温床1. 拆分变量如果一个变量有多个用途,就为每个用途声明一个变量。还有,如果要对参数改值,也先复制一份,对副本改值,返回副本。2. 字段改名给字段取一个准确的名字。好的命名及数据分布,能让别人只看类的字段就理解这些类的行为。3. 以查询取代派生变量尽量把可变数据的作用于限制在最小范围,如果使用调用查询函数替代变量,就能避免 ...

2019-12-24 17:44:52 257 1

原创 搬移特性

1. 搬移函数如果一个函数频繁引用其他上下文的元素,而对自身上下文的元素却很少调用,说明它属于另一个上下文。对于与方法同名的变量,想想它是否有存在的必要。2. 搬移字段数据结构是一个健壮程序的根基,坏的数据结构本身会隐藏程序的真实意图。把字段放到适合的类中,或是为相互关联的字段创建一个类。3. 搬移语句到函数如果多个方法调用a方法之前,都要写一样的语句,如判断语句,那么就把...

2019-12-24 17:25:23 341

原创 封装

类是为隐藏信息而生,类与模块如果都能很好地封装自己,那么将更有利于解耦,理解,修改,移植。1. 封装记录以数据类取代记录,为每个变量写get/set方法,最直接的好处是当值被修改时,容易通过调试知道是在哪修改的。还有就是容易在读取、写入时做一些其他的验证等操作。这个在c#中的event action观察者模式中非常实用。2. 封装集合如果让取值函数返回集合本身,那么在外面修改了集合...

2019-12-24 16:51:08 148

原创 唯一解的数独题目生成器——理解回溯法

在生成数独题目时,流程是:生成一个完整的数独——随机挖空——解题——如果只有一个解,则生成该题目,如果有多个解,则重新挖空。数独题目的生成涉及的一个算法是回溯法,这里面的完整数独的生成、求解都用到了回溯法。1. 生成完整数独在生成部分,先生成所有宫的1,再生成所有宫的2,以此类推。主要有三个值:boolean[][][] placeable = new boolean[9][9...

2019-12-04 18:10:51 4500

原创 1. 第一组重构

1. 提炼函数当你想为接下来的一段代码写点注释时,那么这就暗示着,这段代码应该被提炼成一个函数,这个函数的名字应该是函数的功能,是做什么,而不是这么做,一般你想写什么注释,名字就重注释中抽取关键词。当遇到循环、条件等语句,可以将它们提炼成一个函数。提炼函数的目的是将意图与实现相分离。所以一般有个主函数,里面调用其他的函数,这个主函数包含的就是意图,其他函数就是实现。提炼函数时,如果要返...

2019-12-03 14:39:24 176

原创 0. 重构概述

这一系列的重构知识总结自马丁福勒的《重构 改善既有代码的设计》一书。为什么要重构?因为一个项目往往不只一个人在写,其他人也会来读写你的代码,有些人甚至自己写的代码几个月之后就看不懂当初自己写的是什么了。重构的目的:改进软件的设计,使软件更易理解,容易找出bug,在后期要添加新功能时,提高编程速度,重构后的代码更易调优。重构的时机:一般在添加新功能前,如果不太好添加,则...

2019-12-03 13:44:59 163

唯一解的数独题目生成器

Sudoku 唯一解的数独题目生成器,具体讲解请移步:https://blog.csdn.net/Michaelia_hu/article/details/103390255

2019-12-04

KMP算法的java实现.txt

KMP算法的java实现,KMP详细解说请移步:https://blog.csdn.net/Michaelia_hu/article/details/100888201

2019-11-29

一个比较通用的网站主页面

网页的效果与讲解请移步博客:https://blog.csdn.net/Michaelia_hu/article/details/89158661

2019-04-11

简约风格网页仿写

网页的效果与实现讲解请移步我的博客:https://blog.csdn.net/Michaelia_hu/article/details/89217733

2019-04-11

在Unity中测量显示空间距离

在Unity中用GL库实现一个测量显示空间距离的功能,项目效果及解说请看:https://mp.csdn.net/postedit/87932866

2019-02-26

中科院ICTCLAS50_Windows分词

中科院ICTCLAS50_Windows分词,内含32位与64位,能智能地将一段文字分解成词语,可以用于翻译,比如要翻译一段话,机器如何知道那几个字是一个词呢?就需要先通过分词,再翻译,当然现在智能的翻译肯定不是逐词翻译啦,但是自己写个翻译程序玩玩还是可以用得上的。

2019-01-02

牛津英汉词典 .txt版

牛津英汉词典 .txt版,主要用于java或其他语言编写翻译词典,当然也可用作一般查询,但是不推荐用作一般的查询,用txt作词典的话为什么在百度上查或者下个有道翻译呢。

2019-01-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除