Запись функций в С++

114
8

EDIT: Иногда случается так, что наша проблема не в коде, а в нашем способе судить о том, что правильно и что неправильно. Я пишу свою проблему на примере, поскольку это поможет объяснить это. Проблема заключается в том, что "если наша функция обрабатывает каждое исключение сама по себе. В этом примере я показывал, что иногда он становится запутанным и более похож на то, что записывает один и тот же код во всем мире.

Когда мы пишем код в C своим видом плавного процедурного языка. Поэтому мы справляемся с ситуациями, когда они приходят. Например, учитывая (a, b, c), чтобы найти, какой тип треугольника он (NOT_POSSIBLE, Equilateral, Isosceles, Scalar). Мы вводим их и продолжаем проверять сначала равносторонние, потом равнобедренные, а затем скалярные и т.д.

В 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.isEquilateral() перед object.isScalar().

поэтому я разработал этот класс api Triangle и отправил его вам. U знаю только имя функции, как isEquilateral() и isIsosceles(), как... поэтому вам назначено задание для создания приложения, которое вводит 3sides треугольника a, b, c и сообщает, что это за треугольник. .. ok.. input 3,3,3, ваша программа тогда должна проверять состояние равностороннего состояния до состояния изосекуляции, а вызов isIsoceles() без вызова isEquilateral() не является безопасным для этого вывода. , isIsoceles() теперь не является независимой функцией. NOt завершен или это не ошибка. что делать?

Ну, на самом деле это пример, который не содержит всю мою путаницу.

Поэтому вопрос заключается в том, что каждая функция обрабатывает каждое исключение явно. Разве это не будет избыточность и дублирование кода.

Обратите внимание, что мы не можем сделать функцию для проверки всех исключений, потому что некоторые исключения здесь не будут исключениями в каком-либо другом месте.

спросил(а) 2021-01-19T19:32:59+03:00 2 месяца, 3 недели назад
1
Решение
86

Более простой подход, который я бы использовал, - это функция classifyTriangle, которая возвращает enum типов треугольников. Затем любой последующий код может просто обратиться к возвращаемому значению, чтобы действовать в соответствии с типом треугольника.

В качестве альтернативы, я считаю, что каждая функция должна сосредоточиться на проверке своего собственного состояния, независимо от других типов треугольников.

Изменить: теперь, когда я перечитал вопрос, я считаю, что вы спрашиваете о приоритете. Смысл, треугольник может быть равносторонним и равнобедренным, но вы хотите, чтобы он был классифицирован как равносторонний. Если у вас есть функция проверки для каждого типа, вы хотите, чтобы пользователь использовал ваш предопределенный порядок вызова. Это разрешается с помощью функции classifyTrianlge, где вы можете принять решение о заказе.

ответил(а) 2021-01-19T19:32:59+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема