学习嵩山版《Java 开发手册》:编程规约 - 命名风格(P15 ~ P16)

概述

  1. 《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,他旨在提升开发效率和代码质量

  2. 《Java 开发手册》是一本极具价值的 Java 开发规范指南,对于提升开发者的综合素质和代码质量具有重要意义

  3. 学习《Java 开发手册》是一个提升 Java 编程技能、了解行业最佳实践和规范的好方法


编程规约 - 命名风格 P15

1、基本介绍
  • 【推荐】如果模块、接口、类、方法使用了设计模式,在命名时需体现出具体模式。

  • 说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。

java 复制代码
正例

public class OrderFactory;
public class LoginProxy;
public class ResourceObserver;
2、学习补充
  1. OrderFactory:表明这个类是一个工厂类,负责创建订单对象。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。

  2. LoginProxy:表明这个类是一个代理类,用于处理登录操作。代理模式是一种结构型设计模式,它为一个对象提供一个占位符,以控制对这个对象的访问。

  3. ResourceObserver:表明这个类是一个观察者,用于观察资源的变化。观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象。


编程规约 - 命名风格 P16

1、基本介绍
  • 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,确定与接口方法相关,并且是整个应用的基础常量。
java 复制代码
// 正例

void commit(); // 接口方法签名
String COMPANY = "alibaba"; // 接口基础常量
java 复制代码
// 反例

public abstract void f(); // 接口方法定义 
  • 说明:JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默认实现。
2、学习补充
  1. 在 Java 接口中定义的变量默认是 public static final 的,其实就是一个常量
java 复制代码
interface UserService {

    // 表示用户的默认状态
    String DEFAULT_USER_STATUS = "ACTIVE";
}

System.out.println(UserService.DEFAULT_USER_STATUS);

// 如下代码会编译错误
// java: 无法为最终变量DEFAULT_USER_STATUS分配值
// UserService.DEFAULT_USER_STATUS = "UNKNOWN";
  1. 在 Java 接口中定义的方法默认是 public abstract

  2. 从 Java8 开始,接口中可以包含默认方法

java 复制代码
interface MyDefaultInterface {
    default void defaultMethod() {
        System.out.println("这是默认方法");
    }

    void abstractMethod();
}

class MyClass implements MyDefaultInterface {
    @Override
    public void abstractMethod() {
        System.out.println("实现抽象方法");
    }
}

MyClass myClass = new MyClass();
myClass.defaultMethod();
myClass.abstractMethod();
  1. 从 Java8 开始,接口中可以包含静态方法
java 复制代码
interface MyStaticInterface {
    static void staticMethod() {
        System.out.println("这是静态方法");
    }
}

MyStaticInterface.staticMethod();
  1. 接口定义并结合有效的 Javadoc 注释
java 复制代码
/**
 * 用户服务接口,定义了与用户相关的操作。
 */
    interface UserService {

    /**
     * 创建一个新用户。
     *
     * @param username 用户名
     * @param password 密码
     * @return 创建的用户对象
     */
    User createUser(String username, String password);

    /**
     * 根据用户名查找用户。
     *
     * @param username 用户名
     * @return 查找到的用户对象,如果未找到则返回 null
     */
    User findUserByUsername(String username);

    /**
     * 用户服务接口的基础常量,表示用户的默认状态。
     */
    String DEFAULT_USER_STATUS = "ACTIVE";
}
相关推荐
倒流时光三十年3 分钟前
Logback 系列(7):常用 Appender(控制台 / 文件 / 滚动文件)
java·前端·logback
w139548564226 分钟前
AI 周报卡片:智能生成内容的 UI 呈现
后端
全堆鸿蒙7 分钟前
天气药丸标签:Row + Text 组合实现品牌药丸
后端
sycmancia10 分钟前
Qt——另一种创建线程的方式
开发语言·qt
晴雨天️16 分钟前
Git工具使用指南
笔记·git
HONG````20 分钟前
HarmonyOS ArkUI Slider 与 Rating 实战:音量控制、亮度调节与星级评分
后端
醉城夜风~20 分钟前
MyBatis 基础CRUD全套实战学习笔记
笔记·学习·mybatis
极客先躯21 分钟前
高级java每日一道面试题-2026年04月18日-实战篇[Docker]-如何处理金融行业的时序数据容器化?
java·运维·docker·容器·金融·时序数据·高级面试
hdsoft_huge26 分钟前
SpringBoot系列18:SpringSecurity登录鉴权,JWT无状态Token认证完整流程(生产级落地)
java·spring boot·后端
野蛮人6号35 分钟前
黑马天机学堂系列问题之选集8本地服务报错
java·spring cloud·黑马程序员·天机学堂·黑马天机学堂