Pull to refresh

Comments 71

Если вы выбрали последний вариант, то буду очень признателен, если укажете в каких именно ЯП какой стиль, спасибо :)
camelCase — obj-c/c++
under_score — Ruby, CoffeeScript, Javascript
Странно, я думал для ява-подобных языков стандартом является именно camelCase.
Зачем издеваться при помощи under_score над JavaScript то? Там есть свой стандарт кодирования.
У меня 100% гарантия того, что мой код никто кроме меня не прочитает и не увидит. under_score читается легче чем camelCase, это в obj-c его легко читать из-за именованных аргументов.
:) Если пишу код который кто-то другой может видеть — пишу как положено, но на JS'e я не пишу почти, а в кофе пишу как на руби.
IMHO отсутствует главный вариант: в стиле заданном в документации проекта. На моей памяти такие вопросы решались иногда простым голосованием ;)
А вариантов еще много, всякие _x, m_x и X вполне себе могут быть в одном проекте, и это не зависит от языка
Чаще всего lowerCase camel notation. Также все время очень хочется применять ее в PHP проектах, но там принята underline notation.
Вот-вот, я часто пишу на PHP и Java и… просто разрываюсь, как называть.
В самом PHP, да. Но это не мешает разработчикам (например ZendFramework, Symfony, Doctrine) использовать lowerCamelCase. Не понимаю, почему это мешает Вам?
Для начала — пишу не для холивара. Сам пишу на php. Могу сказать, что не знаю что именно там принято и, если честно, можно встретить все, что угодно — htmlentities и html_entity_decode тому пример, хотя одна кодирует, а вторая декодирует по сути. Такое ощущение, что писали два разных человека. Еще есть магический __toString или jsonSerialize из интерфейса JsonSerializable.

Так что не стесняйтесь и используйте lowerCamelCase.
underline для переменных, свойств и функций. Для методов как раз lowerCase camel notation.
В каждом языке/фреймворке есть свой стиль именования, о чем вообще опрос?
Как-то так
WinAPI: GetSomeItem
Java: getSomeItem
Ruby: get_some_item
Scala: someItem
...

Т.е вы не стремитесь употреблять один стиль для всех ЯП и фреймворков, а вместо этого подстраиваетесь?
По-моему, если выработать общий стиль для всех, а не подстраиваться, это вызовет только путаницу для других участников проектов
В чужой монастырь со своим уставом не ходят.
;)
Какой один стиль? Кто его диктует? Вы сами?
Всегда нужно подстраиваться к каждому конкретному языку. Возьмите это за правило, а то будет скоро в каждом языке GeTiTeM, JlOJlITA и т.п. Уважайте других.
В пределах одного проекта, на разных языках, часто используется единая нотификация.
А потом, когда часть кода станет хорошо продуманной и самостоятельной, можно будет зарелизить, как оупенсорс. Можно, но стыдно.
Каждый язык программирование — это отдельная идеология, правила и договоренности. Это же, как писать, к примеру: privet, poka, ia haker, хеллоу, бай, ай эм хакер.
Крупные проекты пишутся не на языках, а с использованием языков. Локальная простота и общие удобство имеют приоритет выше, чем будущая поддержка подсистем вне системы. Не всегда, но такое бывает.
Возможно, действительно, все зависит от проекта.
Полностью с вами согласен, различие есть и между фреймворками в рамках одного языка, пример для Python: Zope и Django.
Если речь идёт о геттерах, то в руби также будет some_item.
some_variable, some_property, some_function, но SomeClass и someMethod
Интересный подход
Стандартные правила именования PHP.
Стандартные где? в самом PHP нет стандарта. Есть только стандарты в рамках фреймворков, библиотек, проектов.
Так это стандарт для разработки самого языка на С. Там есть только пара пунктов про юзер-функции
Не пара слов а побольше, и про методы, и про функции, и про константы, и про переменные.
Про переменные — это про переменные в С коде
for (i=0; i<100; i++)

Классы и методы похоже относятся к юзер-классам, так как сам PHP на чистом С пишется, насколько я понимаю.
Про константы не нашел.
Да, с константами я погорячился, откуда-то с другого места взял, а переменные отнёс к PHP по аналогии с функциями.
В Python абсолютно такой же подход принят за стандарт.
Вот я соврал, а меня даже плюсанули. Конечно же, для методов правила именования такие же, как для функций.
Немного странный вопрос. Какой предполагается ответ, если переменные называю с маленькой, а функции с большой буквы (c#)? А вообще, называть нужно не как нравится, а как принято в языке/фреймворке.
C#
методы: GetMyData()
свойства: MyData
private поля: _myData
переменные в теле метода: myData
В принципе тоже использую в таком же стиле переменные — myData, методы — GetMyData(). Ну а теперь ещё буду делать и private поля _myData. Спасибо за идею ;)
Для scheme или clojure использую some-item, get-item.
Пишу, так как принято в гайдлайнах конкретного языка.
Пишу так, как принято в конкретном языке/фреймворке/проекте, но субъективно больше по душе snake_case.
У меня уже вот так:
Delphi, JS, С++, C#: varName, FuncName.
Переменные, свойства и функции не определяет…
На работе:
iGetItem — впереди тип данных
В своих проектах:
get-item
последнее очень пахнет powershell'ом :)
Последнее принято в языках вроде Scheme.
Возможно. но концепция коммандлетов PSH мне нравится. И видимо, тут msft решила не изобретать велосипед.
А у нас по корпоративной этике:
public function get myItem():Item {return myItem;}
private var _myItem:Item
return _myItem;
конечно же
Как-то так. Хотя префикс «m_» самому не нравится, но приходится использовать хоть что-то для отделения переменных класса от локальных переменных функций.

class HelloWorld
{
	int m_variable_long_name;
	int m_result;

public:

	int getVariableLongName() const
	{
		return m_variable_long_name;
	}

	int getResult() const
	{
		return m_result;
	}

	void setVariableLongName(const int variable_long_name)
	{
		m_variable_long_name = variable_long_name;
	};

	void calculateResult()
	{
		int local_variable = 10;
		m_result = m_variable_long_name * local_variable;
	}
};
C#
Методы и свойства: SomeImportantMethod()
Закрытые поля: _someField

Java
Методы и свойства: someImportartMethod()
Закрытые поля: _someField

PHP
Методы и свойства: some_important_method()
Закрытые поля: _someField
Могу понять зачем в случае JavaScript, но зачем подчеркивание наименовании приватного поля "_someField" в Java (о других не говорю) если приватность обеспечена самим языком программирования?
Для удобства программирования. Смотришь на название поля и сразу понимаешь откуда оно взялось.
В Java это и так видно, конечно если не работать в блокноте. Считаю _ в Java дурным тоном.
Я недавно изучаю Java, но я вот что-то не могу понять как там сходу видно, что поле закрытое в рамках класса? Вы имеете ввиду подстветку в IDE?
Да имел ввиду средства IDE. А вообще в Java поля с доступом паблик редкость, не принято. Кстати исходники базовые пакетов Java (JRE) не содержат всяких префиксных подчеркиваний.
По поводу public полей в Java. Я использую Java в основном для Android, а в туториалах от Google написано, что рекомендуется все поля делать открытыми, а не прятать их за методами get и set. Но тут скорее из соображений производительности.

По поводу нижних подчеркиваний. Это стиль у меня пришел из C#, так как у нас на работе политика такая, что код должен быть написан так, чтобы его можно было напечатать на бумаге и читабельность бы не упала. Поэтому полагаться на, например, цветовую подсветку IDE не стоит.
Разумеется Android имеет свои приоритеты и да вероятно дело в уменьшении потребления памяти, но открытие всех полей может превратить классы в кашу и позволит легко нарушить задуманную логику работы.

Работаю с Java больше 4 лет, ни в одном рабочем проекте не встречал _ кроме одного недавнего испансокго проекта (на фрилансе), и эти _ зразу режут глаз. Но этот проект вообще отдельный разговор, там все выглядит так как будто систему делают PHP разработчики, помимо этого общего соглашения по стилю нет, технического лидера нет, кодревью нет и тд., то есть понятно откуда там взялось _.
Разумность побеждает, в смысле Жависты :)
> наше, питоновское, всё

FTFY
Никогда особо не вчитывался в различные рекомендации по оформлению кода, но для себя вывел примерно следующую схему:
THIS_IS_CONST
thisIsVar
ThisIsFucntion (или f_ThisIsFucntion — если много функционального кода)
CThisIsClass (или c_ThisIsClass)
… а если всё называть одной буковкой, то таких проблем вообще не возникнет…
За многие годы у меня сложились такие правила:

имена
переменных (тип данных — примитив) — items_count = sizeof(items)
инстансов классов — objectsFactory = new ObjectsFactory(«square»)
классов — ObjectBuilder
методов — attachEvent(IEvent $event)
функций — invalidate_cache_key($key)
констант — SEVENTYTWO = 72
интерфейсов — IHttpRequest
абстрактных классов — AHttpResponse
Sign up to leave a comment.

Articles