Это мой первый вопрос, задающий вопрос, поэтому, пожалуйста, поправьте меня, если я что-то сделаю неправильно. Мне просто сложно найти правильный способ назвать функцию. Начну с того, что я работаю над проектом Windows Phone, а языком является C#. У меня есть класс с именем Поездка, которая выглядит следующим образом:Именование и структура функции
public class Ride
{
public Destination {get; set;}
public Arrival {get;set;}
....
public bool IsValid(ErrorLevel level = ErrorLevel.Throw)
{
try{
if(something_is_not_valid)
throw new SomeException("some message that should be displayed");
return true; //if it gets here it means it's valid
}
catch{Exception){
if(level == ErrorLevel.Throw) //if I want to throw the exception
throw;
return false; //return false, because it's not valid
}
}
}
Я хочу найти свое мнение о IsValid функции. Я использую его, как это в моем коде:
public void DoSomethingWithARideOnlyIfItsValid(Ride ride){
try{
ride.IsValid();
//if it gets here, it means
//that the function didn't throw an error
rideManager.DoSomething(ride);
}
catch(Exception ex){
MessageBox.Show(ex.Message);
}
}
Таким образом, функция IsValid может получить параметр Равен, который может быть Throw или Return. В некоторых случаях я просто хочу посмотреть, что возвращает функция, и я отправляю ErrorLevel.Return как параметр, но в большинстве случаев, если проверка не выполняется, я хочу, чтобы она выдала исключение из сообщения, чтобы я мог показать его непосредственно пользователю. Это слишком вонючий ... поэтому я делаю что-то неправильно. Я думал об изменении имени на Validate, но это не делает его лучше. Другим решением было бы использовать свойство IsValid, которое вернет true или false, и функцию Validate(), которая вернет сообщение, если что-то не так, поэтому я могу показать его пользователю. Есть ли у вас другие предложения? Спасибо!
Если это слишком вонючее, откройте окно и проветрите помещение. Что вы подразумеваете под словом «слишком вонючий»? Вы имеете в виду соглашение об именовании? Как насчет "ThrowIfInvalid()"? – elgonzo
Вы слышали о «запахах кода»? Http: //en.wikipedia.org/wiki/Code_smell Это должно быть хорошо, но я также хочу, чтобы в некоторых случаях это исключало исключение. И я говорю не только об имени. Если кто-то хочет использовать эту функцию, они будут смущены параметром перечисления, отправленным функции, и тем, что в некоторых случаях он возвращает true или false, а в некоторых случаях он выдает ошибку. – thewindev
Не знал термин «запах кода». Должен признаться, «запах кода» является хорошим :) – elgonzo