Какой лучший способ создать класс C #? [Дубликат]

Вы можете загружать изображения, используя составные данные, используйте код ниже:

let manager = Alamofire.SessionManager.default
    do{
        manager.upload(multipartFormData: { (formData) in
            if let fileData = fileData { // File data
                formData.append(fileData, withName: "FILE_NAME", fileName: "simple.jpeg", mimeType: "image/jpeg")
            }
        }, to: "API_PATH", method: HTTPMethod.post, headers: nil, encodingCompletion: { encoding in
            switch encoding{
            case .success(let req, _, _):
                req.uploadProgress(closure: { (prog) in
                    progress?(prog)
                }).responseJSON { (resObj) in
                    switch resObj.result{
                    case .success:
                        if let resData = resObj.data{
                            do {
                                let res = try JSONSerialization.jsonObject(with: resData)
                                print(res) // Success
                            } catch let err{
                                print(err)
                            }
                        }
                        break
                    case .failure(let err):
                        print(err)
                        break
                    }
                }
                break
            case .failure(let err):
                print(err)
                break
            }
        })
    }catch let err{
        print(err)
    }
39
задан Community 23 May 2017 в 12:26
поделиться

9 ответов

Я склонен использовать Microsoft StyleCop, которая имеет порядок набора согласно правилу SA1201:

Причина элемент в рамках файла кода C# не работает относительно других элементов в коде.

Описание правила нарушение этого правила происходит, когда элементы кода в файле не следуют стандартной схеме упорядочивания.

Для исполнения этого правила элементы на корневом уровне файла или в пространстве имен должны быть расположены в следующем порядке:

  • Директивы псевдонима экстерна
  • Использование директив
  • Пространства имен
  • Делегаты
  • Перечисления
  • Интерфейсы
  • Структуры
  • Классы

В классе, структуре или интерфейсе, элементы должны быть расположены в следующем порядке:

  • Поля
  • Конструкторы
  • Финализаторы (Деструкторы)
  • Делегаты
  • События
  • Перечисления
  • Интерфейсы
  • Свойства
  • Индексаторы
  • Методы
  • Структуры
  • Классы

Исполнение стандартной схемы упорядочивания на основе типа элемента может увеличить удобочитаемость и пригодность для обслуживания файла и поощрить повторное использование кода.

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

  1. Добавьте частичный атрибут к классу, если класс не уже неравнодушен.

  2. Добавьте второй частичный класс с тем же именем. Возможно поместить это в тот же файл, чуть ниже исходного класса, или во втором файле.

  3. Переместите интерфейсное наследование и всех участников интерфейсной реализации к второй части класса.

56
ответ дан 27 November 2019 в 02:36
поделиться

Я думаю, что нет никакого лучшего способа. Существует две важных вещи рассмотреть когда дело доходит до расположения. Первой по важности вещью является непротиворечивость. Выберите подход и удостоверьтесь, что вся команда согласовывает и применяет расположение. Во-вторых, если Ваш класс становится достаточно большим, который Вы ищете, где те противные свойства живут (или имеют для реализации регионов для создания их легче найти), затем класс является, вероятно, слишком большим. Рассмотрите сниффинг его и рефакторинг на основе того, чего Вы чувствуете запах.

Для ответа на вопрос формирователя проверьте при членском Расположении Типа в Опции (под узлом C#). Это не просто, но возможно изменить порядок расположения.

9
ответ дан 27 November 2019 в 02:36
поделиться

Я не полагаю, что регионы являются обязательно знаком плохого кода. Но решить, что необходимо будет рассмотреть то, что Вы имеете. Как я заявил здесь, это то, как я regionize мой код.


Перечисления
Объявления
Конструкторы
Методы
Обработчики событий
Свойства

Но главное сохраняет это последовательным и целеустремленным.

2
ответ дан 27 November 2019 в 02:36
поделиться

Я склонен собирать частные данные в группу и склоняться к связанным с глыбой методам/свойствам в функциональных группах.

public class Whatever {
   // private data here
   int _someVal = kSomeConstant;

   // constructor(s)
   public Whatever() { }

#region FabulousTrick  // sometimes regionize it
   // fabulous trick code
   private int SupportMethodOne() { }
   private double SupportMethodTwo() { }
   public void PerformFabulousTrick(Dog spot) {
       int herrings = SupportMethodOne();
       double pieces = SupportMethodTwo();
       // etc
   }
#endregion FabulousTrick
   // etc
}
1
ответ дан 27 November 2019 в 02:36
поделиться

Каждый к их собственному, но я склонен выполнять тот же приказ, который выполняет справка MSDN.

Мне также не нравится вкладывать классы или перечисления, вместо этого создавать отдельные файлы для них, который также делает модульные тесты записи легче (так как легко найти связанный тестовый файл, когда необходимо добавить/устранить/осуществить рефакторинг тест).

По моему скромному мнению, порядок не настолько важен, потому что VS делает очень легким найти всех участников (особенно, если Вы следуете за одним классом/интерфейсом/перечислением на подход файла), и Замок из песка сгруппирует их, если Вы захотите создать документы, таким образом, я был бы более обеспокоен даванием им понятные имена.

0
ответ дан 27 November 2019 в 02:36
поделиться

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

0
ответ дан 27 November 2019 в 02:36
поделиться

Независимо от того, что делает Ваше более продуктивное. Некоторым нравятся частные поля рядом со средствами доступа свойства, некоторым нравятся поля вместе выше конструкторов. Самая большая вещь, которая может помочь, группируется "как", элементы. Мне лично нравится объединять закрытые методы, частные собственности, и т.д.

Испытайте некоторые вещи и снова, независимо от того, что Вы чувствуете, делает Вас более продуктивными и помогает Вам сохранить свой код сохраняемым.

0
ответ дан 27 November 2019 в 02:36
поделиться

Я использую следующее расположение:

методы свойств общественности/защищать методов свойств полей событий globals/class-wide private/internal вложили классы (хотя я стараюсь избегать их каждый раз, когда возможный),

Я также твердо верю в 1 коде "вещи" (класс, интерфейс или перечисление) на файл, с именем файла то же как "вещь" имя. Да, это делает больший проект, но это делает бесконечно легче найти вещи.

0
ответ дан 27 November 2019 в 02:36
поделиться

You can try Regionerate to help with this. I really like it and it's a Scott Hanselman pick.

1
ответ дан 27 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: