2014-07-05 4 views
4

Я в значительной степени нуб с Единством. Как программист на C++, соглашения об именах в Unity меня немного беспокоят. И наличие OCD ontop из-за этого меня сходит с ума;)Что такое хорошее соглашение об именах для Unity?

Объекты говорят об отеле Transform, который снова имеет свойство Position. Но эти свойства должны быть доступны путем написания transform.position в коде с использованием строчной буквы. Это не очень интуитивно для меня. Поэтому мне интересно, как я могу смотреть на него, чтобы легче избежать осложнений. И какие соглашения я должен использовать, чтобы иметь возможность рассказать обо всем, быстро взглянув на переменные.

ответ

4

Соглашение о единстве на самом деле довольно просто: все с паскалем, типы (классы, структуры, перечисления), а методы начинаются с полей верхнего регистра, полей и свойств с помощью строчной буквы. Значения Enum в верхнем регистре, константы в нижнем регистре (обычно). So ClassName, MethodName, myField, myProperty { get; set; }, MyEnum.CaseA ... все.

Что касается вашего примера, то Transform является классом, тогда как transform является аксессуаром к экземпляру Transform в этом конкретном GameObject/Component. Кроме того, Transform не имеет Position, имеет position (всегда в нижнем чемодане).

Это более или менее на основе конвенций и стандартной библиотеки .NET C# 's (MS имеет verypreciseguidelines об этом), за исключением стандартных .NET использует UpperCase для общественных/защищенных методов и свойств, а также строчных для частного (опять же, обычно, то, что является частным, больше остается на вкус кодера, я думаю).

В качестве побочного примечания, с любой кодовой базой, на любом языке, лучший способ ВСЕГДА следовать существующему соглашению. Каждый опытный программист скажет вам об этом. Я понимаю об OCD, поверьте, но в этом случае я предлагаю вам отпустить его. Существует очень мало объективных аргументов в пользу того, почему соглашение было бы лучше другого (по определению условное условно), и даже если бы было, самое худшее, что вы можете сделать, это смешивать несколько условностей, потому что тогда у вас есть соглашение 0 вообще и никогда не знаю, чего ожидать.

По крайней мере, C# пытается стандартизировать; Я работал над несколькими кодовыми базами на C++, и я не вижу общего знаменателя: UpperCaseClassNames, lowerCaseClassNames, underscore_separated, tClassName, ENUMS_IN_UPPER, или нет ... это редко согласуется, поэтому чем меньше вы смешиваете, тем лучше.

+0

Я просто думаю, что это немного вводит в заблуждение, когда панель Inspector отображает ее иначе, чем она должна быть вызвана в коде. – Ledii

+0

Панель инспектора просто пытается сделать имена класса/собственности более читабельными для человека. Я не понимаю, как это может вызвать проблемы. Соглашения об именах, используемые Unity (и/или C#), довольно стандартны и достаточно интуитивны, насколько я могу судить ... Я думаю, вы привыкнете к ним довольно быстро, если попытаетесь их понять. – jahroy

+0

А, вот что вы имели в виду под «позицией» ... да, инспектор вставляет пробелы между словами (== заглавные буквы); он также удаляет любые ведущие m_, подобные вещи. Этот процесс называется «nicifying»: http://docs.unity3d.com/ScriptReference/ObjectNames.NicifyVariableName.html Инспектор предназначен для всех, не только для программистов; Верблюжьей корпус исторически просто взломал, потому что компиляторы не любят пространства ... но люди делают! Пространства всегда более читабельны, чем верблюжий случай и подчеркивания. – benblo

Смежные вопросы