当前位置: 首页 > 后端技术 > Java

公司新招了一个Java中级开发人员,4行代码写了3个异常,我真的被说服了,.

时间:2023-04-02 10:33:34 Java

浣滆€咃細lLabrami\閾炬帴锛歨ttps://juejin.cn/post/703144...1.鍓嶈█澶у濂斤紝鎴戞槸llabrami锛屼粖澶╁甫鏉ヤ竴涓湡瀹炵殑妗堜緥锛岃澶у瀵圭┖鎸囬拡鏈夋洿娣卞埢鐨勮璇嗕緥澶栥€傚叕鍙稿垰鍒氳仒璇蜂簡涓€鍚嶄腑绾ava寮€鍙戜汉鍛樸€傜粡杩囦竴鍛ㄧ殑閫傚簲鍜屽涔狅紝鍚勬柟闈㈣〃鐜伴兘涓嶉敊锛屼簬鏄粰鏂颁汉鍒嗛厤浜嗕竴涓皬杩唬銆傝姹傚緢绠€鍗曘€傚皢绗笁鏂规媺鍙栫殑鏁版嵁鍖归厤鍒板叕鍙稿悗鍙拌缃殑娓犻亾鍚庯紝鑱氬悎鎴愬垪琛紝鎵归噺瀛樺偍銆備絾鏄湪鍖归厤閫昏緫涓紝涓婄嚎鍚庢姤浜嗕竴涓狽PE銆傝繖鏄竴涓腑绾у紑鍙戜汉鍛樹笉搴旇鐘殑绠€鍗曢敊璇€傛柊浜鸿鎴戠嫚鐙犺浜嗕竴椤匡紝璁板綍浜嗕竴娆$敓浜т簨鏁呫€?銆佷簨鏁呴噸鐜颁吉浠g爜璇存槑锛氫吉浠g爜涓嶆槸鐪熸鐨勫湪绾夸唬鐮侊紝鑰屾槸涓轰簡鏇存柟渚裤€佹洿褰㈣薄鍦伴噸鐜颁簨鏁呯幇鍦鸿€岀紪鍐欑殑锛涚湡瀹炵殑涓氬姟鍦烘櫙寰€寰€鏇村鏉傦紝NPE婕忔礊闅愯棌鏇存繁锛屼笉瀹规槗娴嬭瘯鍑轰唬鐮佽鍥撅紱鐢熶骇鐜涓殑NPE鏄竴涓瘮杈冨父瑙佺殑寮傚父銆傛垜甯屾湜浣犱笉瑕佹媴蹇冧负浠€涔堟祴璇曟病鏈夋娴嬪埌瀹冦€傚叧閿槸瑕侀€氳繃杩欐牱涓€涓渚嬫潵浜嗚ВNPE鐨勪骇鐢熷師鍥犲拰瑙e喅鏂规硶銆?/鍚庡彴璁剧疆鐨勯€氶亾StringchannelNo=channelDao.getOne().getChannelNo();//绗笁鏂规媺鍙栫殑鏁版嵁ListthirdDataList=httpClientUtils.getThirdDatas(DateUtils.today());//鍖归厤骞惰繃婊hirdDataList銆俿tream().filter(o->channelNo.equals(o.getChannelNo())).collect(Collectors.toList());//鎵归噺瀛樺偍thirdDataDao.saveAll(thirdDataList);鎺ㄨ崘涓€涓紑婧愬厤璐圭殑SpringBoot鏈€鍏ㄦ暀绋嬶細https://github.com/javastacks/spring-boot-best-practice鍒嗘瀽涓庤В鍐虫湁缁忛獙锛屾妧鏈墡瀹炵殑鍚屽搴旇鑳藉湪杩欓噷鎴栧鎴栧皯鐨勫彂鐜伴棶棰樸€傚叾瀹炶繖鍥涙浠g爜閮芥槸浣滆€呯簿蹇冭璁$殑锛屽彲璋撳崸榫欏嚖闆忦煒€馃榾銆傚湪鐭煭鍥涜浠g爜涓紝鎴戝緱鍒颁簡3涓狽PE銆傛垜绱浜?(銊抩銊?/~~鎴戜滑涓€琛屼竴琛屽垎鏋愶細绗竴琛屽垎鏋恈hannelDao.getOne()锛屽鏋滆繑鍥瀗ull锛岄偅涔堣皟鐢╣etChannelNo()灏变細鎶PE銆傛柟妗堜竴銆侀噰鐢ㄩ槻寰℃€х紪绋嬶紝鎻愬墠杩斿洖锛堟牴鎹叿浣撲笟鍔″満鏅€屽畾锛?/濡傛灉channelNo鏄柟娉曢€昏緫鎵ц鐨勫繀瑕佸厓绱狅紝鎺ㄨ崘浣跨敤璇ユ柟娉旵hannelchannel=channelDao.getOne();if(channel==null){return;}2.浣跨敤涓夊厓杩愮畻杩斿洖绌哄瓧绗︿覆("")//杩斿洖鏈€涓嬮潰鐨勭┖瀛楃涓睸tringchannelNo=channelDao.getOne()==null?鈥溾€濓細channelDao.getOne()銆俫etChannelNo();3.浣跨敤Optional鍑芥暟杩斿洖绌哄瓧绗︿覆("")StringchannelNo=Optional.ofNullable(channelDao.getOne()).orElse("");绗笁琛屽垎鏋愶紙1锛夊鏋渢hirdDataList涓簄ull锛屽垯璋冪敤stream()浼氭姤NPE銆傞€氳繃涓嬮潰婧愮爜鎴浘鍙互鐭ラ亾鍘熷洜锛氳В鍐虫柟妗?.浣跨敤闃插尽鎬х紪绋嬶紝鎻愬墠杩斿洖锛堟帹鑽愶級//鎺ㄨ崘浣跨敤閲囬泦宸ュ叿绫诲垽鏂负绌篿f(CollectionUtils.isEmpty(thirdDataList)){return;}2.浣跨敤if鏉′欢璇彞鎹㈣锛堜笉鎺ㄨ崘锛塱f(CollectionUtils.isNotEmpty(thirdDataList)){//鎵ц涓嬮潰鐨勯€昏緫}绗笁琛屽垎鏋愶紙2锛夊鏋渃hannelNo杩斿洖null锛屽垯鎵цchannelNo.equals(o.getChannelNo())灏嗘姤鍛奛PE銆傛垜浠煡閬擄紝鏍规嵁Java瑙勮寖String鐨別quals()鏂规硶璋冪敤锛岃姹傚乏杈规槸涓€瀹氱殑鍊硷紝鍙槸涓轰簡閬垮厤璋冪敤鑰呬负null鐨勬儏鍐点€備絾鏄痗aller鍜宔quals鐨勮緭鍏ュ弬鏁伴兘鏄彉閲忋€傚湪杩欑鎯呭喌涓嬫垜璇ユ€庝箞鍔烇紵1.鍐嶆坊鍔犱竴涓垽鏂細channelNo!=null&&channelNo.equals(o.getChannelNo())2.鍏跺疄鍙互浣跨敤objects绫讳笅鐨別quals鏂规硶Objects.equals(channelNo,o.getChannelNo())java.uti鍖呯湅婧愮爜涓€鐩簡鐒讹紝姝ゆ柟娉曞宸﹁竟瀵硅薄杩涜闈炵┖鍒ゆ柇3.浣跨敤鍏朵粬寮€婧愬伐鍏峰簱鎴栬嚜宸卞疄鐜板锛歰rg.apache.commons.lang3.StringUtilscn銆俬utool.core.util.StrUtil;鏈€鍚庡湪杩欓噷lLabrami缁欏ぇ瀹舵帹鑽愪竴娆綢DEA鎻掍欢锛歋onarLint鍙互鍔ㄦ€佸府浣犳帓鏌ヤ唬鐮佹紡娲烇紝瀵逛簬NPE绛変唬鐮侀闄╀細缁欏嚭鐩稿簲鐨勬彁绀恒€係onarLint杩樻湁涓€涓憲鍚嶇殑鏈嶅姟鍣紝鍙仛SonarQube銆傝繎鏈熺儹鐐规枃绔犳帹鑽愶細1.1000+Java闈㈣瘯棰樺強绛旀锛?022鏈€鏂扮増锛?.鍘夊浜嗭紒Java鍗忕▼鏉ヤ簡銆?.3.SpringBoot2.x鏁欑▼锛屽お鍏ㄩ潰浜嗭紒4.涓嶈鐢ㄧ垎鐮寸垎婊$敾闈紝璇曡瘯瑁呴グ鑰呮ā寮忥紝杩欐墠鏄紭闆呯殑鏂瑰紡锛侊紒5.銆奐ava寮€鍙戞墜鍐岋紙宓╁北鐗堬級銆嬫渶鏂板彂甯冿紝璧跺揩涓嬭浇鍚э紒鎰熻涓嶉敊锛屽埆蹇樹簡鐐硅禐+杞彂锛?/p>