优雅编程之这样创建类,你就“正常”了!

开心一笑

【有个新兵在练枪,三枪都打在靶子外面。
教练非常生气抢过枪对新兵说,看我的!
然后教练三枪也都打在了靶子外,
然后对新兵说:”看,你就是这样打的”!】

提出问题

如何写出规范合理的类???

解决问题

在实际的工作中很多开发人员往往不会思考这么多,他们只想着让代码可以工作就可以了,所以经常出现几千行的大类。因此写出一些有符合规范的类是有必要的。下面是来自《代码整洁之道》中自己的几点总结:

1、类的组织:自顶向下原则,变量列表(公共先于私有,静态先于实体),方法列表,私有工具方法紧跟在公共方法之后;

package com.hwy.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CodeCleanTest {

    /**下面是公共静态常量(公共优先私有) **/
    public static final String BOY = "男孩";
    public static final String GIRL = "女孩";

    /** 下面是私有静态常量(公共优先私有) **/
    private static int kissTimes = 0;

    /** 静态先于实体 **/
    private Logger log = LoggerFactory.getLogger(this.getClass());

    public void eat(){
        System.out.println("吃饭");
        datWithGirl();
    }

    public void datWithGirl(){
        learnToLove();
        System.out.println("和女孩约会!");
    }
    /** 私有工具方法紧跟在公共方法之后 **/
    private void learnToLove(){
        System.out.println("学习如何恋爱!");
    }

}

2、类应该短小:类也应该要尽可能的短小,但和函数不同不是以代码行数来权衡。而是以职责;类的名称应该描述其权责,类名不应该包含模糊的词(如Processor,Manager或Super等),类名越明确,类的职责就越清晰;

3.单一权责原则,只有一个修改它的原因,并与少量的其他类协同完成工作;

4.内聚:类中含有最少的变量,且每个方法都使用每个变量,此时内聚度最高,类应该是内聚高的;

例:修改上面的类,如下,该类中,每个方法都尽量操作类中一个或多个变量

package com.hwy.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CodeCleanTest {

    /**下面是公共静态常量(公共优先私有) **/
    public static final String BOY = "男孩";
    public static final String GIRL = "女孩";

    /** 下面是私有静态常量(公共优先私有) **/
    private static int kissTimes = 0;

    /** 静态先于实体 **/
    private Logger log = LoggerFactory.getLogger(this.getClass());

    /** 该方法使用了BOY log这些变量 **/
    public void eat(){
        System.out.println(BOY + "吃饭");
        datWithGirl();
        log.info("吃完了!");
    }

    /** 该方法使用了BOY GIRL KissTimes 和log这些变量 **/
    public void datWithGirl(){
        learnToLove();
        System.out.println(BOY + "和" + GIRL + "约会!");
        kissTimes = kissTimes++;
        log.info("约会成功!");
    }

    /** 私有工具方法紧跟在公共方法之后 **/
    /** 该方法使用了BOY log这些变量 **/
    private void learnToLove(){
        System.out.println(this.BOY + "学习如何恋爱!");
        log.info("学习成功!");
    }

}

 
5)开发闭合原则(OCP):类应该对扩展开发,对修改封闭

6)隔离修改:具体类实现细节,抽象类只呈现概念,利用接口和抽象类可以隔离因为细节的改变而带来的改变类的风险;

读书感悟

来自《老人与海》

  • 一个人可以被毁灭,但不能被打败。
  • 现在不是去想缺少什么的时候,该想一想凭现有的东西你能做什么。
  • 绝望是一种罪过。
  • 人不抱希望是很傻的。
  • 人不是生来就要被打败的。
  • 我讨厌抽筋,这是身体对自身的背叛。
  • 搏斗,直到战死。
  • 你都累到骨头里去了。

其他

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

你可能感兴趣的:(java,类,代码整洁)