【问题标题】:Java method complexityJava 方法复杂度
【发布时间】:2020-12-24 03:29:45
【问题描述】:

最近我开始编写 Allegro(电子商务商店)的 rest-api 的 java 库,以便在进一步的项目中使用它。

我遇到过一些事情,比如通过参数获取报价,从复杂性的角度来看,对我来说是相当困难的。

基本上,人们可以使用multiple 查询参数来查找该服务中的优惠。

有没有可能制作一个可以接受 x 个参数的通用方法(我不是在谈论 String...等),并在不指定哪个参数是哪个参数的情况下处理它们?

例子:

Seller.Id(作为唯一参数),或 Seller.ID 和 limit 会弄乱参数顺序。

我想提一下,我正在考虑制作多个方法,但该方法需要使用另一个参数,但是采用 12 个不同的参数以及它们的组合会造成很多混乱。

另外,如果任何术语不正确(外语),我想道歉。

【问题讨论】:

  • 您是否考虑过使用某种ListMap
  • public Offers getOffers(QueryParameters queryParameters) 其中QueryParameters 有一些builder 允许可空字段。调用者看起来像shop.getOffers(QueryParameters.builder().phrase("foo").searchMode(SearchMode.Regular).build());

标签: java arrays rest methods arguments


【解决方案1】:

您可以通过将参数分组到单独的对象中来降低这种复杂性。例如,您可以分组

  1. seller.id、seller.login 到 SellerInfo 对象
  2. SearchInfo 对象中的类别、短语、搜索模式、偏移量和限制

使用对象作为参数即使在将来也会有所帮助,如果您需要添加/删除参数,则无需更改方法定义,而是更改对象内部的属性。

使用 Hashmap 是另一种选择。但是,这将增加管理键/值对的开销。如果您不想创建第一个选项中建议的其他自定义对象,这是一个不错的选择。

【讨论】:

  • 谢谢,这对我很有帮助。有趣的是,由于嵌套的 json,这个项目主要是在对象上创建的。
  • 很高兴它有帮助 :) 编码愉快
【解决方案2】:

尝试使用此参数作为属性创建一个类 (DTO)。仅将此类作为您的方法(POST 或 PUT)的参数。对于 GET 或 DELETE,仅使用 ID 号...

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 2018-09-14
    • 1970-01-01
    • 2015-05-31
    • 2022-10-08
    • 1970-01-01
    • 2015-09-06
    • 2013-04-17
    • 2023-03-06
    相关资源
    最近更新 更多