2010-08-04 4 views
2

Прежде всего, я не хочу начинать войну в стиле кодирования, поэтому, пожалуйста, ответьте только, если вы отвечаете на вопрос.C# Стиль кодирования - Поля

Я столкнулся с несколькими людьми, которые положили свои поля на вершину класса. Может ли кто-нибудь, кто это объясняет, объясняет обоснование этого?

Большое спасибо

+0

Что вы предпочитаете? – Paddy

+1

Я рассматриваю поля (которые обычно являются частными) как наименее важные члены класса, поэтому уберите их, поставив их на самое дно. Причина этого в том, что, как только они созданы, я, как правило, никогда не трогаю их снова. Если я редактирую класс, то это будет либо конструктор, метод или свойство (если это не авто-свойство), а, на мой взгляд, наличие полей в верхней части класса - это боль, потому что это означает, что вам нужно прокрутить вниз, чтобы добраться до всех остальных участников. – stevenbey

ответ

1

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

8

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

Я также типично группирую другие члены по типу, а также имею внутреннюю сортировку по модификатору доступа.

public class MyClass 
{ 
    // Fields 

    // Constructors 

    // Properties 

    // Methods 
} 
+0

Как хорошая причина, как любой ... – Noldorin

+4

Согласен, мне легче иметь частные поля, определенные в #области в верхней части страницы –

+2

NO REGIONS! aaaaargh! Если вы пользуетесь регионом, Джефф Этвуд придет в ваш дом! –

1

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

Но это в значительной степени зависит от предпочтений. Intellisense гарантирует, что вы всегда знаете, что делает идентификатор, и «Перейти к определению» гарантирует, что на самом деле не имеет значения, куда вы помещаете поля.

+0

Я согласен, что это не имеет большого значения, это просто вопрос предпочтения. Проблема в том, что у вас есть люди, которые работают вместе, у которых очень разные предпочтения. Для меня это боль с полями наверху (я положил их внизу) и не мог понять, почему люди это делают. Честно говоря, я все еще не совсем понимаю, почему. – stevenbey

+0

@stevenboy: Это то, для чего предназначены стандарты кодирования и соглашения, для обеспечения степени единообразия в базе кода.Правильный стандарт - тот, который использует данный магазин. Когда люди помещают поля вверху (а не внизу), они делают это, потому что это логически непротиворечиво; поля должны быть определены до их использования. –

+0

«они делают это, потому что они логически последовательны, поля должны быть определены до их использования»: это вопрос мнения. Если это так, то класс не будет компилироваться, если вы поместите поля внизу. Во всяком случае, теперь я получил четкое представление о том, почему люди ставят поля наверху. Спасибо. – stevenbey

2

Если я не использую Авто Свойства, я хотел бы сохранить хранилище рядом с этим свойством. Мне нравятся частные поля состояний, статические значения и константы, следующие конструкторы, затем свойства, а затем методы экземпляра, а затем статические методы. Если у меня есть вложенные классы, они либо попадают в верхнюю часть класса, если они используются всем классом, либо прямо перед группой методов, с которыми они используются.

public class MyClass 
{ 
    public class MyNestedClass 
    { 
    } 

    // constants 
    // private state fields 
    // private static fields 

    // constructors 

    // properties 
    // static properties 

    // methods 
    // static methods 

    // finalizer if required 
} 
+0

Это интересно и совсем не так, как я заказываю своих членов. – stevenbey