"尹立香手工精油皂用法真的温和舒 缓不刺激吗"

  沉香手工香皂-升级版100g/个!加量不加价,源于天然用得自然!

  沉香手工皂的功效:沉香皂体中含10%的沉香精油,滋养温和配方能有效按摩肌肤,促进人体对沉香精華的吸收舒缓压力、抗菌杀菌、止痒、安眠抗郁、滋滑肌肤,洗后不绷紧、不干燥、舒适滋润涵养肌肤水分。价优!批发价更低!

  沉馫香皂 沉香精油可刺激免疫系统  预防细菌感染   是一种平衡精油能给皮肤增加能量  增强皮肤抵抗力  更可修复疲倦脆弱的皮肤细胞延缓衰老  具囿提伸醒恼 改善睡眠等诸多保健功效

  沉香香皂现货供应!厂价直批!一件200个!非常时期可用沉香皂洗手,能有效杀灭手上的细菌(沉香具有杀菌抗菌功效)沉香皂具有润肤作用,洗完后不仅手上弥留着淡淡的香味,手上的皮肤还非常柔滑不干燥现货供应 

图示:沉香馫皂含有沉香精油

图示:沉香香皂的外表。

  新型肺炎非常时期可用沉香皂洗手,能有效杀灭手上的细菌病毒(沉香具有杀菌抗菌功效)沉香皂具有润肤作用,洗完后不仅手上弥留着淡淡的香味,手上的皮肤还非常柔滑不干燥

  沉香香皂我们拥有优势的批发渠道!提供優势价格!优势沉香产品~!

  看完:详解沉香香皂的功效与作用_沉香手工皂厂家批发。如果你有想法采购大量的沉香手工香皂!欢迎咨询我們!

最近在对已有项目进行扩展的时候发现要改动的一个类它长 766 行,开放了近 40 个 public 接口我流着泪把它给改完了。为了防止这样的惨剧再次发生在我的身上我觉得有必要写┅篇博客来让广大程序猿同胞知道代码重构的重要性

如果你身边有一个类写上千行的猿,一定要把此文转给 ta

实际项目中真的不建议类过長以及职责过多,非常不友好!!!

另外Guide 在经历了几个项目之后,发现大部分情况下一个类一般是不会太长的除非是这个类职责太多,再或者说自己没有抽取相应的逻辑/工具类方法

我觉得我们写代码不光是要把功能实现,还一定要对代码的质量比如可读性有较高要求检验你的代码可读性与否很简单,就是随便拉一个稍微懂点业务的开发过来看你的代码看看别人能不能很快就看懂。

我当时自己写简單的 RPC 框架的时候大部分时间实际都花在了方法的命名、类的拆分和包的拆分这三件事情上。

还有一点我印象比较深的是:好的代码尽量昰不需要注释通过名字就能看清意思。 但是我在经历了几个项目之后发现,这点真的对开发有太高要求很难保证,特别是在没有 Code Review 的時候

团队成员之前达成一个共识很重要!!!

一下子扯了这么多题外话,都是有感而发我们开始正菜吧!

类过长——读不通,扩展不通

  • 读不通——直接用滚轮滚都得好几秒就算是原作者,时间长了恐怕也难以理清整个类更不用说是其他的读者
  • 扩展不通——一个类有過多的接口,会让扩展这个类变得异常困难一动千行

类过长——可能有冗余代码

此时 CV 工程师打了个冷战

冗余代码,就是重复代码通常絀自使用 Ctrl+C,Ctrl+V 来生产代码的 CV 工程师之手冗余代码的危害非常大:

  1. 冗余代码使方法、类过长,不简洁
  2. 冗余代码会造成发散式修改(冗余代码需偠变动时每一处 Ctrl+V 都需要修改)

类过长——多半是职责过多

一个类开放几十个接口,绝对存在职责过多的问题就像图中的 Tom 猫一样手忙脚乱,一个类的职责过多也有巨大问题:

  1. 违反设计原则——单一职责原则(单一职责原则要求一个类只实现一个职责比如一只 Tom 只做扫地、擦桌、拖地中的一件事,而其他事的实现可以转移给史派克狗或肥胖女佣)违反了这个原则会导致发散式变化、发散式修改、类过长等代码问題,还会让你的类难以扩展甚至会让其他程序猿认为你不专业
  2. 发散式变化(指引发此类修改的地方很多),如果一个类的职责很多那它的扇入(调用者)一定很多,每个调用者的修改都有可能让你这个类不得不随之修改也就是发散式变化 就是说不管哪儿出了问题,你这个类都嘚遭殃
  3. 发散式修改(指此类修改引发修改的地方很多)相同的,如果一个类职责很多那支撑它实现的下级,即扇出(被调用方)一定很多如果此类逻辑发生变动,所有下级被调用者可能都得随之修改也就是发散式修改 就是说你这个类出了问题,不管哪儿都会遭殃
  4. 难以扩展:洳果你的一个类接口非常多那它的子类怎么办?它的包装类怎么办难道全部都要实现这么多接口,全部都要承担同样多的职责吗扩展起来真的非常麻烦
  5. 触发机关:【测试之怒】【运维之怒】

我已经写了几千行了,怎么办

抽取冗余代码就是将重复代码抽取成一个独立嘚方法,之后再使用这段代码时就不再需要 Ctrl + CCtrl + V,而是直接调用对应的方法即可

这样做也可以缩短原方法使原方法更加简洁易懂

更值得一提的是如果这段代码需要修改,也只需修改一处而不是发散式地到处修改

使用 IDEA 进行冗余代码的抽取

自动检测出个别重复代码的细微差别,有些代码可能只改动一两个变量IDEA 会自动检测出来,并在抽取方法时提醒我们选择左侧 Accept Signature Change(接受签名变动)可以使抽取的方法自动替换更多嘚重复点

可以选择替换掉所有的重复代码(竟然有 18 处)

3.重构——更改方法签名

如果你对抽取出的方法的名字、参数、返回值或是修饰符不满意,不要使用 Ctrl + R 修改IDEA 提供了重构方法——更改签名(快捷键 Ctrl + F6)

注意:方法的名字指的是方法做了什么,而非怎么去做最好是 动词+名词 格式

重构——转移成员变量+函数(转移职责)

将不应该由自己管理的成员变量和函数转移出去

那就要考虑两个问题:该转移谁?转移给谁

  1. 图中成员【偏 A】被类【A】调用两次,而只被它所在的类【过长类】调用 1 次因而应该转移给【A】去管理
  2. 由于函数【偏 A】与成员【偏 A】的亲密度较高(只調用了【偏 A】),因而应与【偏 A】共进退同去留,转移给【A】
  3. 成员【偏 B】和函数【偏 B】也是相同道理
  4. 职责 1(函数【1】和成员【偏职责 1】)和职責 2(函数【2】和成员【偏职责 2】)由于找不到可转移的合适的类所以应抽取出一个新的类

注意,先决定移动哪个成员变量然后再决定移动哪个函数

使用 IDEA 转移成员变量和函数

2.移动函数(与移动成员变量步骤相同)

当你发现要转移的成员变量和函数找不到合适的类时(转移职责却找不箌下家),要想起来这里是程序世界,而我们程序猿就是类和对象的造物主是时候创建一个新的类,让它来替我们分担职责(成员变量和函数)了

不推荐抽取参数对象因为一般参数对象是给参数多的方法用的(用参数对象取代一长溜的参数),而且如果成员变量抽取了也不会影響任何函数的话那就是无用对象了,不如直接把他们删除掉

2.为新类起个名选个包吧

3.注意,抽取的函数和成员一定要符合一个原则那僦是被抽取函数使用被抽取成员的次数一定高于剩余函数的次数,不然违反亲密性原则(成员应归于调用它最多的类没有理由你用的比我哆还让我来管理)

4.一些小问题 由于抽取的函数直接使用了未抽取的对象而导致重构失败,涉及到另一个重构(使用 get 方法而非直接使用私有成员變量)使用此重构即可解决。


面试高频题:springBoot自动装配的原理你能说出来吗

一款直击痛点的优秀http框架,让我超高效率完成了和第三方接口嘚对接

3年外包Java面试问了Java基础,感觉太紧张了

我要回帖

更多关于 精油皂用法 的文章

 

随机推荐