【问题标题】:How can i write, "if not greater than or equal to some value" eloquently? [closed]我怎样才能雄辩地写“如果不大于或等于某个值”? [关闭]
【发布时间】:2016-04-05 23:27:03
【问题描述】:

我正在阅读,Programming: Principle and Practice Using C++,Bjarne 建议避免过度使用括号。是否有一种雄辩的方式来构建以下 if 语句?这是我的代码:

bool is_valid(string s)
{ 
      if(!(s.size()>=8)) throw invalid_argument("Username must be 8 char or more");
      return true;
}

【问题讨论】:

  • s.size()
  • 哈哈,这很有意义@MitchWheat

标签: c++ c if-statement operators


【解决方案1】:

函数设计不好。它总是返回true,不清楚为什么会抛出异常。

我应该看起来像

bool is_valid( const string &s )
{
    return s.size() >= 8;
}

bool is_valid( const string &s )
{
    const std::string::size_type acceptable_size = 8;
    return s.size() >= acceptable_size;
}

【讨论】:

  • 实际上看起来好多了,从来没有想过这样做,这就是我来这里寻求指导的原因,但在我正在阅读的书中,它说你应该在函数中处理无效输入,如果可以的话.你会建议我如何处理无效的长度?
  • @Kevlwig 无效输入应在另一个可以调用此函数的函数中检查。至于你的第二条评论,我还没有理解。你想问什么?
  • 第 3 行说什么?
  • @Kevlwig 相当于前面实现中的return语句。仅引入了幻数 8 的命名常量。如果字符串的大小大于等于 8,return 语句返回 true,否则返回 false。
  • 我理解命名常量的定义,但我迷失在 std::string::size_type 上。
猜你喜欢
  • 2017-07-23
  • 2015-03-31
  • 2022-11-04
  • 1970-01-01
  • 2017-10-31
  • 2013-02-22
  • 2016-02-27
  • 2021-09-02
  • 1970-01-01
相关资源
最近更新 更多