java字符串太长怎么解决_什么样的 Java 代码是好代码?

关于什么是好代码,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等。也有所谓设计6原则—SOLID:

即Single Responsibility (单一职责),Open Close(开闭),Liskov Substitution(里氏替换),Interface Segregation(接口隔离),Dependency Inversion(依赖反转)等。

不喜欢这些抽象名词,我们搞点简单明了的。一匹跑得快(运行速度快),少生病(健壮),可以驮载各类货物(可扩展),容易辨识(容易看懂),病好治(bug好发现),高大英俊的千里汗血马是也。

6b0bd8a4713d2c23d1fd1f3e77aa7450.png

什么是好代码,不好定义,但一般包含下面几种情况的代码都不算好代码:

代码重复

    整个项目中,存在大量的重复代码。

函数太长

如果太长(一般不宜超过200行,但不绝对),你自己都不太容易读懂,请不要犹豫,拆成小函数吧。笔者刚毕业,参与一个大型复杂的金融软件,核心业务类,函数1000行算小case,5000多行的不在少数,我的内心是哇凉哇凉的,还好大致逻辑比较清晰

类太大

一般不宜操过1000行,同样不绝对,jdk源码过千行的不少嘛。还是那个大型复杂的金融软件,核心的几个Algo C++文件,2万到3万行,我的心在滴血

数据泥团

即很多地方有相同的三四项,两个类中有相同的字段、许多函数签名中有相同的参数。把这些应该捆绑在一起的数据项,弄到一个新的类里吧。这样,函数参数列表会变短不少

函数参数列表太长

工作中有7个参数的函数调用,搞清楚每个参数的业务含意,和顺序有点头晕。尽管可能有默认函数参数,不小心的时候确实范过错误,后面直接引入一个线上bug,紧张

变量名、函数名称、类名、接口等命名含义不清晰

03c00d9c2ad47ee0fdd656bd2dfb2b61.png

苦命的天朝程序员,还要把中文翻译为英文,我也很头大鸭。函数名能让人望名知义,看名字就知道函数的功能是啥,以至于几乎不需要多少comments最好

通常DAO层函数的命令规范是:操作+对象+通过+啥,如:updateUserById, insertQuarter,delteteUserByName

太多的if else

    嵌套最好不要超过 3 层。

在循环里定义大量耗资源的变量

大对象,如果可以放在循环外,被共享,推荐这么搞

try 块代码太长

try块只包住真的可能发生异常的语句,最小原则,同样因为try包起来的代码要有额外开销

不用的资源未及时清理掉,流及时关闭

如IO句柄,数据库连接,网络连接等。不清理掉,后果很严重,你若不信,软件就死给你看

看看下面这个作死的代码,都上热搜了。

fbed9727d9a0f88afde94610705409ee.png

循环里字符串的拼接不要用“+”

有改过一个OutOfMemery的bug,字符串拼接用”+“,产生了一百多万的字符串变量。用Visual VM看程序占用内存空间比较多,数量最大的,通常都是String,所以用StringBuilder的append吧。

用Java VisualVM截取的一个dump,如下图:

b337ace31f8c178ac1d0d70c6bfce141.png

那么,除了这些,究竟什么样的代码才算好代码。阿里巴巴 Java 开发手册中有详细的说明,并且列举了很多例子。比我总结的好多了,推荐大家平时多阅读阅读。

最后,如果你还没看过阿里巴巴的Java开发手册,那么赶紧看起来吧。如果你没有这个文档,建议加我的微信号“xttblog”,我发给你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值