优雅编程之这样组织数据,你就“正常”了(二十五)

开心一笑

【马云有1500亿。中国有13亿人 他每人发一亿 他还有1487亿 这样他还是中国首富 全中国都是亿万富豪。我要不是数学系的都看不出里面的道道】

提出问题

项目中如何重新组织数据???

解决问题

励志图片

以下来自《重构》这本书的读书笔记,欢迎留下宝贵意见。

Self Encapsulate Field(自封装字段)

你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。为这个字段建立取值/设值函数,并且只以这些函数来访问字段。

争论:

直接取值还是间接取值:作者的观点是间接取值。

Replace Data Value with Object(以对象取代数据值)

你有一个数据项,需要与其他数据和行为一起使用才有意义。将数据项变成对象。

Change Value to Reference(将值对象改为引用对象)

你从一个人类衍生出许多彼此相等的实例,希望将它们替换为同一个对象。将这个值对象变成引用对象。

Change Reference to Value(将引用对象改为值对象)

你有一个引用对象,很小且不可变,而且不易管理,将它变成一个值对象。

Replace Array with Object(以对象取代数组)

你有一个数组,其中的元素各自代表不同的东西。以对象替换数组。对于数组中的每一个元素,以一个字段来表示。

重构前:

    String[] gifts = new String[3];
    gifts[0] = "flower";
    gifts[1] = "Say love";
    gifts[2] = "Call";

重构后:

    Gift gift = new Gift();
    gift.setFlower(999);
    gift.setSayWord("Love you");
    gift.setCall("good Night");

Change Unidirectional Association to Bidirectional(将单向关联改为双向关联)

两个类都需要使用对方特性,但其间只有一条单线连接,添加一个反向指针,并修改函数,使能够同时更新两条连接。

    //两人彼此相爱时,心里都有对方
    class Boy{
        //心爱的女孩
        Girl girl;
    
    }
    
    class Girl{
        //心爱的男孩
        Boy boy;
    }

Change Bidirectional Association to Unidiredtional(将双向关联改为单向关联)

两个类之间有双向关联,但其中一个类如今不再需要另一个类的特性。去除双向关联。

    //女孩不喜欢男孩了
    class Boy{

        Girl girl;

    }
    
    
    class Girl{
        //我们分手吧!
        //Boy boy;
    }

Replace Magic Number with Symbolic Constant(以字面常量取代魔法数)

你有一个字面数值,带有特别含义。创造一个残联,根据其意义为它命名,并将上述的字面数值替换为这个常量。

重构前

  public boolean testLove(){
      return 999 * flowerNumber > 99999;
  }

重构后

  //这里的常量要放在离函数近的地方
  public static int DAYS = 999;
  public boolean testLove(){
      return DAYS * flowerNumber > 99999;
  }

Encapsulate Field(封装字段)

你的类中存在一个public字段,将它声明为private,并提供相应的访问函数。(就是我们所说的set,get方法)

重构前

 private String flowerNum

重构后

 private String flowerNumber;

 public String getFlowerNumber() {
    return flowerNumber;
 }

 public void setFlowerNumber(String flowerNumber) {
    this.flowerNumber = flowerNumber;
 }

Encapsulate Collection(封装集合)

有个函数返回一个集合,让这个函数返回该集合的一个只读副本,并在这个类中提供添加/移除集合元素的函数。(具体可以看书本例子)

Replace Type Code with Class(以类取代类型码)

类之中有一个数值类型码,但它并不影响类的行为,以一个新的类替换该数值类型码。(具体可以看书本例子)

Replac Type Code with Subclasses(以子类取代类型码)

你有一个不可变的类型码,它会影响类的行为,以子类取代这个类型码。(具体可以看书本例子)

Replace Type Code with State/Strategy(以State/Strategy)取代类型码

你有一个类型码,它会影响类的行为,但你无法通过继承手法消除它,以状态对象取代类型码。(具体可以看书本例子)

Replace Subclass with Fields(以字段取代子类)

你的各个子类的唯一差别只在,"返回产量数据"的函数身上。修改这些函数,使它们返回超类中的某个新增字段,然后销毁之类。(具体可以看书本例子)

读书感悟

来自亦舒《花解语》

  • 人一定要受过伤才会沉默专注,无论是心灵或肉体上的创伤,对成长都有益处。
  • 不必对全世界失望,百步之内,必有芳草。
  • 每个人的喜怒哀乐完全一样,只是涵养功夫有别。
  • 一些事,无能为力, 爱莫能助,也只得装无知,免得七嘴八舌,更添烦恼。
  • 一个人所可以靠的,不外是他的双手。

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎转载,点赞,顶,欢迎留下宝贵的意见,多谢支持!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容