Java 编程基础:条件与循环逻辑的健壮性设计手册

作者:袖梨 2026-07-02
写好条件和循环的关键是“不崩、不漏、不歧义”;需预判异常、守住边界、明确意图:校验优先于分支,字符串判空用常量.equals(变量),集合判非空须先判null,数值校验要写全边界。

写好条件和循环,关键不是“能跑通”,而是“不崩、不漏、不歧义”。健壮的逻辑设计,核心是预判异常、守住边界、让意图清晰可见。

条件判断:先校验,再分支

所有外部输入(参数、返回值、配置项)都默认不可信。if 语句前应主动检查 null、空集合、非法数值等常见问题,避免把校验逻辑塞进 else 或深层嵌套里。

  • 字符串判空用 "expected".equals(input),而不是 input.equals("expected"),防止空指针
  • 集合判非空优先用 collection != null && !collection.isEmpty(),而非仅靠 size() > 0(可能 NPE)
  • 数值范围校验写成 if (x >= 0 && x ,比 <code>if (0 (语法错误)或分散在多处更安全

for 循环:索引与长度严格对齐

数组或列表遍历时,越界是最常见隐患。索引必须始终落在 0length - 1(或 size() - 1)之间,且终止条件要直观可读。

  • 标准写法:for (int i = 0; i —— 终止条件直接关联长度,无歧义
  • 避免 i ,虽等价但易因手误写成 <code>i
  • 遍历 List 时,若需修改内容(如 remove),优先用迭代器或倒序 for,不用正序下标删除(会跳过元素)

while 循环:确保条件可变、防死循环

while 的退出依赖条件变化,必须在循环体内有明确的、受控的状态更新;同时要预设兜底机制,防止意外卡死。

立即学习“Java免费学习笔记(深入)”;

  • 每次循环至少有一个变量被修改,且该变量直接影响 while 条件的真假
  • 涉及外部响应(如网络请求、用户输入)时,加入超时计数或最大重试次数
  • 避免用浮点数做精确相等判断作为循环条件(如 while (d != 0.1)),改用误差范围 Math.abs(d - 0.1) > 1e-6

异常与边界:让失败可感知、可处理

健壮性不等于回避异常,而是让异常发生时行为确定、反馈明确、资源不泄漏。

  • catch 后不要空着,至少记录日志或转换为业务可理解的提示
  • 打开文件、数据库连接等资源,务必用 try-with-resources 自动关闭
  • 方法返回集合时,宁可返回空集合(Collections.emptyList()),也不要返回 null

相关文章

精彩推荐