Относительно именования C# для акронимов, если я писал, библиотека, связанная с Windows API, является там какой-либо сильной конвенцией или к WindowsApi или к WindowsAPI или является этим просто персональное предпочтение?
Существует конвенция, в которой для всех аббревиатур длиной более 2-х символов указывается начальный заглавный, остальные строчные. Отсюда HttpContext
и ClientID
.
пробовали ли вы кварцевую рамку ?
-121--1264834-Я разобрался. Значение было задано jQuery, но при просмотре источника новое значение не отображалось. Я попробовал это (благодаря Фермину):
$('#foo').val('poo')
alert($('#foo').val())
и это отображало измененное значение.
-121--1296152-« Рамки Руководство по проектированию » 2-го издания Кшиштофа Цвалины и Штифтика Абрамса рр.40-42
3,1,2 Прописные акронимы
DO прописывают оба символа на двухсимвольных акронимах, за исключением первого слова верблюжьего идентификатора.
System.IO
public void StartIO(Stream ioStream)
DO оприходуют только первый символ акронимов с тремя или более символами, за исключением первого слова верблюжьего идентификатора.
System.Xml
public void ProcessHtmlTag(string htmlTag)
НЕ ИСПОЛЬЗУЙТЕ заглавную букву любого из символов каких-либо акронимов, независимо от их длины, в начале верблюжьего идентификатора.
Я слышал, что вы должны избежать сокращений, поэтому он станет WindowsPlicationProgrammingInterface
, затем.
Более серьезно (люди, похоже, читают вышеперечисленное, несмотря на цитату ниже), Эта страница говорит:
Любые аббревиатуры из трех или более букв должны быть случайным случаем, а не все кепки Отказ
Поскольку API считается хорошо известной аббревиатурой, имя WindowsAPI
- это то, чтобы выбрать, если вы хотите следовать рекомендациям.
Его личные предпочтения. Но .NET будет использовать WindowsApi
. Это сродни названию TcpClient
.
Это все личное (или организационное) предпочтение. Пока вы последовательны, вы будете в порядке.
Сама .NET Framework будет использовать WindowsAPI.
Обратите внимание на FXCOP. Это хорошая утилита, которая поможет с такими проблемами.
«Primitive» в Java обычно принимают за «value type». Однако C # имеет ключевое слово последовательностей
, которое действует точно так же, как и Последовательность Java, оно просто выделяется редактором по-разному. Они являются псевдонимами для классов System. Последовательность
или java.lang. Последовательность
. Последовательность не является типом значения ни на одном языке, поэтому таким образом она не является примитивом.
Если под «примитивом» подразумевается встроенный в язык, то последовательность является примитивом. Просто используется заглавная буква. Строковые литералы (в кавычках) автоматически преобразуются в System.String
и + используется для конкатенации. Таким образом, они (и Массивы) являются такими же примитивными, как ints, longs и т. д.
Последовательность не является оберткой. Последовательность - это ссылочный тип , а примитивные типы - типы значений . Это означает, что если у вас есть:
int x = 5;
int y = x;
Память x и y оба содержат «5». Но с:
String x = "a";
String y = x;
Память x и y оба содержат указатель на символ «a» (и длину, смещение, указатель ClassInfo и монитор). Последовательности ведут себя как примитив, потому что они незыблемы, поэтому обычно это не проблема, однако если вы, скажем, использовали отражение, чтобы изменить содержимое последовательности ( не делать этого! ), как x, так и y увидят изменение. На самом деле, если у вас есть:
char[] x = "a".toCharArray();
char[] y = x;
x[0] = 'b';
System.out.println(y[0] == 'b'); // prints "true"
Так что не просто использовать char [] (если это не поведение вы хотите, или вы действительно пытаетесь уменьшить использование памяти).
Каждый объект
является ссылочным типом - это означает все записываемые классы, каждый класс в рамку и даже массивы. Единственными вещами, которые являются ценностными типами, являются простые числовые типы (int, long, short, byte, float, double, char, bool и т. д.)
Для этого есть несколько причин, но в основном это сводится к психологии и деталям реализации:
В основном, детализация производительности и реализации, а также сложность наличия 2 различных типов последовательностей. Другие типы значений имеют фиксированный объем памяти.Int - это всегда 32 бит, long - это всегда 64 бит, bool - это всегда 1 бит и т. д. 2 Помимо прочего, это означает, что они могут храниться в стеке, так что все параметры функции живут в одном месте. Кроме того, создание гигантских копий последовательностей по всему месту может убить производительность.
См. также: Почему в C # последовательность является ссылочным типом, который ведет себя как тип значения? . Относится к .NET, но это так же применимо в Java.
1 - В C/C + + и других самокомпилируемых языках это верно, потому что они помещаются в сегмент кода процесса, который ОС обычно останавливает редактирование. В Java это на самом деле обычно не соответствует действительности, так как JVM загружает файлы классов в кучу, чтобы там можно было редактировать последовательность. Однако нет причин, по которым Java-программа не может быть скомпилирована (есть инструменты, которые делают это), и некоторые архитектуры (особенно некоторые версии ARM) выполняют непосредственно байт-код Java.
2 - На практике некоторые из этих типов имеют различный размер на уровне машины. E.x. буллы хранятся в стеке как WORD-size (32 бита на x86, 64 бита на x64). В классах/массивах они могут обрабатываться по-разному. Это все детали реализации, которые остались до JVM - спецификация говорит, что булы являются либо истинными, либо ложными, и машина может выяснить, как это сделать.
-121--1706242-В окнах необходимо получить доступ к идентификатору необработанного устройства в виде файла. Он должен работать, если вы передаете файл «\\.\c: », вы используете UNC-имя устройства\.\c: (\. означает эту машину).
Для Vista и более поздних версий я не думаю, что это будет работать правильно, так как существуют механизмы для предотвращения необработанного доступа к диску для чего-либо, кроме драйверов устройств (не цитируйте меня на этом)
-121--2313435-Проверьте официальные документы корпорации Майкрософт в разделе Правила именования и прописные буквы :
Чтобы выделить слова в идентификаторе, запятнать первую букву каждого слова в идентификаторе. Не используйте подчеркивания, чтобы различать слова или, в этой связи, где-либо в идентификаторах. Существует два подходящих способа оприходования идентификаторов в зависимости от использования идентификатора:
- PascalCosure
- camelCosure
Соглашение PascalCosure , используемое для всех идентификаторов, за исключением имен параметров, содержит первый символ каждого слова (включая сокращения длиной более двух букв), как показано в следующих примерах:
PropertyDescriptor
GroupTag
Особый случай используется для двухбуквенных акронимов, в которых обе буквы заглавны, как показано в следующем идентификаторе:
IOStream
Соглашение camelCosure , используемое только для имен параметров, содержит заглавную букву первого символа каждого слова, за исключением первого слова, как показано в следующих примерах. Как также показано в примере, двухбуквенные акронимы, начинающиеся с верблюжьего идентификатора, оба являются строчными.
propertyDescriptor
ioStream
htmlTag
✓ DO использует PascalCose для всех имен открытых членов, типов и пространств имен, состоящих из нескольких слов.
✓ DO используйте camelCosure для имен параметров.