Как отметить логические разделы кода в комментариях Java?
Классы Java обычно делятся на логические "блоки". Существует ли конвенция для обозначения этих разделов? В идеале это будет поддерживаться основными IDE.
Я лично использую этот метод:
//// Section name here ////
Однако некоторые редакторы, похоже, имеют проблемы с этим.
В качестве примера в коде Objective-C вы можете использовать этот метод:
#pragma mark -
#pragma mark Section name here
Это приведет к появлению меню в XCode, которое выглядит так:
![alt text]()
Ответы
Ответ 1
Я лично использую разделители строк 80-х символов, например:
public class Client {
//================================================================================
// Properties
//================================================================================
private String name;
private boolean checked;
//================================================================================
// Constructors
//================================================================================
public Client() {
}
public Client(String name, boolean checked) {
this.name = name;
this.checked = checked;
}
//================================================================================
// Accessors
//================================================================================
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
}
Конечно, это может показаться немного излишним для такого небольшого POJO, но поверьте мне, это оказалось очень полезным в некоторых огромных проектах, где мне приходилось просматривать большие исходные файлы и быстро находить интересующие меня методы. также помогает понять структуру исходного кода.
В Eclipse я создал набор настраиваемых шаблонов (Java → Редактор → Шаблоны в диалоговом окне настроек Eclipse), которые генерируют эти бары, например.
- sepa (SEParator для аксессуаров)
- sepp (SEParator для свойств)
- sepc (SEParator for Constructors)
- и т.д.
Я также модифицировал стандартный шаблон "новый класс" (Java → Стиль кода → Шаблоны кода на экране настроек Eclipse)
Кроме того, есть старый плагин Eclipse, называемый Coffee-bytes, который улучшил способ сглаживания частей кода Eclipse.
Я не знаю, работает ли он все еще, но я смогла определить произвольные складные зоны, добавив специальные комментарии, например // [SECTION] или что-то еще.
Он может по-прежнему работать в последних версиях Eclipse, поэтому посмотрите.
Ответ 2
Для студии intellij/android есть удивительное решение.
Начните с:
//region Description
и закончите с:
//endregion
Ярлык для этого находится в меню, которое вы можете открыть с помощью Command + Alt + T (Mac) или Ctrl + Alt + T (Windows)
Вы также можете добавить свою собственную линию для дополнительного визуального разделения, если вам это нужно.
Область может быть сокращена и расширена по желанию с помощью кнопок +/- как любая функция.
Вы также можете перемещаться между областями с помощью Command + Alt + Period (Ctrl + Alt + Period)
Источник.
Пример:
//region Parceler Implementation
//---------------------------------------------------------------------------------------
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.die, 0);
dest.writeParcelable(this.dieSprite, 0);
}
private DieVm(Parcel in) {
this.die = in.readParcelable(Die.class.getClassLoader());
this.dieSprite = in.readParcelable(Sprite.class.getClassLoader());
}
public static final Parcelable.Creator<DieVm> CREATOR = new Parcelable.Creator<DieVm>() {
public DieVm createFromParcel(Parcel source) {
return new DieVm(source);
}
public DieVm[] newArray(int size) {
return new DieVm[size];
}
};
//---------------------------------------------------------------------------------------
//endregion
Ответ 3
Eclipse определяет аннотацию @javadoc (прокрутите до раздела с надписью "Поддержка категорий" ), которая позволяет фильтровать по категориям в виде схемы. Не совсем то, что вы хотите. Я удивлен, что никто не написал плагин Eclipse, который предлагает представление, подобное экрану экрана.
Ответ 4
Мне тоже понравилось, когда я использовал xcode. Для eclipse я использую ctrl + o (быстрый контур) для навигации по классу Java.
Ответ 5
Использование ненужных комментариев/маркеров в коде, чтобы помочь работать, может быть не очень хорошей практикой. У меня мало идеи о разработке xcode и java, но вся основная поддержка IDE, обнаруживающая членов с любыми специальными маркерами, такими как eclipse, показывает методы и члены, использующие общий вид, который может быть запущен с помощью ctrl+O
, Intellij (который я предпочитаю использовать больше на mac и также имел редакцию сообщества) имеет ту же концепцию контура и может быть быстро доступен с помощью (ctrl + f12). Поэтому моя точка зрения заключается в том, что в коде не используется лишняя отметка, так как все (или atleast good/sane) IDE могут делать это автоматически.
Ответ 6
Насколько я знаю, нет такой вещи, как поддерживаемая спецификация для группировки членов класса вместе. Вы можете использовать любое соглашение о комментариях, которое вам нравится, но, скорее всего, он не будет поддерживаться никаким инструментом.
Лучше группировать связанные члены в отдельный класс через наследование или агрегацию. Это считается хорошим стилем ООП
Ответ 7
Современная среда IDE позволяет просматривать ваш код разными способами и даже реорганизовывать его. Eclipse даже позволяет вам просматривать определение кода, на котором курсор находится на другой панели.
Любая автоматическая реорганизация вашего кода приведет к поломке такой разметки.
Если вы хотите группировать, подумайте о том, чтобы положить вещи, принадлежащие одному классу, и вещи, не принадлежащие друг другу в разных классах.
Ответ 8
Если вы можете сгруппировать свои методы, сделайте еще один класс специально для этой концепции, которую вы хотите захватить в разделе. Идем дальше, создавая файлы бесплатно.
Ответ 9
В дополнение к предоставленному Андрею, чтобы использовать //region//endregion, мы вставляем [BigAscii letters] [1] в основные разделы кода. При быстрой прокрутке это действительно выделяется. Один из недостатков этого подхода заключается в том, что я не могу его искать, поэтому вам нужно добавить поисковый запрос чуть ниже "баннера", как показано ниже.
Blockquote
// _ _____ _____ _ _
// | | | __ \ /\ | __ \ /\ | | | |
// | | | | | | / \ | |__) | / \ _ _| |_| |__
// | | | | | |/ /\ \ | ___/ / /\ \| | | | __| '_ \
// | |____| |__| / ____ \| | / ____ \ |_| | |_| | | |
// |______|_____/_/ \_\_| /_/ \_\__,_|\__|_| |_|
//
// Search here with: LDAP Auth
[1]: http://patorjk.com/software/taag/#p=display&c=c%2B%2B&f=Big&t=LDAP Auth
Ответ 10
Для IntelliJ мне нравится:
public void ________________INIT__________________() {};
выглядит довольно в структуре файлов!