Конфліктні стилі Java в команді


12

Я є членом команди з розробки Java зі строком на 6 тижнів. Це вимагає написання великої кількості коду дуже швидко. Однак наша команда розробників має різні стилі кодування. У нашому колективі все - від умовних назв до методів абстракції. Хтось знає якісь документи, які диктують "стандарти" для Java?

Для уточнення, мені було цікаво, чи існує організація, яка б диктувала правильну конвенцію іменування змінних та функцій, наприклад. Це найважливіше, оскільки за такий короткий термін ми не можемо дозволити собі витратити час, намагаючись зрозуміти код інших.

Відповіді:


18

Є така організація: сам Sun / Oracle. Документ називається кодовою конвенцією для мови програмування Java , і він описує більшість необхідних конвенцій. Просто всі погодиться прочитати його та дотримуватися його рекомендацій.


3
Це добре відомий std, але не бійтеся відступати від нього там, де команда погоджується. Обмеження до 80 символів шириною може бути, наприклад, болючим.
Мартійн Вербург

1
@MartijnVerburg межа може підказати рефакторинг на методи та класи, щоб уникнути глибокого відступу.

Це конвенція і може бути розумною відмовою, якщо ви не можете знайти власну угоду, але, як випливає з назви, це не диктує - це конвенція.
користувач невідомий

@userunknown Ви маєте рацію. Я навіть не згоден з усіма умовами. Але це хороший компроміс, враховуючи часові рамки проведення ОП.
Андрес Ф.

8

Я дійсно розміщую відповідь Андреса і зосереджуюсь на аспекті, рівномірному форматуванні коду Java.

Якщо ви використовуєте Eclipse, ви можете встановити його формат Java для автоматичного форматування на стандарт Java. Форматор Eclipse також має інші корисні налаштування, такі як символи на рядок (тобто, скільки символів на рядок до переходу на новий рядок) та багато інших. Стандартизація символів в кожному рядку робить його легше дифф коду , написаного різними розробниками , не маючи багато відмінностей тільки від відстані і розриви рядків.

Нарешті, із програмою Eclipse, після встановлення всіх потрібних параметрів, експортуйте свій форматер у файл, який може імпортувати кожен член команди. Тож якщо ви використовуєте Eclipse, я настійно рекомендую повністю вивчити всі параметри, які він буде автоматично форматувати та редагувати код, а потім ділитися налаштуваннями з усією командою.

Я би припустив, що інші основні Java IDE (IntelliJ та Netbeans) мають подібну функцію для експорту параметрів формату.


2
+1 Гарна відповідь також! Ви також можете встановити плагін типу Checkstyle і попередити вас про порушення конвенцій.
Андрес Ф.

Ми теж робимо це. Налаштування -> Java -> Редактор -> Зберегти параметри та включити формат при збереженні. Основна причина - гарантувати, що вихідні рядки, на які впливає формат, трапляються якомога швидше, щоб максимально очистити історію управління версіями (знову ж таки).

Так, я також нещодавно почав це робити. Єдине, в чому я не впевнений, - це те, що я вибрав опцію збереження "видалити невикористані приватні змінні". Тож, коли я роблю TDD, я вважаю, що часто мої змінні зникають, оскільки код був збережений до того, як я їх використовував ... але крім цього, цей варіант був чудовим.
Сем Голдберг

6

Це [різні стилі кодування] є першорядним, тому що за такий короткий термін ми не можемо дозволити собі витратити час, намагаючись зрозуміти код інших.

Насправді. Це не найважливіше.

Після 30 років роботи в якості консультанта я прочитав багато кодів у багатьох клієнтів. Важливо зазначити, що у кожного замовника (а часто і в організації замовника) існують різні стилі.

Прочитавши стільки стилів, я це навчився.

Стиль не має значення

Будь ласка, зосередьтеся на написанні коду, який завжди працює, і на тесті одиниць, які підтверджують, що він завжди працює.

Після доставки робочого коду ви можете його одягнути, якщо у вас не виправлено помилок та вдосконалення для встановлення.


можливо, це не має значення, але це також дуже приємно мати, і це дуже легко зробити.
Кевін

1
Стиль не має значення, але послідовність має значення. Невідповідний стиль значно ускладнює обслуговування програмного забезпечення.
Jesper

5
@Jesper: "Невідповідний стиль ускладнює обслуговування програмного забезпечення" крихітним бітом ". Це не набагато складніше будь-якої розтяжки. Непрозорий, поганий, баггі-код набагато складніше підтримувати. Невідповідні стилі в робочому коді - це просто непослідовні стилі. Деякі люди мають наголос, і вам доведеться уважніше слухати. Невідповідність стилів - це трохи більше, ніж інший регіональний (або національний) акцент.
S.Lott

1
Стиль не має значення в глобальному розумінні, але послідовний стиль в одній команді має значення. Це не зробить і не порушить проект, але якщо так само просто бути послідовним, як ні, чому б не продовжувати і бути послідовним? Ваш код буде принаймні незначно кращим.
Брайан Оуклі

1
"Ваш код буде в кращому випадку " гранично кращим ". І так, це майже нульова вартість і, звичайно, нульовий ризик. Але. 100% тест-покриття набагато цінніше, ніж консистенція.
S.Lott

2

Не турбуйтеся про вибір ідеального універсального стандарту. Все, що вам потрібно, це ваша команда погодитися на один стандарт і дотримуватися його. Складіть своє, якщо хочете, але будьте послідовні.

Послідовність покращує співпрацю, співпраця покращує код.

Навіть якщо фактична послідовність не допомагає, той факт, що ваша команда працював разом, щоб досягти згоди, є хорошою справою. Їх нездатність погодитися на щось настільки просто, як конвенції про кодування говорить про те, що можуть виникати більші проблеми в командній роботі, що ховаються під поверхнею.


0

Згаданий вище Sun CC CC не тільки 13 років, і деякі його правила є застарілими (наприклад, 80 символів на рядок), але також він не визначає умов іменування, за винятком найбільш загальних (корпус верблюда для класів, великі літери) для статичних кінцевих змінних тощо).

Вам потрібно визначити власні стандарти для різних типів класів, наприклад DAO, EJB, сутності, якими б ви не користувалися. Sun Java CC - це як абстрактний базовий клас, призначений для розширення :)


Я погоджуюсь, що Java CC від сонця трохи старі, але це означає лише вихідну точку. Я припускаю, що в ОП не так багато часу, щоб витрачати гроші на визначення власного КС, або він би сказав це! (BTW, де я зараз працюю, вони використовують плагін Sonar, сконфігурований для забезпечення обмеження до 80 символів - тому це правило все ще живе і натискається в деяких магазинах).
Андрес Ф.

Крім інших причин, читабельність є фактором. Сканування великої відстані через лінію набагато менш ефективний, ніж сканування вниз. Завдяки добре відформатованому коду можна швидко просканувати непотрібний код.
BillThor

Якщо у вас виникають проблеми з 80 символами на рядок, ви маєте дивовижно довгі ідентифікатори, або ви ставите нечітко багато в одних рядках. Перший - нерозумний (чи не можете ви відвести суть до меншого?), А останній є вказівкою на нагальну потребу в рефакторингу. Автоматичне форматування при збереженні чудово, оскільки тоді вам більше не доведеться турбуватися про форматування; програмне забезпечення обробляє це за вас.
стипендіати

@DonalFellows Так, у цей день і вік обмеження 80 символів є для нагадування про рефактор, а не через невеликі екрани терміналів.
Андрес Ф.

0

Як згадують інші тут, ви можете шукати в Інтернеті 1 з небагатьох популярних «посібників зі стилів» для Java та переконувати всіх у команді дотримуватися їх. Деякі засоби перевірки коду у вашому улюбленому IDE можуть допомогти вам нагадати, коли ви цього не робите.

Однак іноді бере участь політика. Я колись опинився в ситуації, коли найстарший розробник в команді продовжує робити це так, навіть коли хтось згадав про необхідність стандартизації. У такій ситуації, можливо, краще буде дотримуватися його стилю коду та дотримуватися його, оскільки він, мабуть, володіє найвищими знаннями про кодову базу та вимоги, і ви, можливо, не хочете витрачати час наступаючи на пальці ніг, навіть якщо йому важко. Що саме ми робили в цій конкретній ситуації, і я неохоче слідкую за цим.

Тому важливо врахувати і вашу ситуацію.


Що це за країна? Звучить як культурна річ.

@ ThorbjørnRavnAndersen Він хотів би сказати, що люди можуть бути стійкими до змін, коли "те, що вони робили так довго, працює". Політичним у цьому сенсі є лише "офісна політика"
Robotnik

0

Дядько Боб демонструє більш сучасний та сучасний стиль кодування у своїй книзі «Чистий код». На жаль, він не містить списку елементів. Ви повинні його прочитати. Сам він каже, що щоб побачити його умовності, ти повинен прочитати його код. Дядько Боб, без сумніву, є своєрідним закладом. Книга в будь-якому випадку є чудовим читанням, тому навіть якщо зараз її вже пізно читати, читайте її якнайшвидше.


0

Що дійсно має значення в коді - це низька цикломатична складність, малий обсяг, висока згуртованість та вибір експресивних ідентифікаторів. З огляду на це, код стає зрозумілим легко, і такий код хороший.

Я пропоную вивчити спартанське програмування .

Більшість стандартів кодування розповідає, як зробити так, щоб погано написаний код виглядав досить красиво, і більшість дискусій про "стиль кодування" насправді стосується форматування. Форматування коду - це візуально представляти структуру вашого коду. Це тривіально і автоматично, і ледве нічого не робити зі стилем кодування, тому що стиль кодування - це не про те, як ви представляєте структуру коду, а про те, як ви структуруєте код.
Існує також багато релігійних воєн з приводу іменування конвенцій, хоча насправді вони просто хакінг для подолання поганого дизайну. Ім'я добре, якщо воно говорить, що воно означає. Чим менше і чіткіше ваші сфери застосування, тим простіше вибрати таку назву.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.