Common code violations in Java

Claude Code构建主动型AI开发工作流:从代码探索到自动化CI/CD AI编程助手是现代软件开发中的重要工具,它基于深度学习和自然语言处理技术,能够理解代码语义和项目上下文。其核心原理是通过大语言模型分析代码结构、识别模式,并提供智能建议。在技术价值上,AI编程助手显著提升开发效率,减少重复性工作,帮助开发者快速理解复杂代码库。在实际应用场景中,它广泛应用于代码审查、错误修复、测试生成和重构优化等任务。本文以Claude Code为例,深入探讨如何构建主动型开发工作流,涵盖代码探索和错误修复等关键环节,展示AI如何从被动响应转变为主动参与开发流程。 阅读详情

Statement

This article comes from the network,the source is http://veerasundar.com/blog/2012/09/common-code-violations-in-java/

At work, recently I did a code cleanup of an existing Java project. After that exercise, I could see a common set of code violations that occur again and again in the code. So, I came up with a list of such common violations and shared it with my peers so that an awareness would help to improve the code quality and maintainability. I’m sharing the list here to a bigger audience.

The list is not in any particular order and all derived from the rules enforced by code quality tools such as CheckStyle, FindBugs and PMD.

Here we go!

Format source code and Organize imports in Eclipse


Eclipse provides the option to auto-format the source code and organize the imports (thereby removing unused ones). You can use the following shortcut keys to invoke these functions.

  • Ctrl + Shift + F – Formats the source code.
  • Ctrl + Shift + O – Organizes the imports and removes the unused ones.

Instead of you manually invoking these two functions, you can tell Eclipse to auto-format and auto-organize whenever you save a file. To do this, in Eclipse, go to Window -> Preferences -> Java -> Editor -> Save Actions and then enable Perform the selected actions on save and checkFormat source code + Organize imports.

Avoid multiple returns (exit points) in methods


In your methods, make sure that you have only one exit point. Do not use returns in more than one places in a method body.

For example, the below code is NOT RECOMMENDED because it has more then one exit points (return statements).

private boolean isEligible(int age){
  if(age > 18){
    return true;
  }else{
    return false;
  }
}

The above code can be rewritten like this (of course, the below code can be still improved, but that’ll be later).

private boolean isEligible(int age){
  boolean result;
  if(age > 18){
    result = true;
  }else{
    result = false;
  }
  return result;
}

Simplify if-else methods


We write several utility methods that takes a parameter, checks for some conditions and returns a value based on the condition. For example, consider the isEligible method that you just saw in the previous point.

private boolean isEligible(int age){
  boolean result;
  if(age > 18){
    result = true;
  }else{
    result = false;
  }
  return result;
}

The entire method can be re-written as a single return statement as below.

private boolean isEligible(int age){
  return age > 18;
}

Do not create new instances of Boolean, Integer or String


Avoid creating new instances of Boolean, Integer, String etc. For example, instead of using new Boolean(true), use Boolean.valueOf(true). The later statement has the same effect of the former one but it has improved performance.

Use curly braces around block statements


Never forget to use curly braces around block level statements such as if, for, while. This reduces the ambiguity of your code and avoids the chances of introducing a new bug when you modify the block level statement.

NOT RECOMMENDED

if(age > 18)
  result = true;
else
  result = false;

RECOMMENDED

if(age > 18){
  result = true;
}else{
  result = false;
}

Mark method parameters as final, wherever applicable


Always mark the method parameters as final wherever applicable. If you do so, when you accidentally modify the value of the parameter, you’ll get a compiler warning. Also, it makes the compiler to optimize the byte code in a better way.

RECOMMENDED

private boolean isEligible(final int age){ ... }

Name public static final fields in UPPERCASE


Always name the public static final fields (also known as Constants) in UPPERCASE. This lets you to easily differentiate constant fields from the local variables.

NOT RECOMMENDED

public static final String testAccountNo = "12345678";

RECOMMENDED

public static final String TEST_ACCOUNT_NO = "12345678";

Combine multiple if statements into one


Wherever possible, try to combine multiple if statements into single one.

For example, the below code;

if(age > 18){
  if( voted == false){
    // eligible to vote.
  }
}

can be combined into single if statements, as:

if(age > 18 && !voted){
  // eligible to vote
}

switch should have default


Always add a default case for the switch statements.

Avoid duplicate string literals, instead create a constant


If you have to use a string in several places, avoid using it as a literal. Instead create a String constant and use it.

For example, from the below code,

private void someMethod(){
  logger.log("My Application" + e);
  ....
  ....
  logger.log("My Application" + f);
}

The string literal “My Application” can be made as an Constant and used in the code.

public static final String MY_APP = "My Application";

private void someMethod(){
  logger.log(MY_APP + e);
  ....
  ....
  logger.log(MY_APP + f);
}

Grok Build:终端原生AI编程搭档的原理与工程实践 终端AI不是浏览器替代品,而是基于CLI、TUI和headless架构重构开发者工作流的智能基础设施。其核心原理在于Rust异步运行时(tokio)+跨平台ANSI渲染(crossterm)实现毫秒级响应TUI,配合无状态headless模式严格遵循Unix哲学,支持CI/CD、Git Hook等自动化场景。技术价值体现在低资源占用(<15MB内存)、全平台兼容(含树莓派SSH环境)及可编程性——通过ACP协议暴露JSON-RPC接口,使AI能力可被VS Code、Obsidian甚至自研工具直接集成。关键 阅读详情

相关推荐

Kimi K2.5系统提示词解析:人机协作的底层协议与工程化实践

系统提示词是大语言模型行为调控的核心机制,它定义了AI的角色定位、能力边界与输出规范,本质是一种隐式的人机协作协议。在模型基础能力趋同的今天,对系统提示词的理解与工程化运用,已成为提升技术生产力的关键路径。本文聚焦Kimi K2.5这一典型代表,深入剖析其三层结构(角色定义、能力锚点、输出契约),揭示其如何影响实际交互效果,并提供网页版用户提示工程、API可编程配置、版本迁移避坑等实战策略。尤其针对开发者高频场景——如长文本处理、代码生成、多模态解析与系统级稳定性控制,给出可复用的提示词设计范式与调试方法,

weixin_30617737的博客 543

violations-lib:一款强大的静态代码分析报告解析库

violations-lib:一款强大的静态代码分析报告解析库 在软件开发过程中,代码质量是保证程序稳定性和可维护性的关键因素。静态代码分析是一种在不运行程序的情况下,通过分析代码的结构和内容来检测潜在错误和问题的方式。而violations-lib正是一款能够帮助开发者高效处理静态代码分析报告的Java库。 项目介绍 violations-lib是一个Java库,主要用于解析各种静态代码分析工具...

gitblog_00644的博客 567

提示词工程:从入门到精通的系统性方法与工程实践

你是不是也遇到过这种情况:花了几十块钱买了某个AI大模型的会员,兴冲冲地输入一个问题,结果得到的回答要么是“正确的废话”,要么干脆答非所问,甚至开始一本正经地胡说八道?然后你开始怀疑,到底是模型不行,还是自己不会用? 这恰恰是当前AI应用开发中最普遍、也最容易被忽视的“最后一公里”问题。模型本身很强大,但如果你不知道如何与它“对话”,再强的能力也无法为你所用。很多人以为提示词工程(Prompt Engineering)就是“把话说清楚点”,或者在网上找几个“万能模板”套用。这种认知偏差,直接导致了99%的弯

weixin_30384217的博客 565

Java项目中参数校验方法

创建自定义异常类来处理特定的参数错误,可以更加精确地描述错误情况。try {

weixin_42564451的博客 1537

【信息科学与工程学】【数据科学】第一百五十五篇 数据集成与开发02

​。

weixin_49199313的博客 22

【信息科学与工程学】【数据科学】第一百五十五篇 数据集成与开发01

至此,我们已经完成了从接入层存储层处理层建模层编排层治理层可观测层到服务层的全部八个领域的详细设计表格。BPMN/UML 时序图、状态机、协作图(PlantUML 代码)深度数学建模(排队论、统计过程控制、机器学习异常检测等)逐步推理的数学表达式及数据结构参数关联矩阵(含默认值、单位、传递/互斥/联动/依赖关系)完整的编译器配置(Maven/pip/conda、JVM参数、环境变量)详细的代码示例(Java/Python/YAML/JSON/SQL)

weixin_49199313的博客 23

8种常见的Java不规范代码

转载自:http://developer.51cto.com/art/201209/357113.htm Eclipse提供了自动格式化源代码和管理import语句的功能(并移除未使用的语句)。你可以使用下面的快捷键来使用这些功能。 在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意

lester的专栏 773

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 279

Java Thread Pools — Deep Dive

Java线程池核心原理摘要 线程池作用:解决线程创建开销大、资源耗尽问题,通过复用固定线程、控制并发量、任务队列解耦任务提交与执行。Java提供Executor框架(Java 5+)实现。 核心类层次: Executor → ExecutorService → ThreadPoolExecutor(核心)/ScheduledThreadPoolExecutor(定时) ForkJoinPool:工作窃取,支持并行流和CompletableFuture ThreadPoolExecutor关键参数: core

quwenqian的专栏 389

微信小程序图书馆座位再利用系统开发实战

在移动互联网时代,微信小程序凭借免安装、即用即走的特点,成为校园服务类应用的优选载体。对于需要实时状态同步和业务规则约束的场景,如图书馆座位管理,开发者往往需要考虑前端交互、后端事务、实时通信等多层技术协同。Spring Boot作为成熟的Java后端框架,能够有效处理预约、签到等高频并发请求,而WebSocket长连接则能实现座位状态的秒级刷新。同时,基于信用分的违规约束机制,为公共资源的高效流转提供了合理的管理手段。本文围绕图书馆座位再利用系统的完整开发流程,详细阐述从业务建模、技术选型到关键模块实现的

weixin_28698059的博客 311

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

Claude Opus 4.8动态工作流:AI驱动的工程级编码范式升级

动态工作流(Dynamic Workflows)是现代AI编程工具的核心演进方向,指模型在运行时自主构建、调度与验证多代理协作网络的技术范式,区别于传统静态Agent框架。其原理基于代码依赖图分析、实时子代理生成与对抗性交叉验证,显著提升复杂系统审计、遗留重构与安全合规等任务的推理深度与结果可信度。技术价值在于将工程问题转化为可编排、可验证、可收敛的自动化流程,支撑微服务治理、React Hooks迁移、PCI-DSS合规检查等高阶应用场景。本文聚焦Claude Opus 4.8中Dynamic Workf

weixin_33674976的博客 454

LTC2990电池监控芯片I²C驱动开发与多通道同步采样实践

电池监控是嵌入式电源管理系统的核心环节,其本质依赖高精度模拟信号采集、数字转换与实时状态评估。LTC2990作为集成电压/电流/温度三合一的专用监控IC,通过真差分输入、内置基准和I²C数字接口,显著简化了SOC/SOH估算的硬件链路。其技术价值在于以单芯片替代传统ADC+运放+传感器组合,在宽压(2.7–36 V)、高共模(80 V)场景下保障工业级测量可靠性。典型应用于电动工具、车载BMS、UPS及便携式储能设备的电池健康监测子系统。本文聚焦LTC2990底层驱动实现,涵盖I²C时序约束、寄存器原子读写

weixin_42599558的博客 131

构建高内聚低耦合的通用辅助模块:Spring Boot实战与设计哲学

在软件工程中,辅助模块(Utility Module)是支撑核心业务逻辑的通用基础设施,其设计遵循高内聚、低耦合的核心原则。通过抽象接口与依赖注入,辅助模块实现了对业务逻辑的透明化支持,确保了系统的可扩展性与可维护性。这种设计模式的技术价值在于提升代码复用率、降低技术栈升级成本,并统一团队协作规范。其典型应用场景包括日期处理、数据验证、HTTP客户端封装、缓存操作等通用功能。本文以Spring Boot多模块项目为例,深入探讨了如何构建一套能够灵活适配不同业务链路与技术选型的“辅助每一条路”体系,其中缓存抽

weixin_34185512的博客 322

Informer:比Transformer更有效的长时间序列预测

目录 AAAI 2021最佳论文:比Transformer更有效的长时间序列预测 Background Why attention Methods:the details of Informer Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的

To be a better man 1万+

手机拍照也能玩高光谱?教你用TensorFlow Lite在Android上实现实时RGB转高光谱

本文介绍了如何利用TensorFlow Lite在Android设备上实现实时RGB到高光谱的图像重构技术。通过深度学习模型优化和移动端部署策略,使智能手机具备专业级光谱分析能力,适用于农业检测、化妆品分析等多个领域。

weixin_29091105的博客 245

Amber-Garden:面向模块化演进的语义化命名与依赖治理系统

在微服务与单体仓库(monorepo)持续演进的工程实践中,模块命名不再只是开发习惯,而是影响协作效率、依赖安全与文档可信度的核心契约。语义化命名通过结构化表达业务域、原子能力、成熟度阶段等关键维度,将模糊的人工约定转化为机器可读、人可理解、工具可验证的标准化标识。它支撑自动化依赖分析、权限控制、变更影响评估与文档即代码等高阶实践,尤其适用于中型技术团队向模块化架构升级、开源项目构建清晰API边界等典型场景。Amber-Garden正是这一理念的轻量级落地范式,聚焦‘命名即契约’本质,不替代构建工具,而为整

unixboy 358

稳定双共轭梯度法BiCGSTAB流程

稳定双共轭梯度法BiCGSTAB流程

abner361的博客 1154

OpenClaw:面向Skill的AI应用编排引擎实战指南

AI应用编排是指将大模型调用、API集成、脚本执行等异构能力抽象为可复用、可组合的原子单元,并通过声明式流程进行调度与协同。其核心原理在于解耦‘模型运行’与‘业务逻辑编排’,通过标准化接口(如Function Calling)和DAG工作流实现能力复用与错误隔离。该技术显著提升AI工程化效率,降低从原型到生产的交付门槛,支撑DevOps自动化、智能代码审查、多系统集成等典型场景。本文聚焦OpenClaw这一轻量级编排引擎,深入解析其Skill抽象机制、阿里云+本地混合部署架构及千问Qwen3.5:9b模型的

dechen6073的博客 540

攻克+86手机号Discord验证墙:从“无效”到“成功”的实战指南

本文提供了一份针对+86手机号在Discord注册时频繁遭遇“手机号无效”问题的实战解决指南。文章系统分析了问题根源,并分步详解了从打造纯净网络环境、尝试多种手机号格式(如+86前加0),到更换iOS等客户端设备的有效方法,旨在帮助用户成功完成Discord手机号验证。

mac99的博客 1107

风光储互补微电网在偏远地区的应用实践:从建模到仿真全解析

本文深入解析了风光储互补微电网在偏远地区的应用实践,从系统设计到仿真建模全流程。通过Simulink等工具进行动态仿真,验证了系统在多种工况下的可靠性,并结合实际案例展示了其显著的经济和环保效益。文章为从业者提供了从技术路径到实施优化的全面指导。

weixin_29047545的博客 269
上一篇: 深入分析Volatile的实现原理
下一篇: 可重入的解释
lsrmake
博客等级 码龄18年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值