您现在的位置是:时尚 >>正文
getinteger方法
时尚44999人已围观
简介 getinteger方法 凌晨三点,我盯着控制台上那个跳动的红色异常——NullPointerException。这已经是本周第三次了,原因都一样:用户提交表单时,某个数字字段传了个空字符串。后端代 ...
getinteger方法
凌晨三点,我盯着控制台上那个跳动的红色异常——NullPointerException。这已经是本周第三次了,原因都一样:用户提交表单时,某个数字字段传了个空字符串。后端代码里躺着个老掉牙的Integer.parseInt(request.getParameter("age")),一旦遇到空值,直接炸穿。
后来我翻遍项目里所有工具类,发现每个程序员都自己写过一个“安全”的整数解析方法。有人叫getInt,有人叫parseIntSafely,还有人干脆在try-catch里塞了个默认值0。五花八门,但没一个能统一处理“空字符串”“null”“非法字符”这三种情况。那个周末,我花了四个小时写了个getInteger方法,从此再没为这事加过班。
方法本身不复杂。先判空,再trim,然后正则过滤,最后才parseInt。但真正让我得意的是默认值的设计——不是固定返回0,而是允许调用者传入一个fallback。比如从配置文件读端口号,读不到就返回8080;从请求参数读年龄,非法就返回-1让上层校验。这比硬编码0灵活得多。
有个同事问我:“你写这么多if-else,不如直接用Apache Commons的NumberUtils.toInt,一行搞定。”他说的没错,但那是另一个问题:依赖库版本升级时,万一方法签名变了呢?万一团队里有人不知道这个库存在,又自己写了个重复的?我见过太多项目,因为“方便”引入了一堆工具类,结果代码里同时存在三种parseInt风格。
更关键的是,getInteger这个名字本身就在传达一种约定。它暗示“拿到整数,且拿不到时有个兜底”。新人看到方法名,不用翻实现就知道怎么用。后来我在团队规范里加了一条:所有外部输入的整数解析,一律走这个方法。三个月后,线上因为数字格式导致的异常减少了九成。
当然,这方法也有短板。比如它无法区分“用户没填”和“用户填了非法值”——两者都返回同一个默认值。如果业务需要区分,就得改签名,返回一个Optional
写这段代码最大的收获不是技术本身,而是意识到:很多所谓“低级”的工具方法,恰恰是系统稳定性的基石。与其每次遇到异常就临时打补丁,不如花点时间沉淀一个公共方法,把边界情况一次性处理干净。代码这东西,偷懒一时爽,填坑火葬场。
现在每当我看到新项目里有人又写了个try { return Integer.parseInt(x); } catch (Exception e) { return 0; },我就想笑。不是笑他菜,是笑我自己当年也这么干过。直到被线上告警打脸,才学会把“防御”写进方法名里。
Tags:
上一篇:网络网站
相关文章
c语言测试工具
时尚写C代码的人,十有八九都经历过这样的夜晚:指针越界,段错误,gdb里backtrace一长串,看得人头皮发麻。更气人的是,代码逻辑明明“看起来”没问题,可一跑就崩。这时候你才意识到,光靠编译器那点警告 ...
【时尚】
阅读更多小兵浏览某网站首页时
时尚小兵把鼠标往桌垫边缘一推,光标正好停在“登录”按钮上。他没点。首页弹出来的那瞬间,他就觉得不对劲——满屏的“热门推荐”里,第三条是个卖减肥茶的,配图里那女的胳膊细得像两根筷子,底下评论清一色“已下单, ...
【时尚】
阅读更多极客时间官网企业版
时尚极客时间企业版上线那会儿,我正带一个二十人的后端团队。CTO甩过来一个链接,说“试试这个,看能不能把咱们那堆买完没人看的课管起来”。之前我们买过某平台的年度会员,结果后台数据惨不忍睹——开通率92%, ...
【时尚】
阅读更多