css渐变色_变色龙功能

css渐变色

css渐变色

在《神秘博士》中,卡梅利恩(Kamelion)角色是一个可以采取任何形式的机器人。 据称,他们使用的物理道具非常麻烦,只有其创建者才能理解,而该创建者并没有帮助纠正它。

因此,Chamelion功能...

考虑以下代码:

public List<Document> getAllDocuments(Request request, int userId, String field) {
   Query q = createQueryFrom(request);

   switch (field) {

      case "title" :

          q.addCriteria(Criteria.where( "title" ).is(request.getTitle());

          break ; 
      case "name" :

          q.addCriteria(Criteria.where( "name" ).is(request.getName());

          break ;
 
      default :

          throw new IllegalArgumentException( "Bad field: " + field);

   }

   return q;
 }

上面有很多事情。 让我们来了解它。 出现了某种请求,我们可以从中进行基本查询。 然后,根据调用方提供的字段,我们使用该字段向查询中添加条件,并将操作数从请求中拉出。

最重要的是,如果调用者提供了一个我们不知道如何查询的字段,我们就必须抛出一个错误。

此功能有什么问题?

我会告诉你怎么了...

这不是功能。 这是两个功能。 另请参阅两种音乐

调用代码可能如下所示:

 // one call site
 getAllDocuments(request, id, "title" );
 // another
 getAllDocumetns(request, id, "name" );

我们使用字符串选择来控制单个函数的一半流。

更糟糕的是……当某些调用者发明一个我们从未听说过的字符串时,我们需要抛出一个异常。

让我们再重构一下:

 public List<Document> getAllDocumentsByTitle(Request request, int userId) {

   Query q = createQueryFrom(request);

   q.addCriteria(Criteria.where( "title" ).is(request.getTitle());

   return q;
 }
 public List<Document> getAllDocumentsByName(Request request, int userId) {

   Query q = createQueryFrom(request);

   q.addCriteria(Criteria.where( "name" ).is(request.getName());

   return q;
 }

通过将其分为两个功能,它可以自我记录,易于遵循并且不需要处理流氓字符串。 它可能会更快一些,但这并不是真正的主要驱动力。

但是重复呢?

我怀疑变色龙功能的驱动程序是减少代码重复的错误尝试。 请注意,以上示例提供了在两个函数( createQueryFrom)中重用的代码示例,但每个函数中都有独立的逻辑。 它不是重复的代码。

我从中提取的示例最初可能有多行代码,现在我们看到createQueryFrom可能引起了对重复的恐惧,这反过来又造成了怪物。 坚持不懈地进行重构以减少正确的重复,这样的事情就不会发生。

翻译自: https://www.javacodegeeks.com/2019/08/chameleon-function.html

css渐变色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值