Полевые рекомендации по именованию C#?

Вы используете пользовательский тег content, который создает проблему, поскольку он будет по умолчанию встроенным элементом, а padding-top не будет работать должным образом. Используйте простой div или добавьте display:block к этому тегу:

var header = document.getElementById("myHeader");
var sticky = header.offsetTop;

function myFunction() {
  if (window.pageYOffset > sticky) {
    header.classList.add("sticky");
  } else {
    header.classList.remove("sticky");
  }
}
window.onscroll=myFunction;
@import url(https://fonts.googleapis.com/css?family=Roboto);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Condensed);
body {
  margin: 0px;
  font-family: 'Roboto';
  background-color: white;
}

.header {
  padding: 10px 16px;
  background: white;
  color: black;
  border-bottom: 1px solid grey;
}

.content {
  padding-top: 16px;
  padding-bottom: 16px;
  font-size:32px;
}

.sticky {
  position: fixed;
  top: 0;
  left:0;
  right:0;
}

.sticky+.content {
  padding-top: 102px;
}

nav>div>a {
  padding: 6px 20px;
}

h3:hover {
  color: rgb(128, 128, 128)
}

h3 {
  display: inline-block;
}

.banner {
  width: 100%;
  padding-top: 0px;
  padding-bottom: 10px;
}

.image-cropper {
  width: 100px;
  height: 100px;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.header-text {
  width: 100%;
  text-align: right;
  margin-right: 25px;
}

.logo {
  margin-bottom: -80px;
}
<nav class="header" id="myHeader">
  <div class="header-text">
    <a href="HomePage.html">
      <h3>Home
        <!-- Home -->
      </h3>
    </a>
    <a href="Gallery.html">
      <h3>Gallery
        <!-- Gallery -->
      </h3>
    </a>
    <a href="about.html">
      <h3>About</h3>
    </a>
  </div>
</nav>
<!-- Nav Bar -->
<div class="content">
   A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is
  not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant.
  A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is
  not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant.
  A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is
  not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant.

</div>
<!-- Content -->

Вы можете также упростите ваш код и рассмотрите положение sticky вместо фиксированного:

@import url(https://fonts.googleapis.com/css?family=Roboto);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Condensed);
body {
  margin: 0px;
  font-family: 'Roboto';
  background-color: white;
}

.header {
  padding: 10px 16px;
  background: white;
  color: black;
  border-bottom: 1px solid grey;
  position:sticky;
  top:0;
}

.content {
  padding-top:16px;
  padding-bottom: 16px;
  font-size:32px;
}


.sticky+.content {
  padding-top: 102px;
}

nav>div>a {
  padding: 6px 20px;
}

h3:hover {
  color: rgb(128, 128, 128)
}

h3 {
  display: inline-block;
}

.banner {
  width: 100%;
  padding-top: 0px;
  padding-bottom: 10px;
}

.image-cropper {
  width: 100px;
  height: 100px;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.header-text {
  width: 100%;
  text-align: right;
  margin-right: 25px;
}

.logo {
  margin-bottom: -80px;
}
<nav class="header" id="myHeader">
  <div class="header-text">
    <a href="HomePage.html">
      <h3>Home
        <!-- Home -->
      </h3>
    </a>
    <a href="Gallery.html">
      <h3>Gallery
        <!-- Gallery -->
      </h3>
    </a>
    <a href="about.html">
      <h3>About</h3>
    </a>
  </div>
</nav>
<!-- Nav Bar -->
<div class="content">
   A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is
  not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant.
  A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is
  not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant.
  A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is
  not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant. A bunch of text is usually here, removed it since it is not relevant.

</div>
<!-- Content -->

43
задан V0d01ey 11 February 2018 в 13:44
поделиться

12 ответов

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

Не применяйте префикс к именам полей или статическим именам полей. В частности, не применяйте префикс к имени поля, чтобы различать статические и нестатические поля. Например, неправильно использовать префикс g_ или s_.

и (из Общие правила именования )

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

РЕДАКТИРОВАТЬ : Я отмечу, что документы не относятся конкретно к частным полям, но указывают, что защищенные поля должны быть только camelCase. Полагаю, из этого можно сделать вывод, что приемлемо любое соглашение для частных полей. Разумеется, общедоступные статические поля отличаются от защищенных (они начинаются с заглавной буквы). Мое личное мнение таково, что защищенные / частные не различаются в достаточной степени по объему, чтобы гарантировать различие в соглашении об именах, тем более, что все, что вам, кажется, нужно сделать, это отличить их от параметров. То есть, если вы будете следовать рекомендациям для защищенных полей, вам придется обращаться с ними иначе, чем с частными полями, чтобы отличать их от параметров. Я использую this при обращении к членам класса внутри класса, чтобы сделать различие ясным.

РЕДАКТИРОВАТЬ 2

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

38
ответ дан 26 November 2019 в 22:29
поделиться

Лично, я взламываю названия параметра префиксом, такие как theSamplingRate. Для меня это имеет смысл:)

0
ответ дан 26 November 2019 в 22:29
поделиться

В соответствии с соглашениями Microsoft об именовании, приватные поля должны иметь префикс с подчеркиванием.

Например:

private int _myValue;

Удачи!

1
ответ дан 26 November 2019 в 22:29
поделиться

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

0
ответ дан 26 November 2019 в 22:29
поделиться

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

private string baseName;
private string prefixName;
private string suffixName;

public GameItem(string baseName, string prefixName, string suffixName)
{
    this.baseName = baseName;
    this.prefixName = prefixName;
    this.suffixName = suffixName;
}
1
ответ дан 26 November 2019 в 22:29
поделиться
private string baseName; 
private string prefixName; 
private string suffixName; 

public GameItem(string _baseName, string _prefixName, string _suffixName) 
{ 
    this.baseName = _baseName; 
    this.prefixName = _prefixName; 
    this.suffixName = _suffixName; 
} 
-5
ответ дан 26 November 2019 в 22:29
поделиться

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

Вы можете запустить StyleCop во время сборки и заставить его генерировать предупреждения о нарушениях стиля.

Чтобы ответить на ваш конкретный вопрос, закрытые поля должны быть в camelCase и иметь префикс «this».

3
ответ дан 26 November 2019 в 22:29
поделиться

Самое главное - выбрать один стандарт и придерживаться его. Ознакомьтесь со стандартом кодирования C # от iDesign по адресу IDesign (ссылка справа). Это отличный документ, который охватывает такие вещи, как правила именования. Они рекомендуют использовать верблюжий регистр как для локальных переменных, так и для аргументов метода.

3
ответ дан 26 November 2019 в 22:29
поделиться

Стандарт кодирования C # Philips Healtcare

MSDN - Эрик Ганнерсон

Редактировать: я использую ключевое слово this для доступа к нестатическим элементам в C # и Java.

3
ответ дан 26 November 2019 в 22:29
поделиться

Обычно существует два широко используемых способа присвоения имен полям (всегда с использованием camelCase ):

Использование префикса подчеркивания

void F(String someValue) {
  _someValue = someValue;
}

Использование this. для доступа к полю и предотвращения конфликтов имен

void F(String someValue) {
  this.someValue = someValue;
}

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

20
ответ дан 26 November 2019 в 22:29
поделиться

_camelCase для полей - обычное явление из того, что я видел (это то, что мы используем у себя и Microsoft предпочитает для .NET Framework).

Мое личное обоснование использования этого стандарта заключается в том, что проще набрать _ для идентификации приватного поля, чем this.

Например:

void Foo(String a, String b)
{
    _a = a;
    _b = b;
}

Versus

void Foo(String a, String b)
{
    this.a = a;
    this.b = b;
}

Я нахожу первый вариант более удобным для ввода, и это предотвращает случайное присвоение параметру с именем a вместо this.a. Это подкрепляется Code Analysis Maintainability Rule, которое гласит:

  • CA1500 Имена переменных не должны совпадать с именами полей.

Моя другая причина в том, что это. является необязательным (resharper предлагает вам удалить их), если оно не совпадает с именем локальной переменной или параметра, что затрудняет понимание того, какую переменную вы используете. Если у вас есть _ в начале всех приватных полей, то вы всегда знаете, какое из них является полем, а какое имеет локальную область видимости.

51
ответ дан 26 November 2019 в 22:29
поделиться

В нашем магазине мы начали наш первый проект C # с использованием Microsoft предлагаемое руководство для частных членов, то есть

camelCaseFieldName

. Но вскоре мы столкнулись с путаницей между частными членами и параметрами и перешли на

_camelCaseFieldName

, который сработал для нас намного лучше.

Частный член обычно имеет состояние, которое сохраняется вне вызова метода - подчеркивание в начале напоминает вам об этом.

Также обратите внимание, что использование синтаксиса AutoVariable для свойств может свести к минимуму потребность в частных поддерживающих полях, т.е.

public int PascalCaseFieldName { get; set;}

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

10
ответ дан 26 November 2019 в 22:29
поделиться
Другие вопросы по тегам:

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