两个方法参数或一个新的 class.. for (X and Y cords)
Two method arguments or a new class.. for (X and Y cords)
在 Robert C. Martin 的书 'Clean Code' 中,他建议使用:
Circle makeCircle(Point center, double radius);
超过
Circle makeCircle(double x, double y, double radius);
他基本上认为制作 class 以避免使用多个方法参数是首选。
您对此有何看法?请向我解释两者的优点或缺点。
这有几个原因。
首先,它有助于有意义地对参数进行分组。在这个简单的例子中,很明显 x 和 y 在一起,但在处理更晦涩的例子时可能不会那么明显。
也许更重要的是,它减少了太多参数,无法进行有意义的跟踪;一旦你有一个方法接受超过 3 或 4 个参数,跟踪哪个参数是哪个就会变得越来越麻烦。在 class 或结构中将参数绑定在一起有助于避免这种情况。
考虑这个例子:
int HowManyMinutesToAirport(int AirportIdentifier, string AirportName, int PlainIdentifier, string PlainName, int PlaneSpeed, string PlaneCompassDirection);
对比
int HowManyMinutesToAirport(Airport airport, Plane plane);
在 Robert C. Martin 的书 'Clean Code' 中,他建议使用:
Circle makeCircle(Point center, double radius);
超过
Circle makeCircle(double x, double y, double radius);
他基本上认为制作 class 以避免使用多个方法参数是首选。
您对此有何看法?请向我解释两者的优点或缺点。
这有几个原因。
首先,它有助于有意义地对参数进行分组。在这个简单的例子中,很明显 x 和 y 在一起,但在处理更晦涩的例子时可能不会那么明显。
也许更重要的是,它减少了太多参数,无法进行有意义的跟踪;一旦你有一个方法接受超过 3 或 4 个参数,跟踪哪个参数是哪个就会变得越来越麻烦。在 class 或结构中将参数绑定在一起有助于避免这种情况。
考虑这个例子:
int HowManyMinutesToAirport(int AirportIdentifier, string AirportName, int PlainIdentifier, string PlainName, int PlaneSpeed, string PlaneCompassDirection);
对比
int HowManyMinutesToAirport(Airport airport, Plane plane);