java设计原则

需要开发人员,在写每一行代码时都应在潜意识中确保其正确性,

因为这种代码,在小并发下做功能测试时,会显得很正常,

但在高并发下就会出现莫明其妙的问题,而且场景很难重现,极难排查。

3. 尽早失败和前置断言

尽早失败也应该成为潜意识,在有传入参数和状态变化时,均在入口处全部断言,

一个不合法的值和状态,在第一时间就应报错,而不是等到要用时才报错,

因为等到要用时,可能前面已经修改其它相关状态,而在程序中很少有人去处理回滚逻辑,

这样报错后,其实内部状态可能已经混乱,极易在一个隐蔽分支上引发程序不可恢复。

4. 分离可靠操作和不可靠操作

这里的可靠是狭义的指是否会抛出异常或引起状态不一致,

比如,写入一个线程安全的Map,可以认为是可靠的,

而写入数据库等,可以认为是不可靠的,

开发人员必须在写每一行代码时,都注意它的可靠性与否,

在代码中尽量划分开,并对失败做异常处理,

并为容错,自我保护,自动恢复或切换等补偿逻辑提供清晰的切入点,

保证后续增加的代码不至于放错位置,而导致原先的容错处理陷入混乱。

5. 异常防御,但不忽略异常

这里讲的异常防御,指的是对非必须途径上的代码进行最大限度的容忍,

包括程序上的BUG,比如:获取程序的版本号,会通过扫描Manifest和jar包名称抓取版本号,

这个逻辑是辅助性的,但代码却不少,初步测试也没啥问题,

但应该在整个getVersion()中加上一个全函数的try-catch打印错误日志,并返回基本版本,

因为getVersion()可能存在未知特定场景异常,或被其他的开发人员误修改逻辑(但一般人员不会去掉try-catch),

而如果它抛出异常会导致主流程异常,这是我们不希望看到的,

但这里要控制个度,不要随意try-catch,更不要无声无息的吃掉异常。

6. 缩小可变域和尽量final

如果一个类可以成为不变类(Immutable Class),就优先将它设计成不变类,

不变类有天然的并发共享优势,减少同步或复制,而且可以有效帮忙分析线程安全的范围,

就算是可变类,对于从构造函数传入的引用,在类中持有时,最好将字段final,以免被中途误修改引用,

不要以为这个字段是私有的,这个类的代码都是我自己写的,不会出现对这个字段的重新赋值,

要考虑的一个因素是,这个代码可能被其他人修改,他不知道你的这个弱约定,final就是一个不变契约。

7. 降低修改时的误解性,不埋雷

前面不停的提到代码被其他人修改,这也开发人员要随时紧记的,

这个其他人包括未来的自己,你要总想着这个代码可能会有人去改它,

我应该给修改的人一点什么提示,让他知道我现在的设计意图,

而不要在程序里面加潜规则,或埋一些容易忽视的雷,

比如:你用null表示不可用,size等于0表示黑名单,

这就是一个雷,下一个修改者,包括你自己,都不会记得有这样的约定,

可能后面为了改某个其它BUG,不小心改到了这里,直接引爆故障。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值