代码之家  ›  专栏  ›  技术社区  ›  Iraimbilanja

Rect::contains(点)或Point::is_inside(Rect)

  •  4
  • Iraimbilanja  · 技术社区  · 17 年前

    API应该提供Rect::contains(Point)还是Point::is_inside(Rect),或者两者都提供? 或者数学::包含(点,矩形)因为它是对称的?

    4 回复  |  直到 17 年前
        1
  •  8
  •   kmkaplan    17 年前

    Rect::contains(Point) 这是最有意义的,因为它是一个积木。另一个不是真正必要的,因为您希望每个特定形状都实现该操作,而 Point LineSegment

    关于 Circle Rect 使用大多数面向对象的框架更为棘手,并且没有任何明确的答案。其他一些面向对象的风格,如CLOS,通过使用泛型函数和方法来实现,使其成为一个非问题。

        2
  •  1
  •   G S    17 年前

    完全取决于是什么使程序的表达式更干净,更符合您试图解决的问题。因此,在某种程度上,上述所有内容在不同的情况下都应该是好的。

    Rect::contains(Point) Point::Is_inside(Rect) Point 类,因为它将被所有类型的类(如“圆”、“六边形”等)使用,所以它应该是非常基本的,并且只包含最小的接口。

    Math::contains(Rect, Point)

    要记住的一件重要的事情是,不要把课堂的设计看成是石头写的。只要选择最漂亮的设计就行了 现在 . 每当你的需求改变时,你可以 改变它。这就是所谓的 refactoring

        3
  •  0
  •   stevex    17 年前

    Rect::contains最终出错的一个例子是iphonesdk绘制字符串的方法,它基本上是String::drawInRect。

        4
  •  0
  •   SmacL    17 年前

    数学::包含(矩形,点) 结束 Rect::contains(点)