Когда я занимаюсь разработкой, я обычно стараюсь следовать принципам SOLID. Обычно у вас есть интерфейс, который реализуется всеми затронутыми классами, а затем использовать интерфейс в качестве параметра при дальнейших вычислениях.Clean Code: SRP и Open/Closed при получении данных из веб-сервисов
Мой вопрос: как это можно достичь при вызове, например, веб-службы? Нижеприведенный ниже код не очень тощий и НЕ действительно соответствует шаблону единой ответственности и принципу «открытый/закрытый».
Как бы вы изменить дизайн следующий код, чтобы следовать SRP и O/C:.
public class Fetch
{
public void Run()
{
var url = "https://api.nasa.gov/planetary/apod?api_key=NNKOjkoul8n1CH18TWA9gwngW1s1SmjESPjNoUFo";
var client = new HttpClient();
var response = client.GetAsync(url).Result;
var data = response.Content.ReadAsStringAsync().Result;
var parsedData = JsonConvert.DeserializeObject<Nasa>(data);
if(parsedData.media_type.Equals("image"))
{
CreateImage(parsedData);
}
if (parsedData.media_type.Equals("video"))
{
CreateVideo(parsedData);
}
if (parsedData.media_type.Equals("text"))
{
CreateText(parsedData);
}
}
}
public class Nasa
{
public string copyright { get; set; }
public string date { get; set; }
public string explanation { get; set; }
public string hdurl { get; set; }
public string media_type { get; set; }
public string service_version { get; set; }
public string title { get; set; }
public string url { get; set; }
}
(Ключ Api взят из примера сайта НАСА, так что не беспокойтесь о подвергая его Асинхронный часть используя .Result
только для этого примера)
Это было бы лучше на codereview –
Это не код, который мы используем. Это всего лишь общая проблема/дискуссия вокруг «Чистого кода» и веб-служб. – Hypnobrew
Вопрос по-прежнему относится ко многим (программистам на толчок) - вы опубликовали код функционирования и спрашиваете, как улучшить его с точки зрения стандартов. Независимо от того, действительно ли вы используете код, это не имеет большого значения. –