当前位置: 首页 > 知识库问答 >
问题:

命名空参数

齐修贤
2023-03-14

在代码中我发现:

String age = null;
String place = null;
new Employee(firstParam, secondParam, null, null, age, place);

类雇员不是我们的类,可能从wsdl文件生成,其中参数(年龄和地点)被称为改变platz,所以有人试图命名null参数以知道哪个是哪个,但这是好的做法吗?另一个问题是,年龄地点被翻译,而其他两个参数只是null,但除此之外,创建带有null值的变量只是为了将其传递到构造函数的下一行,可以吗?

共有3个答案

张德佑
2023-03-14

不,这样做不是一个好习惯。无论如何,当您声明一些字段时,如String age,年龄默认为空。相反,我建议查看一些通用的构建器模式(请看@SpaceTrucker的答案),而不是用超过2个参数的构造函数进行实例化。

邢浩邈
2023-03-14

这个模式没有明确的是或否。它确实在一些地区被普遍使用。

它具有明显的优势,它引入了命名,从而使您的代码更易于阅读和维护,这总是好的,并且还减少了错误的可能性。

但是它也有缺点。最大的可能是,对于读者来说,变量的意图可能不是直接清楚的。误以为以后可能会用到它,从而污染了您的变量范围。如果您一直使用这种模式,也可能不太方便。

无需深入细节,还有其他一些解决方案:

    < li >大多数ide都有一个称为参数提示的特性 < li >有些语言,如Kotlin,有命名参数 < li >方法调用的生成器模式将引入显式命名 < li >重新设计方法,不允许可选的空参数(有些人认为可选参数是一种不好的做法) < li >通过重载方法去掉可选参数

除此之外,对于StackOverflow来说,这个问题可能过于基于意见,尤其是因为社区中对这种模式没有强烈的意见。

何玉韵
2023-03-14

根据我的经验,当我已经预先生成了暴露不适合我的需求的契约的类定义时,我倾向于将它们抽象到一个工厂方法后面(可能不是一个完全成熟的构建器,但取决于..)并公开重载的契约,帮助API用户简单地传递实际需要的任何参数。至于将变量命名为null是否被认为是好的实践,我认为这是你的主观选择,而不是一个既定的模式。但是在我看来,简单地传递null比仅仅为了传递方法参数而编写几行代码要干净得多。

 类似资料:
  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章描述了如何在TypeScript里使用命名空间(之前叫做“内部模块”)来组织你的代码

  • Let the word of Christ dwell in you richly in all wisdom; teaching and admonishing one another in psalms and hymns and spiritual songs, singing with grrace in your hearts tto the Lord. And whatsoever

  • 客户端有许多“命名空间”,通常是一些公开的可管理功能。命名空间对应 Elasticsearch 中各种可管理的 endpoint。下面是全部的命名空间: **命名空间** **功能** `indices()` 索引数据统计和显示索引信息 `nodes()` 节点数据统计和显示节点信息 `cluster()` 集群数据统计和显示集群信息 `snapshot()` 对集群和索引进行拍摄快照或恢复数据

  • 命名空间 由于 js 环境极少命名空间管理模块, namespace 相对陌生, 比如有这样的文件结构, src/ demo/ core.cljs 可以看到 core.cljs 的路径就是: src/demo/core.cljs 注意 JVM 环境有个 classpath 的环境变量, 用于判断怎样查找源码, classpath 对应多个路径, 也可能是 jar 包, 而 jar 包中

  • 命名空间,英文名字:namespaces 在研习命名空间以前,请打开在python的交互模式下,输入:import this >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than

  • Swoole提供了完善的进程管理机制,当Worker进程异常退出,如发生PHP的致命错误、被其他程序误杀,或达到max_request次数之后正常退出。主进程会重新拉起新的Worker进程。 Worker进程内可以像普通的apache+php或者php-fpm中写代码。不需要像Node.js那样写异步回调的代码。 主进程内的回调函数: onStart onShutdown onTimer Work