鱼皮AI导航
鱼皮AI导航
  • 主页
  • 社区
  • AI工具
  • AI知识库
  • AI提示词
  • MCP
  • Skills
  • AI学习资源
  • AI资讯
  • GitHub开源
登录/注册

java-dev

提供 Java 项目开发全流程的标准化指导,涵盖代码风格、异常与空值处理、并发编程、单元测试、Spring Boot 实践及性能优化等核心环节,确保团队协作一致性与工程可维护性。

软件开发
访问 GitHub
文档Skills.MD
name
java-dev
description
Java 开发规范,包含命名约定、异常处理、Spring Boot 最佳实践等
version
v3.0
paths["**/*.java","**/pom.xml","**/build.gradle","**/build.gradle.kts"]

Java 开发规范

参考来源: Google Java Style Guide、阿里巴巴 Java 开发手册


工具链

▼
bash
复制代码
# Maven mvn clean compile # 编译 mvn test # 运行测试 mvn verify # 运行所有检查 # Gradle ./gradlew build # 构建 ./gradlew test # 运行测试

命名约定

类型规则示例
包名全小写,域名反转com.example.project
类名大驼峰,名词/名词短语UserService, HttpClient
方法名小驼峰,动词开头findById, isValid
常量全大写下划线分隔MAX_RETRY_COUNT
布尔返回值is/has/can 前缀isActive(), hasPermission()

类成员顺序

▼
java
复制代码
public class Example { // 1. 静态常量 public static final String CONSTANT = "value"; // 2. 静态变量 private static Logger logger = LoggerFactory.getLogger(Example.class); // 3. 实例变量 private Long id; // 4. 构造函数 public Example() { } // 5. 静态方法 public static Example create() { return new Example(); } // 6. 实例方法(公共 → 私有) public void doSomething() { } private void helperMethod() { } // 7. getter/setter(或使用 Lombok) }

异常处理

▼
java
复制代码
// ✅ 好:捕获具体异常,添加上下文 try { user = userRepository.findById(id); } catch (DataAccessException e) { throw new ServiceException("Failed to find user: " + id, e); } // ✅ 好:资源自动关闭 try (InputStream is = new FileInputStream(file)) { // 使用资源 } // ❌ 差:捕获过宽 catch (Exception e) { e.printStackTrace(); }

空值处理

▼
java
复制代码
// ✅ 使用 Optional public Optional<User> findById(Long id) { return userRepository.findById(id); } // ✅ 参数校验 public void updateUser(User user) { Objects.requireNonNull(user, "user must not be null"); } // ✅ 安全的空值处理 String name = Optional.ofNullable(user) .map(User::getName) .orElse("Unknown");

并发编程

▼
java
复制代码
// ✅ 使用 ExecutorService ExecutorService executor = Executors.newFixedThreadPool(10); Future<Result> future = executor.submit(() -> doWork()); // ✅ 使用 CompletableFuture CompletableFuture<User> future = CompletableFuture .supplyAsync(() -> findUser(id)) .thenApply(user -> enrichUser(user)); // ❌ 差:直接创建线程 new Thread(() -> doWork()).start();

测试规范 (JUnit 5)

▼
java
复制代码
class UserServiceTest { @Test @DisplayName("根据 ID 查找用户 - 用户存在时返回用户") void findById_whenUserExists_returnsUser() { // given when(userRepository.findById(1L)).thenReturn(Optional.of(expected)); // when Optional<User> result = userService.findById(1L); // then assertThat(result).isPresent(); assertThat(result.get().getName()).isEqualTo("test"); } }

Spring Boot 规范

▼
java
复制代码
// ✅ 构造函数注入 @Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; private final EmailService emailService; } // ✅ REST Controller @RestController @RequestMapping("/api/users") public class UserController { @GetMapping("/{id}") public ResponseEntity<UserDto> findById(@PathVariable Long id) { return userService.findById(id) .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); } }

性能优化

陷阱解决方案
N+1 查询使用 JOIN FETCH 或批量查询
循环拼接字符串使用 StringBuilder
频繁装箱拆箱使用原始类型流
未指定集合初始容量new ArrayList<>(size)

日志规范

▼
java
复制代码
// ✅ 参数化日志 log.debug("Finding user by id: {}", userId); log.info("User {} logged in successfully", username); log.error("Failed to process order {}", orderId, exception); // ❌ 差:字符串拼接 log.debug("Finding user by id: " + userId);

详细参考

文件内容
references/java-style.md命名约定、异常处理、Spring Boot、测试规范
references/collections.md不可变集合(Guava)、字符串分割
references/concurrency.md线程池配置、CompletableFuture 超时
references/code-patterns.md卫语句、枚举优化、策略工厂模式

📋 本回复遵循:java-dev - [具体章节]

软件开发

快捷安装

复制到终端去安装 Skill

npxskillsadddoccker/cc-use-exp--skill"java-dev"
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
🔥热门工具
朱雀AI检测朱雀AI检测
朱雀AI检测助手朱雀AI检测助手
LovartLovart
老鱼简历老鱼简历
WritePass官网WritePass官网
面多多面多多
CursorCursor
星月写作星月写作
零感AI零感AI
墨得问题墨得问题
Skills 推荐
implement
实现 Linus Dashboard 的功能开发与集成,基于 TypeScript 和 Python 构建前后端组件,遵循严格的代码规范与架构模式,完成视图、卡片、服务及传感器等模块的创建与验证,确保高质量交付并兼容 Home Assistant 生态。
pypi-server
支持从源码构建 Python 软件包,并搭建本地 PyPI 服务,实现私有包的托管与分发,使团队可通过 pip 直接安装内部开发的模块。
cloud-scheduler-job-creator
自动处理 Google Cloud Platform 中的云调度任务创建,提供符合最佳实践的配置方案与生产级代码生成,支持计算、存储、大数据及机器学习服务的集成部署。
planning-with-files
通过创建任务计划、笔记与交付文件三个持久化文档,实现对复杂任务的结构化管理。在多阶段工作中保持目标清晰,动态更新进度并沉淀研究过程,适用于需长期跟踪的规划、研究及创作场景。
usage-rules
提供针对 Elixir 生态中各类包的编码规范检索能力,能自动定位本地依赖或缓存中的 usage-rules.md 文件,按查询上下文精准提取最佳实践、常见错误及正反示例,支持版本感知的渐进式获取与离线复用。