Java编程优化代码心得 分层设计和设计模式引入 常用技巧的好坏

需求

经常写代码的同学,一个类通篇几千行,一个方法动不动就几百行,那我优化一下,重构一个方法,这个类的行数反而更多。
然后,各种百度谷歌搜索怎么优化代码。

搜索出的结果,通篇都是优化技巧。
没有那种超级烂的代码,优化后的代码。
各位小伙伴,如果有更好的优化方案,说说你的方案。

优化

什么时候优化

优化是可以在写代码时,就开始优化了。
优化带来的好处,个人理解业务可读性提高业务领域细分

优化带来的缺点,有时你引入的技巧,可读性提高了,性能反而下降
有些优化技巧是很多程序员所不知,即便他的职位比你高、工作年限比你高,但他对于一些良好的编程习惯,很多都没有达标。
也就会造成维护难度大,成本高这类说法。

优化的时间节点

如果是别人写的代码,在你没有得到领导和他本人的许可,不要动。
或许是改一个BUG,附带优化代码,一定记住原有逻辑能不动,就别动,也不要引入设计模式。吃力不讨好。可以引入一些简单的优化技巧,记住代码没把握,一定要Junit单元测试。

如果是自己写的代码,不影响本职工作,有空闲时间,觉得自己一年前写的代码,真的差劲,可以选择优化。

优化前提条件

在不影响原逻辑的前提下,改变代码结构,而不是重新写业务逻辑代码。
性能不是第一要求,当然引入多线程可以提升性能,但每次的代码将会非常繁重。
不恰当的设计模式,我们也可以对其结构调整。

记住,设计模式不是固定模式,而是灵活多变,多种设计模式嵌套使用。

我个人最讨厌,一个方法嵌套各种方法,各种类,你点完进去,还有一层,一层又一层。这样的代码,大多数都是框架底层。可是明明我把这段代码抽象出来,它其实完全可以放在一个类里,该死这样的代码,理解起来是真的难。

不过,好处就是水平低的人,接不了你的盘。

聊聊我写过的超级恶心需求

曾经我写过vue,各种组合按钮,不同页面切换相同的按钮。
这些按钮要是每个页面都写一遍,要写吐。
然后,我就搜啊搜啊。找到props可以传数值,子组件和父组件可以修改属性。
用上了策略模式,干!用上后,各种嵌套方法,子方法不断往父方法调用,而且是每个父类文件必须将该方法申明,不然就报错。
至此,每次调试那跟火葬场一样,一层又一层。
哈哈,不过还好我跳槽了,有位小伙伴接盘了!

总结,不要过度使用设计模式,它是一把双刃剑。

什么可读性,什么复用性,都是坑!

看看网上的入手级例子,实战才知道里面的深浅。

战斗时间

超多行数的方法怎么优化

这是我这几周,一直在思考的问题。不管是设计模式,还是优化技巧,都不能满足所有业务代码。

啊啊!!!好烦,怎么办呢。

今天突然就想到灵感,直接创建一个类,将这个超多行的方法,重构到这个类中,而原来的主类只需要调用一下。
而这个超多行的方法,在这个类里面,可以不断用idea自带的重构方法,不断细分业务方法。

你可以参照命令设计模式,上代码:

/**
 * 命令的接收者
 */
public class Receiver {

	private String name;
	
	public void init(String params) {
		name = "123";
		System.out.println("接收者开始行动。。。");
	}
	
	public void handle() {
		System.out.println("接收者开始行动。。。");
		String result = name + "456";
		this.end();
	}

	public void end() {
		System.out.println("接收者开始行动。。。");
	}
}

什么必须创建一个对象,传递参数。不用这么做,很多底层源码都是直接写类里面,某个方法赋值,赋完值直接在该类调用,如果外部想要获取里面的属性,那直接写个get,非常方便。
也不用写一大堆pojo,当然你要注意不要随便加static,这玩意多线程时,可是灾难。
单例模式,看你想不要用,用上让你的代码看起来更健壮。不要和我说,要怎样考虑,我又不是在大厂,想怎么玩就怎么玩。性能可靠性,全靠抄。
照着思路走,你会发现那个超多行的类,分离出业务代码后,整体一下子档次提高了不少。

别人来改你的代码,也得学习一下。

if/else过多怎么办

说实话,用过很多方案优化,什么工厂模式、策略模式、代码技巧、switch优化,都优化过。

讲讲这些优缺点,枚举类里面写方法,set某个属性,写出来的可读性一般,而且多段时间,卧槽,这是我写的代码,有一个处理这些属性的方法,你想要改,难改。

工厂模式小刀根本用不上。超多行数倒是可以用,它的用处是把业务细分。方便后续扩展和改动,点赞好用。
当然,工厂模式和抽象工厂模式看情况而定。

策略模式一个if里面方法没多少,真没必要启用。

大家可以看看我搜集的优化技巧:https://www.yuque.com/siyijianjun/hikktn/ikymgo
超多有用的知识,超多无用的知识。

记住一个点,这些知识一定自己用起来,才知道好不好用。

总结

当然,还有更厉害的写法,就是巧用注解、<T,R>,这一大杀器,用起来才是大佬。基本没人敢动你的代码,哈哈哈。
这些优化实际上还是看个人,我自己对代码有强迫症,要是写如此烂的代码,后辈来接手我的代码,一定会笑话我的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hikktn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值