首页 > 解决方案 > 如何避免代码异味“参数过多”

问题描述

我需要注册一个新医生,并且有很多参数要传递。在这种情况下如何避免代码气味“参数过多”?不在方法上使用解构!?

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 };

标签: node.jstypescript

解决方案


当您将许多参数传递给函数/方法时,“参数过多”的代码气味可能是相关的。

例如,像

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实例相关联。


推荐阅读