вторник, 27 апреля 2010 г.

[prog.flame] Попрограммировал на Java, делюсь впечатлениями. Часть IV. Не нравится мне Java-вская нотация

Продолжение заметок о впечатлениях после программирования на Java. Предыдущие части здесь:

Часть I
Часть II
Часть III

Данная заметка будет совсем уж флеймовой. Но что поделать, нотация (соглашения о правилах именования классов/методов/переменных) имеет очень важное значение. Она как обувь, в которой приходится много ходить. Если где-то хоть чуть-чуть жмет или трет, или попал маленький камешек – ноги можно стереть в кровь. Так же и с нотацией. Если какая-то мелочь раздражает, то со временем от нее будешь в прямом смысле плеваться.

Вот в Java для меня такой мелочью совершенно неожиданно стало соглашение об именовании методов. Странная штука – этот camelCase. В чем логика не понятно. Почему названия классов в нормальном CamelCase, а вот названия методов в другом camelCase. Прямо как в анекдоте: “Запомнэте это дэти, патамушта понять это нэвазможна!”

Ирония ситуации в том, что где-то с 1994-го по 2001 я сам такой нотацией пользовался в собственных C++ных программах. Но потом, из-за того, что много времени стал просиживать за компьютером, отказался от любого вида CamelCase в пользу lower_case. Намного меньше глаза устают.

В C++ так же часто camelCase используется. В Qt, например. Но это не обязательная к использованию нотация. Поэтому в C++ проще, особенно если в качестве корпоративного стандарта принята удобное для тебя соглашение об именовании :)

На данный момент самыми осмысленными и удобными мне кажутся нотации, принятые в:

  • Ruby: CamelCase для имен классов, lower_case для имен методов, UPPER_CASE для имен констант. Причем, что хорошо в Ruby, там правила именования зашиты в синтаксис языка.
  • Eiffel: UPPER_CASE для классов, lower_case для методов.

Удобно, когда в C/C++ используется lower_case нотация (особенно, когда для типов добавляется суффикс _t).

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

Вынужден признать, что в C# так же осмысленная нотация, хотя CamelCase мне и не нравится.

5 комментариев:

Rustam комментирует...

В OCaml (да и в Haskell) все еще суровей имена функций и переменных не могут начинаться с большой буквы, зато имена конструкторов типов обязаны начинаться только с большой буквы.

eao197 комментирует...

Не хочется лишний раз флеймить на тему ФП, но мне кажется, что авторы ФЯ являются задвинутыми математиками, привыкшими к трехэтажным формулам. Поэтому они не задумываются о читабельности кода программ.

Rustam комментирует...

По мне так это на читабельность никак (разве микроскопически положительно) ни влияет, вначале я конечно тоже чуть поморщился и все.

Вообще так-как у меня был довольно приличный период жизни на заказном программировании когда приходилось очень часто менять стили кодирования, то в целом на подобные мелочи мне пофиг :)

eao197 комментирует...

>Вообще так-как у меня был довольно приличный период жизни на заказном программировании когда приходилось очень часто менять стили кодирования, то в целом на подобные мелочи мне пофиг :)

Ну да, должно быть пофиг. Но вот меня что-то взяло и зацепило. Такая навязчивая мысль: "а нафига названия методов начинать с маленькой буквы писать, если затем каждое новое слово должно начинаться с большой буквы?" И не избавиться от нее никак, все долбит и долбит :)))

Rustam комментирует...

:)