【发布时间】:2022-10-23 11:25:19
【问题描述】:
std::string s="abc";
std::prev_permutation(std::begin(s), std::end(s), std::greater<char>());
给出相同的结果
std::string s="abc";
std::next_permutation(std::begin(s), std::end(s), std::less<char>());
为什么std::prev_permutation 出现在 STL 中?它不会违反 DRY 原则吗?
【问题讨论】:
-
DRY 并不是关于功能彼此冗余的问题。 DRY 是关于不要多次写同一件事。如果
prev_permutation和next_permutation碰巧是彼此的复制/粘贴,并且比较相反,那将违反 DRY。但是prev_permutation和next_permutation可能共享他们将调用转发到的通用实现,在这种情况下,DRY 受到尊重。对于一个库来说,DRY 只对维护者很重要。作为库用户,您的库的实施者是否遵循 DRY 无关紧要。