Стиль кода для закрытых методов в [закрытом] C#

30
задан ErikE 14 February 2011 в 21:32
поделиться

8 ответов

На самом деле это не лучше и не хуже. Это просто условность.

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

По соглашению, все имена методов в C # начинаются с заглавной буквы. Все имена свойств тоже. Только частные поля, локальные переменные и параметры методов начинаются со строчной буквы (AFAIR).

Это соглашение, поэтому вопрос «почему» неуместен. Вероятно, это похоже на вопрос: «Почему соглашение о кодировании Java предпочитает строчные буквы для всего, кроме классов?» - ответы на такие вопросы обычно таковы: «Потому что кто-то где-то однажды решил, что это будет хорошей идеей» . Остальное - просто история - или соглашение, и вы либо следуете ему, либо нет (в этом случае вы усложняете жизнь людям, читающим ваш код).

ETA: Как уже было сказано в комментарии, (imho) ответ на вопрос «почему?» Обычно приводит к тому, что разработчики языка (или люди, придумывающие соглашение) считали важными аспектами для подпадать под действие конвенции. В Java это явно случай визуального различения классов (PascalCase), переменных / полей (camelCase) и свойств (get ~ () / set ~ ()). Очевидно, что для .NET существовала необходимость в немедленном различении классов и интерфейсов (что я тоже считаю неплохим) и в визуальном различении доступа к свойствам (PascalCase) и полям (camelCase).

Обычно в таких сценариях все вещи не , изначально считавшиеся важными для соглашения, не обладают очевидностью.

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

Таково соглашение об именовании для .NET, и именно этому соглашению следуют все стандартные библиотеки .NET. Ничто не обязывает вас следовать этому соглашению в собственном коде, но обычно лучше следовать стандартам языка, на котором вы работаете. Лично я предпочитаю lowerCamelCase, а не UpperCamelCase, но при написании на C# я все равно использую рекомендуемый стиль .NET.

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

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

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

public class MyClass
{
    private int _property;

    public int Property
    {
        get { return _property; }
    }

    public MyClass(int property)
    {
        _property = property;
    }
}

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

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

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

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

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

Главное, что вы получите из этого соглашения, - это возможность легко отличать вызовы методов от переменной-члена и параметра. доступ.

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

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

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

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

Однако вы можете принять собственное соглашение - особенно для частных методов.

Я могу вспомнить один случай, когда это соглашение будет полезно: при использовании синтаксиса неявного преобразования группы методов C # . Рассмотрим этот класс, Test :

public class Test {
    public event EventHandler MyEvent;
}

Если я создам частный метод для обработки MyEvent и добавлю обработчик с использованием синтаксиса неявного преобразования группы методов C #, имя метода в нижнем регистре можно спутать с поле или переменная:

Test test = new Test();
test.MyEvent += myEventHandler;

private void myEventHandler(object sender, EventArgs e) {
    ...
}
1
ответ дан 27 November 2019 в 23:02
поделиться

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

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

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