我正在尝试学习设计模式、最佳实践等。有一个特定的问题总是让我感到困惑。 抽象或 KISS 更重要(保持简单和愚蠢)。 假设我需要构造一个包含多个属性的对象。有2种方式:
1)实例化对象并将属性传递给构造函数。
$user = new user($user_detail_array); // one line code is enough
这种方法的好处:
- 代码很小。
- 非常好的抽象。
- 短代码很容易管理。
负面:
- 添加新代码会导致问题,
- 难以遵循 DRY(不要重复自己)。
- 违反单一责任规则
2) 实例化对象并单独设置每个属性。
$user = new user();
$user->setName($name);
$user->setEmail($email);
$user->setGender($gender);
so on....
好处:
- 这很容易理解。
- 容易改变。
- 它看起来更好。
负面:
- 这不是很好的抽象。
- 所有方法都是可见的。
- 长代码要写。试图过度关注 KISS 本身变得很困难。
- 班级之间的交流变得艰难。课程太多,无法交流。这么多公共功能。
- 它就像程序代码。
一般来说,更好的方法是什么?如果视情况而定,第一种方法何时比第二种方法更好?为什么?我发现这两种方法都会引起问题。第一种方法使代码过于抽象。第二种方法使代码太长且难以管理。