gpt4 book ai didi

language-agnostic - 当一个方法有太多参数时?

转载 作者:行者123 更新时间:2023-12-03 01:34:15 27 4
gpt4 key购买 nike

今天在调试一些 Web 服务客户端代码时(使用 Java,使用 jax-ws),我遇到了一个包含 97 个参数的 Web 服务方法!

我必须创建一个调用此方法的测试用例,并且我注意到了几件事:

  • 代码辅助/悬停功能无法很好地扩展。我使用的是 Eclipse,该方法上的工具提示与屏幕一样宽,并且跨越了几行。
  • 我必须从以前的 xml 捕获中复制参数值,并且几乎不可能记住“我在哪里” - 当我将光标定位在逗号之后并在输入某些值之前,我经常会得到错误的数据类型- 我输入了整数而不是字符串,反之亦然。
  • 即使我写了所有参数,我仍然有一些错误,签名不匹配。不幸的是,Eclipse 将整行标记为红色,因为有错误,因此查找错误位置需要更多时间:(

所以这让我思考,你认为一个方法的参数的最大合理数量是多少?如果您可以更改此 Web 服务签名,您认为可以如何改进它?

最佳答案

没有明确的限制,但我对超过 3-4 个参数感到不舒服。鲍勃·马丁叔叔的事情Clean Code建议最多 3 个。

有一些重构可以减少方法参数的数量(有关详细信息,请参阅 Michael Feathers 的 Working Effectively with Legacy Code)。我想到了这些:

  • 将许多相关参数封装到单个对象中(例如,传递包含这些字段的 String surName, String firstName, String streetAddress, String phoneNumber 对象,而不是 Person )
  • 在调用此方法之前在构造函数或其他方法调用中传递参数

关于language-agnostic - 当一个方法有太多参数时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2244860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com