node.js - 如何避免代码异味“参数过多”
问题描述
我需要注册一个新医生,并且有很多参数要传递。在这种情况下如何避免代码气味“参数过多”?不在方法上使用解构!?
interface ICreateDoctor {
name: string;
crm: string;
phone: string;
mobile: string;
address: {
zipCode: number;
street: string;
number: number;
city: string;
state: string
}
}
@injectable()
class CreateDoctorUseCase {
constructor(
@inject('DoctorsRepository')
private doctorsRepository: IDoctorsRepository;
) { }
async execute(data: ICreateDoctor): Promise<Doctor> {
}
}
export { CreateDoctorUseCase };
解决方案
当您将许多参数传递给函数/方法时,“参数过多”的代码气味可能是相关的。
例如,像
func createDoctor(name string, crm string, phone string, mobile, string, zipCode number, street string, number number, city string, state string)
因为当许多接受相同的类型时,很容易混淆参数。
在您的情况下,您已经ICreateDoctor
为创建医生实例所需的一组参数定义了一个接口,这需要在某个时候完成,所以对我来说似乎很好。来电者只需要绕过ICreateDoctor
func createDoctor(doctor ICreateDoctor)
虽然没有必要这样做,但您可以为地址本身定义一个单独的 iface/model,并将其与ICreateDoctor
实例相关联。
推荐阅读
- airbrake - Airbrake 控制面板 - 更改部署标签颜色
- java - 是否可以从 JCuda 将数据发送到定义为 Union 的 GPU 内存?
- c# - 我有一个问题和一个错误。C# CS8180
- java - 每次我点击 Space 时,Libgdx 跳跃和碰撞方法都不起作用
- python - 在 PPT 占位符中适合图片
- php - 会话变量在每次页面重新加载时销毁
- angular - 在Angular 7中使用变量作为参数的ngx-translate
- javascript - 在表单验证中包含数字签名
- python - Glumpy错误'OSError:[WinError 126]找不到指定的模块'
- python - 为什么 Pexpect 代码没有得到我需要的数据?