2009-07-26 2 views
3

Мне присвоен большой проект, который будет выполнен на Java и рассмотрен несколькими программистами в команде. Я хочу, чтобы код был читабельным и понятным, и поэтому хотите, чтобы соглашение об именах предназначалось для всех, кто его читает.Должен ли я использовать соглашение об именах Java?

Мне интересно, должен ли я использовать соглашение об именах Java, чтобы другие люди могли его просмотреть и понять. Я всегда использую тип своего собственного соглашения об именах, который не сильно отличается от соглашения об именах Java, но наследуется от соглашения об именовании C/C++.

Наибольшая разница - это имя переменной, класс и метод. Я использую такие имена, как intLargestNumber, chGet, strName для переменных. funType, funErase, funAdd, getThis, setThis для методов и Screen, clsPlay, cls_User для классов. В тех случаях, когда соглашение об именах в Java будет использовать что-то вроде myNumber для переменной, lowSplit() для метода и Image для класса.

Мой вопрос: следует ли использовать соглашение об именах Java или использовать свое собственное соглашение об именах и предоставить лексикон или журнал для моего кода?

ответ

34

Использование стандарта для языка упростит привлечение новых людей на борту. Кроме того, использование конвенции, определенной извне, может помочь заглушить уровень религиозной войны, которую часто провоцируют подобные проблемы стиля.

+7

+1 за стремление предотвратить религиозную войну. – Thilo

+0

Хорошо, что вы упомянули о религиозной войне. Я мог бы стремиться! – Secko

+6

+1: Венгерская нотация - это пустая трата персонажей. –

12

Используйте соглашение об именах Java. Почти всегда бывает ошибкой пытаться применять соглашения с одного языка на другой. Дело в том, что большинство людей не будет тратить время на чтение конвенций, используемых для проекта. Поэтому всегда проще использовать установленные нормы языка.

3

Мне присвоен большой проект, который будет выполнен на Java и рассмотрен несколькими программистами в команде.

Как насчет того, чтобы просить руководство вашей команды?

В общем, у вас должна быть веская причина не следовать конвенциям, которые все еще ждут.

+0

@Thilo «Как насчет того, чтобы спросить свою команду?» Я буду, в понедельник! – Secko

2

Это не должно быть ваше решение. Это решение, которое должно быть принято командой или навязано команде.

+0

Я тоже спрашиваю, потому что хочу знать ради будущего! – Secko

+0

В этом случае см. Ответ Стива – Draemon

11

Лично я против вашего соглашения об именах. У него есть имя: венгерская нотация. Я считаю, что тип внедрения в именах переменных - ужасная идея. Если бы я был в вашей команде, я бы проголосовал против этого.

+0

@duffymo «Я думаю, что тип внедрения в имена переменных - это ужасная идея» - Не могли бы вы объяснить, почему? – Secko

+4

Определение переменной показывает тип переменной. Если речь идет о большем количестве объектов, тип не так важен, и класс может реализовать более одного интерфейса, чтобы тип в имени объекта смущал больше, чем помогает. Если вы используете хорошую IDE, среда IDE должна помочь вам в любой момент, когда вам нужен тип переменной. Имя переменной должно показать, для какой переменной используется семантический путь. Тип показан синтаксисом языка – Janusz

+0

@Janusz +1 Спасибо! – Secko

1

Использование стандартных соглашений об именах уменьшит развёртывание новых сотрудников и других пользователей, перенесенных в проект. Вам также не нужно будет документировать свой индивидуальный стиль в интересах группы, экономя время, которое будет неизменно потрачено, описывая, что означают поля, и причина не использования стандарта. Еще одно преимущество заключается в том, что вы можете использовать функции, предоставляемые многими IDE для простого генерации кода с небольшой настройкой - процесс, который потребуется всем разработчикам вашего проекта.

3

Большинство программ Java широко используют методы и классы в стандартных библиотеках классов Java и в сторонних библиотеках. За очень немногими исключениями они соответствуют рекомендациям в Руководстве по стилю Java. Если вы назначаете значительно разные соглашения для имен, ваш код будет состоять из уродливой смеси стилей. Любые возможные (теоретические) преимущества вашего стиля будут потеряны в умственном диссонансе несоответствия стиля.

3

Как Steve Gilham и Emil H сказали, что вы должны придерживаться соглашений Java при написании кода Java.(То же самое, очевидно, идет на любом языке или платформе.)

Как почему, что должно быть так важно, я рекомендую вам проверить классическую Java книгу, Effective Java, Джошуа Блох. В своем предисловии (available online here!), Guy Steele предлагает приятный, лаконичный аргумент для написания кода idiomatic для данного языка. В этой книге также содержится раздел, посвященный этому вопросу (пункт 56 в 2-м издании): Соблюдайте общепринятые соглашения об именах. Этот элемент занимает всего пару страниц, и вы, возможно, уже знаете большую часть того, что говорит, но, что более важно, книга в целом является наилучшим руководством для написания ясного и поддерживаемого Java-кода.

Вы упомянули, что это большой проект, выполненный командой программистов, что делает выбор еще более ясным. Даже если все программисты оказались довольны вашим шаблоном именования C/C++, помните, что очень вероятно, что состав вашей команды изменится в какой-то момент. Недавно набранный Java-программист, несомненно, будет чувствовать себя как дома, столкнувшись с кодовой базой идиоматической Java, которая придерживается общих условностей языка.

+1

Извините, я знаю, что книга почти превзошла рекламу на SO, в каждом возможном вопросе Java.Но здесь я думаю, что это на самом деле очень уместно, и что-то, что OP действительно должно проверить, так что я не мог воспользоваться возможностью подключить его. :-) – Jonik

1

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

Если у вас уже есть проект, то это немного сложнее. Если это так, вам просто нужно решить, стоит ли менять соглашение об именовании на стандарт Java или сохранять его таким, каким оно есть. Это всегда больно иметь дело с кодом, который несовместим в их наименовании, поэтому я бы посоветовал против поэтапного подхода, если вы можете его избежать.

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