场景一

有时候我们会遇到一个方法就是占满了整个屏幕,其中各种if else 判断 ,for 循环嵌套,时不时来穿插着各种a b c参数,让人看得实在是眼花缭乱。让后面维护的人望而却步,也实在的代码块后面继续增加,增加......当我们看着这样的代码时,庆幸的事不用我来维护,坑爹的事需要自己来改,心中早已一万个草尼玛飘过了。

场景二

当一些新手刚学习接触设计模式的时候,感觉就像看到了武功秘籍。想也没想就直接网上套,各种 工厂模式,策略模式,装饰模式等等,会显得更加臃肿,类过多。本来是简单的功能,会可能就会设计过度。

我们作为刚入门的Java菜鸟该如何避免呢

偶然看到Mark Seemann写的一篇关于The 80/24 rule的博客,有很大的启发。里面提到的80/24规则,说的是我们写的代码块 (每行80个字符以内,不超过24行) 还有更多的细节大家可以点击链接参考参考。在这样的规则约束下,就可以轻松的去掉一些代码的坏味道。

例如:

重复代码

过长的函数方法

过大的类

过长的参数列

等等

用小而美的代码块

小的代码块,小方法、小功能、小程序,用小而美的代码来点缀我们的软件。

如何来实现小而美的代码块有以下几点可以关注

每行字符数:<80

方法体行数:<24

方法依赖(对象或方法):<7

代码块中循环嵌套复杂度:<3

优雅代码示例

public ActionResult Post(ReservationDto dto)
{
var validationMsg = Validator.Validate(dto);
if (validationMsg != "")
return BadRequest(validationMsg);
var reservation = Mapper.Map(dto);
var reservations = Repository.ReadReservations(reservation.Date);
var accepted = maîtreD.CanAccept(reservations, reservation);
if (!accepted)
return StatusCode(
StatusCodes.Status500InternalServerError,
"Couldn't accept.");
var id = Repository.Create(reservation);
return Ok(id);
}

不要出现和业务无关的参数

避免使用Map,Json这些复杂对象作为参数和结果

有明确的输入输出和方法名

编写能测试的函数

傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码!