вторник, 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 мне и не нравится.

Отправить комментарий