gpt4 book ai didi

c++ - 在 C++ 中编写函数

转载 作者:行者123 更新时间:2023-11-28 01:04:13 26 4
gpt4 key购买 nike

编辑:有时我们的问题不在于代码,而在于我们判断是非的方式。我正在通过一个例子来写我的问题,因为它有助于解释它。简而言之,问题是“我们的函数是否应该自己处理每个异常。通过我展示的示例,它有时会变得困惑,更像是在各处编写相同的代码。

当我们用 C 编写代码时,它是一种流动的过程语言。因此,我们会在情况出现时进行处理。例如,给定 (a,b,c) 以找出它是哪种三角形类型(NOT_POSSIBLE、等边、等腰、标量)。我们输入这些并继续检查先等边然后等腰然后标量等。

在 C++ 中,我们创建函数来检查这些条件(因此 isEuilateral()isScalar() 是检查它的两个函数)。

问题是:现在 isScalar() 函数“应该”检查它是否是等边的,然后检查它自己的条件,或者只是它的条件。

是不是让isScalar()函数头疼的是判断是不是等边三角形,即:

if(isEquilateral()) 
return false;
else if(a==b)
return true;
else if (b==c)
return true;
...

或者从自身开始:

if(a==b) return true; // not checking equilateral
....

或者它应该只做它的工作并提供功能。程序员有责任在 object.isScalar() 之前检查 object.isEquilateral()

所以我开发了这个类 api Triangle 并将其发送给您。你只知道像 isEquilateral() 和 isIsosceles() 这样的函数名称......所以你被分配的工作是制作一个应用程序,输入三角形 a、b、c 的 3 个边,并告诉这是什么类型的三角形。 .. 好的.. 输入是 3,3,3,然后您的程序应该在等腰条件之前检查等边条件,并且在调用 isEquilateral() 之前调用 isIsoceles() 对于此输出是不安全的。 . isIsoceles () 现在不是一个独立的函数。不完整或者它不是一个错误。怎么办?

好吧,实际上这是一个例子,并没有包含我所有的困惑。

所以问题是每个函数是否应该显式处理每个异常。那不会是代码的冗余和重复。

请注意,我们不能创建一个检查所有异常的函数,因为这里的一些异常在其他地方不会是异常。

最佳答案

我会使用的更简单的方法是 classifyTriangle 函数,它返回三角形类型的 enum。然后,任何后续代码都可以根据三角形类型来引用返回值。

或者,我认为每个函数都应该专注于检查自己的条件,而不考虑其他三角形类型。

编辑:既然我已经重新阅读了这个问题,我相信您是在询问优先级。意思是,三角形可以是等边三角形和等腰三角形,但您希望它仅被归类为等边三角形。如果您对每种类型都有验证功能,那么您希望用户使用您预定的调用顺序。这可以通过使用 classifyTrianlge 函数来解决,您可以在其中决定所需的顺序。

关于c++ - 在 C++ 中编写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com