【问题标题】:std::prev_permutation and DRY principlestd::prev_permutation 和 DRY 原理
【发布时间】: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_permutationnext_permutation 碰巧是彼此的复制/粘贴,并且比较相反,那将违反 DRY。但是prev_permutationnext_permutation 可能共享他们将调用转发到的通用实现,在这种情况下,DRY 受到尊重。对于一个库来说,DRY 只对维护者很重要。作为库用户,您的库的实施者是否遵循 DRY 无关紧要。

标签: c++ stl dry


【解决方案1】:

您是否必须为要与这些置换函数一起使用的每个比较函数或仿函数类型编写一个反转版本?

【讨论】:

  • 如果 STL 有一个comparator reversal,那么您就不必这样做了,在这种情况下,OP 可能有道理。
猜你喜欢
  • 1970-01-01
  • 2022-08-24
  • 1970-01-01
  • 2021-12-31
  • 2019-03-03
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多