写好条件和循环的关键是“不崩、不漏、不歧义”;需预判异常、守住边界、明确意图:校验优先于分支,字符串判空用常量.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 (语法错误)或分散在多处更安全
数组或列表遍历时,越界是最常见隐患。索引必须始终落在 0 到 length - 1(或 size() - 1)之间,且终止条件要直观可读。
for (int i = 0; i —— 终止条件直接关联长度,无歧义
i ,虽等价但易因手误写成 <code>i
while 的退出依赖条件变化,必须在循环体内有明确的、受控的状态更新;同时要预设兜底机制,防止意外卡死。
立即学习“Java免费学习笔记(深入)”;
while (d != 0.1)),改用误差范围 Math.abs(d - 0.1) > 1e-6
健壮性不等于回避异常,而是让异常发生时行为确定、反馈明确、资源不泄漏。
Collections.emptyList()),也不要返回 null