原文出处:https://dzone.com/articles/dry-dont-repeat-yourself
我们之前就发过一篇相关的文章:https://www.cnblogs.com/powertoolsteam/p/12758496.html 其中也提到了包括DRY在内的一些软件开发的原则。
DRY 是软件开发的原则之一,其目的主要是为了避免代码重复,指导开发者尽量以抽象的思维去解决重复,基本上是,当您发现自己一遍又一遍地编写相同的代码时,可能会有更好的方法。
实际案例让我们先看一个例子,看看这个例子是否可以改进,以及如何通过重构来避免代码重复。
这里有一个简单的Report类,该类接收一些数据并通过控制台以格式化的方式直接输出。
我们这里使用php的一个代码片段来举例,相信大家对代码的结构和想要完成的工作都不难理解,所以为了大家更容易理解,我只对一些下面用到的php函数定义做一个解释:
echo() 函数输出一个或多个字符串
ucwords()函数把字符串中每个单词的首字符转换为大写。
strtolower() 函数把字符串转换为小写。
file_put_contents() 函数把一个字符串写入文件中。
floor() 函数向下舍入为最接近的整数。
class Report { public function show(array $data) { echo "Report: " . ucwords(strtolower($data["name"])) . "\n"; echo "Product: " . ucwords(strtolower($data["product"])) . "\n"; echo "Start date: " . date("Y/m/d", $data["startDate"]) . "\n"; echo "End date: " . date("Y/m/d", $data["endDate"]) . "\n"; echo "Total: " . $data["total"] . "\n"; echo "Average x day: " . floor($data["total"] / 365) . "\n"; echo "Average x week: " . floor($data["total"] / 52) . "\n"; } }