Как пометить логические разделы кода в комментариях Java? - PullRequest
81 голосов
/ 04 марта 2010

Java-классы обычно делятся на логические «блоки». Есть ли соглашение, чтобы пометить эти разделы? В идеале это будет поддерживаться основными IDE.

Я лично использую этот метод:

//// Section name here ////

Однако некоторые редакторы, похоже, имеют проблемы с этим.

Например, в коде Objective-C вы можете использовать этот метод:

#pragma mark -
#pragma mark Section name here

В результате в XCode появится меню, которое выглядит следующим образом:

alt text

Ответы [ 11 ]

121 голосов
/ 11 ноября 2014

Для intellij / android studio есть изумительное решение.
Начните с:
//region Description
и заканчивается:
//endregion

Ярлык для этого находится в меню, которое вы можете открыть с помощью Команда + Alt + T (Mac) или Ctrl + Alt + T (Windows)

Вы также можете добавить свою собственную строку для дополнительного визуального разделения, если вам это нужно. Регион может быть сокращен и расширен по желанию с помощью кнопок +/-, как и любая функция. Вы также можете перемещаться между регионами с помощью Command + Alt + Period ( Ctrl + Alt + Период )

Источник .

* +1040 * Пример: * * тысяча сорок один
//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
58 голосов
/ 04 марта 2010

Я лично использую 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 для конструкторов) - и т. д.

Я также изменил стандартный шаблон «новый класс» (Java -> Стиль кода -> Шаблоны кода на экране настроек Eclipse)

Также есть старый плагин Eclipse под названием Coffee-bytes , который улучшил способ, которым Eclipse сворачивает части кода. Я не знаю, работает ли он до сих пор, но я вспомнил, что можно определить произвольные складываемые зоны, добавив специальные комментарии, например // [SECTION] или что-то в этом роде. Это может все еще работать в последних версиях Eclipse, так что взгляните.

14 голосов
/ 04 марта 2010

Eclipse определяет аннотацию javadoc @ category (выделите раздел с пометкой «Поддержка категорий»), который позволяет выполнять фильтрацию по категориям в виде структуры. Не совсем то, что вы хотите. Я удивлен, что никто не написал плагин Eclipse, который предлагает вид, подобный вашему скриншоту.

6 голосов
/ 04 марта 2010

Использование ненужных комментариев / маркеров в коде для облегчения работы может не быть хорошей практикой. У меня мало идей о разработке xcode и java, но все основные IDE поддерживают поиск членов без каких-либо специальных маркеров, таких как eclipse, показывают методы и члены, используя представление структуры, которое может быть вызвано с помощью ctrl+O, Intellij (который я предпочитаю использовать больше на mac и имел также выпуск сообщества) имеет ту же концепцию и может быть быстро доступен с помощью (Ctrl + F12). Таким образом, моя точка зрения здесь заключается в том, чтобы не использовать ненужную разметку в коде, поскольку все (или хотя бы хорошие / нормальные) IDE могут делать это автоматически.

6 голосов
/ 04 марта 2010

Мне понравилось это также, когда я использовал xcode. Для затмения я использую Ctrl + O (быстрый набросок), чтобы перемещаться по классу Java.

4 голосов
/ 04 марта 2010

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

Лучше группировать связанные члены в отдельный класс с помощью наследования или агрегации. Это считается хорошим стилем ООП

3 голосов
/ 16 сентября 2017

В дополнение к предоставленному Андрею ответу, чтобы использовать // 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

2 голосов
/ 08 января 2018

Я бы использовал javadoc ; или используйте следующее как простой «разделитель» (одна или три строки):

/** RecyclerOnItemClickListener */

/** 
 * RecyclerOnItemClickListener
 */

Так что в IDE он отображается другим цветом, нежели ненавязчиво прокомментированный серый.

2 голосов
/ 04 марта 2010

Современная среда IDE позволяет просматривать код различными способами и даже реорганизовывать его. Eclipse даже позволяет просматривать определение кода, на котором вы навели курсор, на другой панели.

Любая автоматическая реорганизация вашего кода приведет к поломке такой разметки.

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

0 голосов
/ 26 июля 2013

Для IntelliJ мне нравится:

        public void ________________INIT__________________() {};

выглядит красиво в файловой структуре!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...