我有一个在Apache Tomcat 9上运行的Java servlet.servlet使用request.getParameter()
来获取发送给它的URL参数。
我在代码中多次使用这些参数来正确处理它们,因为有多个条件。出于这个原因,由于每次输入request.getParameter("paramName")
太长,我在开始时将它们放在变量中,如下所示:
String deviceNum = request.getParameter("deviceNum");
String tempI = request.getParameter("tempI");
String assetNum = request.getParameter("assetNum");
依此类推,使整个代码更短,更容易理解。
但是,这让我想知道这是否是这种情况的最佳做法。毕竟,这些值已经在request
中,因此将它们放在其他变量中在技术上意味着重复它们。
这种情况的最佳做法是什么:使用request.getParameter()
或将参数放在变量中?它会改变阅读速度吗?或者它无关紧要?
答案 0 :(得分:3)
我个人认为使用局部变量更好。你不知道getParameter的实现,所以如果每次调用该方法时都会发生URL编码和其他事情,调用它一次并将结果保存在变量中可以节省时间和资源。
如果参数名称以某种形式缩写,并且您将其传递给更加不言自明的变量(例如tempIndex
而不是tempI
,并且在您的特定示例中,它也更具可读性我身边的一些艺术许可证,含有它的含义;-)。此外,如果您在一行中使用多个这些值,则源会变得更紧凑。而不是
doSomething(request.getParameter("param1"), request.getParameter("param2"), request.getParameter("param3"), request.getParameter("param4"), request.getParameter("param5"));
最有可能产生水平滚动条,你可以写
doSomething(param1, param2, param3, param4, param5);
非常适合大多数源代码编辑器面板而不需要滚动,这使得在编写代码两周之后更容易遵循代码并且您试图弄清楚当时的想法。
答案 1 :(得分:1)
这实际上是最佳实践,因为您可以在没有request.getParamater的情况下每次需要时引用该变量。如果你使用像struts或其他类似的框架,它可以自动将它放入变量。
答案 2 :(得分:1)
你选择了一个很好的方式。如果它们在多个地方使用,则定义命名良好的局部变量。
另外,我建议将请求参数分组到对象中,以便在更抽象的层面上继续使用它们。你不会在整个过程中传递一堆参数。
模式可能如下:
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
RequestObject obj1 = RequestObjectBuilder.of(param1).and(param2).build();
// we are no longer working with raw parameters
...所以将它们放在其他变量中在技术上意味着重复它们。
在找到存储位置后,您正在引用某些数据。这不是副本 - 不要惹恼它。