Anurag Panda1 Ответов: 3

Как сделать свой код более презентабельным?


using System;
using System.Collections;
using System.Collections.Generic;

class MainClass {
  public static void Main (string[] args) {
    var anurag = new Dictionary<string, string>();
    bool continuing = true;
    
  while(continuing){
    Console.WriteLine("Do you want to add an entry?(Yes/No)");
    string c = Console.ReadLine();
    if(c.ToLower()=="yes"){
      Console.Write("Write Name: ");
      string d = Console.ReadLine();
      Console.Write("Write Value: ");
      string e = Console.ReadLine();
      anurag.Add(d, e);
      Console.WriteLine("Do to want to view the whole list or add another person or remove a person from list?(Add/View/Remove)");
      string f = Console.ReadLine();
      if (f.ToLower()=="view"){
        Console.WriteLine("All the people");   
  
        foreach (KeyValuePair<string, string> person in anurag)  
       {  
        Console.WriteLine("Name: {0}, Value: {1}",  
            person.Key, person.Value);  
       }  

      }else if(f.ToLower()=="add"){
        
        continue;
      }else if(f.ToLower()=="remove"){
        Console.Write("State name(Case sensitive): ");
        string nameRmv = Console.ReadLine();
        anurag.Remove(nameRmv);
        Console.WriteLine("Do you want to view the list?(Yes/No)");
        string view2 = Console.ReadLine();
        if(view2.ToLower() == "yes"){
          foreach (KeyValuePair<string, string> prsn in anurag){
            Console.WriteLine("Name: {0}, Value: {1}",  
            prsn.Key, prsn.Value);
          }
        }else if (view2.ToLower()=="no"){
          continue;
      }   
    }
  }
    else if(c.ToLower() == "no"){
      Console.WriteLine("Alright! I'll keep asking");
      }
    }
  }
}


Что я уже пробовал:

Он работает просто отлично, и как я хотел, чтобы он работал, но мне интересно, если бы вы назвали его "хорошим кодом", вероятно, нет..

3 Ответов

Рейтинг:
28

Sandeep Mewara

Что касается презентации, то я действительно делился советами по этому поводу, и, похоже, вы проигнорировали ее модульность, чтобы сделать вещи читабельными и понятными: Проверьте строку 41 для вопроса..просьба помочь[^]

То, что вы хотите в качестве исполнения, определяется вами и может сохраняться по желанию. Но, чтобы выполнить их проще понять и записать ваши операции View/Add/Remove являются отдельными методами и на основе условий вызываются.

Поскольку вы этого не сделали, вы вынуждены пойти и иметь операцию add по умолчанию с вашим if-else-continue.


Anurag Panda1

Мне всего 16 лет, и я учусь. Ваша помощь очень ценится! Спасибо, я все исправлю.

Gerry Schmitz

Более описательные имена переменных. Например, "имя" вместо"д". Ты потом сама себя поблагодаришь.

Рейтинг:
2

Patrice T

Цитата:
Как сделать свой код более презентабельным?

Не знаю, если это то, что вы ищете, bit a code beautifier улучшит визуальный аспект вашего кода, применяя правила.
Лучшие Просмотра Онлайн C# - Украсить - Минимизировать - Форматирования[^]
Стиль отступа - Википедия[^]

using System;
using System.Collections;
using System.Collections.Generic;

class MainClass {
  public static void Main(string[] args) {
    var anurag = new Dictionary < string,
    string > ();
    bool continuing = true;

    while (continuing) {
      Console.WriteLine("Do you want to add an entry?(Yes/No)");
      string c = Console.ReadLine();
      if (c.ToLower() == "yes") {
        Console.Write("Write Name: ");
        string d = Console.ReadLine();
        Console.Write("Write Value: ");
        string e = Console.ReadLine();
        anurag.Add(d, e);
        Console.WriteLine("Do to want to view the whole list or add another person or remove a person from list?(Add/View/Remove)");
        string f = Console.ReadLine();
        if (f.ToLower() == "view") {
          Console.WriteLine("All the people");

          foreach(KeyValuePair < string, string > person in anurag) {
            Console.WriteLine("Name: {0}, Value: {1}", person.Key, person.Value);
          }

        } else if (f.ToLower() == "add") {

          continue;
        } else if (f.ToLower() == "remove") {
          Console.Write("State name(Case sensitive): ");
          string nameRmv = Console.ReadLine();
          anurag.Remove(nameRmv);
          Console.WriteLine("Do you want to view the list?(Yes/No)");
          string view2 = Console.ReadLine();
          if (view2.ToLower() == "yes") {
            foreach(KeyValuePair < string, string > prsn in anurag) {
              Console.WriteLine("Name: {0}, Value: {1}", prsn.Key, prsn.Value);
            }
          } else if (view2.ToLower() == "no") {
            continue;
          }
        }
      }
      else if (c.ToLower() == "no") {
        Console.WriteLine("Alright! I'll keep asking");
      }
    }
  }
}


Рейтинг:
15

OriginalGriff

0) выберите стиль и придерживайтесь его: когда вы смешиваете и сочетаете свои скобки вот так:

if (f.ToLower()=="view"){
  Console.WriteLine("All the people");

  foreach (KeyValuePair<string, string> person in anurag)
 {
  Console.WriteLine("Name: {0}, Value: {1}",
      person.Key, person.Value);
 }
Это никому не помогает.
1) космические вещи: не сжимайте все это вместе, это труднее читать.
string f = Console.ReadLine();
if (f.ToLower() == "view"){
  ...
}else if (f.ToLower() == "add"){
  ...
}else if (f.ToLower() == "remove"){
  ...
Пробелы действуют как естественный "конец слова" для глаза и облегчают чтение.
2) Не используйте односимвольные имена переменных - используйте имена, описывающие то, что они делают:
string f = Console.ReadLine();
Что такое f для чего? - Не знаю ...

3) Не используйте один и тот же метод в нескольких местах:
string f = Console.ReadLine();
if (f.ToLower()=="view"){
  ...
}else if(f.ToLower()=="add"){
  ...
}else if(f.ToLower()=="remove"){
  ...

Вместо этого позвоните ему один раз:
string f = Console.ReadLine().ToLower();
if (f=="view"){
  ...
}else if(f=="add"){
  ...
}else if(f=="remove"){
  ...


4) Не используйте if ... else if ... else if ... если только у вас нет else в конце концов, чтобы поймать все дела, которые вы пропустили. Сообщайте об ошибках или бросайте их.

5) Не используйте if ... else if ... else if ... вообще, если вы можете этого избежать: оператор switch намного более читабелен:
string f = Console.ReadLine();
switch (f.ToLower()) {
  default:
    .. Report a problem or throw an exception ...
    break;
  case "view":
    ...
    break;
  case "add":
    ...
    break;
  case "remove":
    ...
    break;
  ...


6) модульность кода: монолитные методы могут быть просты в написании, но их нелегко читать или поддерживать. Разбейте этот код на функциональные модули и Закодируйте каждый из них как отдельный метод. Это облегчает написание, чтение, тестирование и обслуживание.


Anurag Panda1

Спасибо! Я над этим поработаю.

OriginalGriff

Всегда пожалуйста!