DRY 编程原则
尝试遵循 DRY 原则。
尽最大努力避免重复代码。重复代码是不好的,因为这意味着如果要更改某些逻辑,你需要更改多个地方的内容。
想象一下,如果你经营了一家餐厅并记录了你的库存:所有的西红柿,洋葱,大蒜, 香料等。如果你有多个清单并记录了它,当你上了一道西红柿菜品,这时所有的清单必须被更新。如果你只有一个清单,那么只更新一个地方!
你经常写重复的代码,是因为你有两个或多个略微不同的事情,它们有很多共同之处,但是它们的不同迫使你有两个或多个独立的函数去处理相同的事情。删除重复代码意味着创建一个能够处理这些不同设置的抽象,只需一个函数/模块/类就可以。
正确的抽象至关重要,这就是为什么你应该遵循 Classes 部分中列出的 SOLID 原则。不好的抽象比重复代码还要糟糕,所以要小心! 话虽如此,如果你能做一个好的抽象,那就去做吧!不要重复自己,否则你会发现自己在任何时候想改变一件事时都会更新多个地方。
坏的:
function showDeveloperList(array $developers): void
{
foreach ($developers as $developer) {
$expectedSalary = $developer->calculateExpectedSalary();
$experience = $developer->getExperience();
$githubLink = $developer->getGithubLink();
$data = [$expectedSalary, $experience, $githubLink];
render($data);
}
}
function showManagerList(array $managers): void
{
foreach ($managers as $manager) {
$expectedSalary = $manager->calculateExpectedSalary();
$experience = $manager->getExperience();
$githubLink = $manager->getGithubLink();
$data = [$expectedSalary, $experience, $githubLink];
render($data);
}
}
好的:
function showList(array $employees): void
{
foreach ($employees as $employee) {
$expectedSalary = $employee->calculateExpectedSalary();
$experience = $employee->getExperience();
$githubLink = $employee->getGithubLink();
$data = [$expectedSalary, $experience, $githubLink];
render($data);
}
}
非常好:
It is better to use a compact version of the code.
function showList(array $employees): void
{
foreach ($employees as $employee) {
render([$employee->calculateExpectedSalary(), $employee->getExperience(), $employee->getGithubLink()]);
}
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: