2013-07-09 2 views
1

Существует ли стандартный или принятый стиль кода для того, чтобы публичные или частные члены/функции были первыми в классе?Порядок использования общественных/частных лиц/функций?

Я ожидал, что вы найдете много информации об этом Google, но ничего не нашли.

+1

Нет ни одного стиля или рисунка. Это не имеет значения для кода, только для читателей. –

+0

@JohnSaunders Мне это интересно. Я ожидал, что кто-нибудь скажет другому, чтобы вы знали, когда увидите всех людей или всех частных членов/функций. хмм. – Kyle

+1

Почему это имеет значение? Обычно ваша среда IDE поможет вам перемещаться. Я полагаю, это помогло бы, если бы вы разрабатывали с помощью Notepad, emacs или vi. –

ответ

3

Посмотрите на это SO question. Он имеет требования StyleCop Rules Documentation.

Довольно хорошо б/у стандарт.

ASIDE: Существует free plugin для C#. Делает следующие правила намного проще, когда вы знаете, что делаете неправильно. Он расскажет вам, нарушаете ли вы правила и можете ли их запускать во время этапа сборки.

1

Нет, это просто вопрос личных предпочтений. Просто следуйте за своей компанией, если это применимо.

1

Существуют правила, применяемые в отношении StyleCop, которые я видел, как многие люди используют в качестве стандарта.

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

Я думаю, что вещи должны быть сгруппированы по функциональности, а не по типу или доступности, или static и т. Д. Я бы сказал, что схема, организованная по функциональности, требует наименьшего количества навигации при попытке прочитать или поддерживать код база. Любая другая схема заказа (или * правила) оставила бы вас в навигации по всему классу при попытке с ним работать. Концептуальный порядок, который объединяет вещи, которые имеют смысл, минимизирует прыжки. Речь идет о том, чтобы облегчить понимание и работу с ним. Это практическая перспектива, а не формирование правил ради соблюдения правил, которые могут быть соблюдены.

: Они чувствуют, что они являются правилом, они обращаются к OCD среди нас, и они могут быть осуществлены с помощью машины, но кто заботится, если машина может обеспечить их соблюдение? Но код не для машины, это для людей. Когда мне нужно понять код, я не думаю про себя: «Если бы я мог сначала понять все постоянные поля, а затем все поля и т. Д.» Я использую совсем другой подход. Сначала я хочу увидеть большую картину, и одна вещь, которая будет помогать в этом, - это увидеть код , организованный по функциональности.

0

Вот Microsoft C# Coding Conventions (C# Programming Guide)

Это не имеет никакого упоминания о заказе на public, protected или private функций или членов в классе.

Я знаю в своем прошлом опыте, что FxCop «предложил», что я ставил свои публичные функции перед моими частными функциями, но опять же не обязательно был стандартом.

1

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

Например:

class Program { 
    private static int j = 4; 
    private static int i = Program.j; 

    static void Main(string[] args) { 
     Console.WriteLine(Program.i); // 4 
    } 
} 

Но:

class Program { 
    private static int i = Program.j; 
    private static int j = 4; 

    static void Main(string[] args) { 
     Console.WriteLine(Program.i); // 0 
    } 
} 

Так держать этот случай в виду, если вы решите повторно тасует ваших членов вокруг. Чтобы быть полностью безопасным, вы можете поместить инициализации в статический конструктор, например:

class Program { 
    private static int i; 
    private static int j; 

    static Program() { 
     Program.j = 4; 
     Program.i = Program.j; 
    } 
} 
Смежные вопросы