像这样写,Java菜鸟也能写出牛逼的代码

·  阅读 63

场景一

有时候我们会遇到一个方法就是占满了整个屏幕,其中各种 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这些复杂对象作为参数和结果

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

  • 编写能测试的函数

文章有帮助你,请关注微信公众号:肆意游离 有更多精彩等着你

分类:
后端
标签: