场景一
有时候我们会遇到一个方法就是占满了整个屏幕,其中各种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这些复杂对象作为参数和结果
有明确的输入输出和方法名
编写能测试的函数
傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码!