Java sama dengan #region di C #


489

Saya ingin menggunakan daerah untuk melipat kode di Eclipse ; bagaimana itu bisa dilakukan di Jawa?

Contoh penggunaan dalam C # :

#region name
//code
#endregion

@MichaelLaVoie: jawaban telah dihapus. Apakah ada kemungkinan ia dipindahkan ke situs SE yang berbeda?
Adam Parkin


Saya bergabung dengan pesta terlambat. Saya setuju dengan IKashef bahwa ada opsi lain yang dipilih saat ini. Jawaban Yaqub Ahmad menyelamatkan hidup saya. Saya tidak perlu mengunduh IDE Cerdas. Saya mengunduh plugin CoffeeBytes dari komentar cking24343, saya menerapkan konfigurasi 'null n void' dan bekerja dengan baik di Luna. Anda harus memulai ulang setelah menerapkan konfigurasi
Maximus Decimus

3
mulai dengan //region [Description] dan diakhiri dengan//endregion
Amir Ziarati

Jawaban:


216

Tidak ada standar yang setara. Beberapa IDE - Intellij, misalnya, atau Eclipse - dapat dilipat tergantung pada jenis kode yang terlibat (konstruktor, impor dll.), Tetapi tidak ada yang seperti itu #region.


30
Sebenarnya ini bisa dicapai. Jika Anda gulir ke bawah pada posting ini "Yaqub Ahmad" menjelaskan cara mendapatkan fungsionalitas ini. Juga di sini adalah tautan ( kosiara87.blogspot.com/2011/12/... ) yang menunjukkan kepada Anda cara menambahkannya ke lingkungan gerhana yang ada ... sangat berguna!
cking24343

14
Tentu. Tapi tidak ada standar . Ini dilakukan dalam IDE daripada memiliki konstruksi bahasa (atau teks)
Brian Agnew

2
@ lKashef - lalu apa yang setara dengan standar itu? Semua yang tercantum di bawah ini berhubungan dengan IDE tertentu, bukan?
Brian Agnew

4
@BrianAgnew, OP tidak menyebutkan apa-apa tentang standar, tetapi dia hanya ingin dapat memiliki blok seperti daerah dalam kodenya. Misalnya Anda mengatakan "tapi tidak ada yang seperti #region." di IDEA misalnya // wilayah .. // endregion bekerja persis seperti #region. Tidak ada cara standar untuk melakukan ini sama sekali di tempat pertama karena tergantung pada IDE itu sendiri atau sebuah plugin. Pengembang dengan latar belakang microsoft akan selalu melihat MS Visual Studio sebagai "The" IDE tetapi sebenarnya itu hanya salah satu opsi dan IDE lain mungkin atau mungkin tidak mengimplementasikan fungsionalitas tersebut.
Mazen Elkashef

4
@BrianAgnew, saya hampir menyerah sampai saya melihat jawaban orang lain yang lebih membantu daripada Anda. Sungguh-sungguh tidak ada perasaan sulit di sini, Kita semua di sini untuk belajar dan berbagi pengetahuan kita dan menyatakan fakta bahwa saya menyesatkan dengan jawaban Anda, mungkin itu bagus pada tahun 2010 tetapi tidak hari ini. Saya harap Anda mengerti maksud saya.
Mazen Elkashef

476

Jet Brains IDEA memiliki fitur ini. Anda dapat menggunakan hotkey surround untuk itu (ctrl + alt + T). Itu hanya fitur IDEA.

Daerah di sana terlihat seperti ini:

//region Description

Some code

//endregion

3
Terima kasih untuk itu! Berfungsi sempurna di Android Studio.
rogcg

2
Pertanyaannya jelas meminta solusi untuk Eclipse.
Duncan Jones

5
@Duncan 1. Tidak ada salahnya menunjukkan kepada orang-orang bahwa ada alternatif. 2. Saya mencari wilayah di bawah Intellij dan menemukannya.
BHuelse

2
Di Linux, hotkey itu menjalankan terminal
user1209216

1
Baru saja mencobanya dan sepertinya IntelliJ mendukung wilayah bersarang juga! Sayang sekali ini bukan standar.
Gruber

209

Dengan Android Studio, coba ini:

//region VARIABLES
private String _sMyVar1;
private String _sMyVar2;
//endregion

Hati-hati: tidak ada garis kosong setelah // wilayah ...

Dan Anda akan mendapatkan:


sedang melalui semua jawaban dan mengira karena Android Studio didasarkan pada IntelliJ maka ini harus didukung. hal yang baik untuk menunjukkannya!
serin

5
bummi, saya mencobanya di 0.4.2 dengan garis kosong dan masih berfungsi
serine

2
Hanya komentar / saran (dan sama sekali bukan jawaban untuk pertanyaan Anda). Ini adalah pendapat luas bahwa daerah harus dihindari, karena mereka membiarkan Anda menyembunyikan kompleksitas kelas alih-alih mengerjakan gaya pengkodean Anda. Alih-alih kelas besar, di mana masing-masing kelas bertanggung jawab untuk banyak fungsi, berusahalah memecah kode Anda menjadi kelas yang lebih kecil. Ini akan membuat kode Anda lebih mudah dikelola dari waktu ke waktu. Baca lebih lanjut di sini: blog.codinghorror.com/the-problem-with-code-folding
Daniel Saidi

5
@DanielSaidi oh, kengeriannya! :) orang dalam artikel " Saya tidak bisa melihat apa-apa! Saya harus secara manual memperluas bagian-bagian itu untuk menelusuri salah satu kode di kelas ini. " ... jadi karena dia terlalu malas untuk menekan tombol (yang akan memperluas semua bagian dalam file), fitur tersebut tidak boleh digunakan - ini adalah fitur yang sangat luar biasa. Saat ini saya menggunakannya untuk menyembunyikan metode yang telah saya verifikasi satu per satu di kelas yang saya kerjakan, benar-benar membantu untuk tetap terorganisir. Pastikan sesekali saya bertanya-tanya di mana ada sesuatu yang Saya pikir ada di sana, tetapi itu adalah harga kecil untuk dibayar ...
ycomp

4
@DanielSaidi Ini bukan tentang menyembunyikan kompleksitas tetapi menyembunyikan kode biasa seperti deklarasi variabel, getter, kode inisialisasi dan sebagainya. Perhatikan juga bahwa Anda TIDAK meminta #region untuk menciutkan "kode kompleks" yang ditemukan di fungsi dan kelas. Daging sapi dengan programmer yang menggunakan alat secara tidak benar tidak berarti "alat itu buruk".
user1567453

96

Tidak ada padanan dalam bahasa ... Berdasarkan IDE ...

Misalnya di netbeans:

NetBeans / Creator mendukung sintaks ini:

// <editor-fold defaultstate="collapsed" desc="Your Fold Comment">
...
// </editor-fold>

http://forums.java.net/jive/thread.jspa?threadID=1311


1
Meskipun itu bukan lipatan khusus bahasa tetapi masih membantu saya di NetBeans. Persis apa yang ingin saya capai. Hanya ingin kode saya lebih berguna dan terorganisir untuk saya.
Indigo

Apakah ada jalan pintas yang dapat secara otomatis mengisi baris ini?
Pini Cheyni

1
@ pini-cheyni - ui.netbeans.org/docs/ui/code_folding/cf_uispec.html tersedia pintasan untuk melipat ....
Kevin LaBranche

@JadChahine: OP bertanya tentang Eclipse, tetapi setuju ini bekerja dengan baik untuk NetBeans. Sintaksnya sedikit janggal tetapi salin-tempel membuatnya cukup mudah.
AlainD


49

Fitur kode lipat kustom dapat ditambahkan ke gerhana menggunakan plugin kode lipat CoffeeScript.

Ini diuji untuk bekerja dengan gerhana Luna dan Juno. Inilah langkah-langkahnya

  1. Unduh plugin dari sini

  2. Ekstrak isi arsip

  3. Salin tempelkan konten plugin dan folder fitur ke folder bernama yang sama di dalam direktori instalasi gerhana
  4. Mulai ulang gerhana
  5. Menavigasi Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

    masukkan deskripsi gambar di sini

  6. Buat wilayah baru seperti yang ditunjukkan:

    masukkan deskripsi gambar di sini

  7. Mulai ulang Eclipse.

  8. Cobalah jika melipat berfungsi dengan komentar yang diawali dengan pengidentifikasi awal dan akhir yang ditentukan

    masukkan deskripsi gambar di sini

    masukkan deskripsi gambar di sini

Anda dapat mengunduh arsip dan menemukan langkah-langkah di Blog ini juga.


2
tidak bekerja untuk saya di gerhana neon: salin dan tempel tidak melakukan apa-apa: satu-satunya yang berubah adalah di bawah marketplace >> plugin terpasang >> pembaruan. Saya memperbarui plugin coffeeScript, tetapi saya tidak mendapatkan opsi "Pilih lipat untuk menggunakan" di bawah java >> editor >> lipat
Angelo Oparah

Ini berhasil di Eclipse Oxygen, namun Anda harus memulai kembali gerhana lagi. Ikon yang ditampilkan kepada saya adalah ikon merah sehingga saya mengubah konfigurasi, Window → Preference → Java → Editor → Lipat klik pada tab Advanced dan ubah tema Icon yang diatur ke Modern
Michieru

38

Ini lebih merupakan fitur IDE daripada fitur bahasa. Netbeans memungkinkan Anda untuk mendefinisikan definisi lipat Anda sendiri menggunakan definisi berikut:

// <editor-fold defaultstate="collapsed" desc="user-description">
  ...any code...
// </editor-fold>

Seperti disebutkan dalam artikel, ini mungkin didukung oleh editor lain juga, tetapi tidak ada jaminan.


Di studio Android, setidaknya, Anda tidak dapat melipat bagian dari blok. Jika spec lipat dimulai di luar blok, dan berakhir di dalam blok, itu tidak akan aktif.
Prof Von Lemongargle

30

cara tercepat di Android Studio(atau IntelliJ IDEA)

  1. highlight the code Anda ingin mengelilinginya
  2. tekan ctrl+ alt+t
  3. tekan c==> lalu masukkan deskripsi
  4. Nikmati

// region <name> Kode Anda ... // endregion Lebih efisien dan sederhana! hehe; P
diegodsp

30

AndroidStudiowilayah
Buat wilayah

Pertama , cari (dan tentukan pintasan jika perlu) untuk Surround Withmenu masukkan deskripsi gambar di sini

Kemudian , pilih kodenya, tekan Ctrl+Alt+Semicolon-> pilihregion..endregion...
masukkan deskripsi gambar di sini

Pergi ke wilayah

Pertama, cari Custom Foldingjalan pintas.
masukkan deskripsi gambar di sini Kedua, dari mana saja dalam kode Anda, tekanCtrl+Alt+Period('>' on keyboard) masukkan deskripsi gambar di sini


20

Berlawanan dengan apa yang diposkan kebanyakan orang, ini BUKAN hal IDE. Itu adalah hal bahasa. Wilayah # adalah pernyataan C #.


55
Yang paling banyak diposkan adalah DI JAWA ini adalah fitur IDE.
WhyNotHugo

1
Saya melihat 2 jawaban paling populer mengatakan tidak ada fitur bahasa seperti itu. -1.
Mohayemin

23
Dalam C # itu sebagian IDE, sebagian bahasa. Bahasa ini mendukung arahan preprocessor, tetapi preprocessor mengabaikannya (dengan cara yang sama prosesor mengabaikan komentar). IDE (Visual Studio) menggunakannya untuk melipat kode.
ADTC

Java tidak memiliki kode yang ditentukan hanya pelipatan IDE (Netbeans), Netbeans memiliki komentar khusus seperti "TODO" dan banyak lagi. Mereka sangat berguna untuk melacak kemajuan Anda melalui proses pengembangan proyek SW
Pini Cheyni

17

Saya datang dari C # ke java dan memiliki masalah yang sama dan alternatif terbaik dan tepat untuk wilayah adalah sesuatu seperti di bawah ini (bekerja di Android Studio, tidak tahu tentang intelliJ):

 //region [Description]
 int a;
 int b;
 int c;
//endregion

pintasannya seperti di bawah ini:

1- pilih kode

2- tekan ctrl+ alt+t

3 - tekan cdan tulis deskripsi Anda


Dalam AndroidStudio versi 2.3.1 itu terlipat. Saya tidak tahu kapan mulai melipat.
MiguelSlv

Terima kasih. Berfungsi sempurna di Android Studio 3.0 beta 2. Dengan rasa ingin tahu saya mencoba di Eclipse Oxygen, itu tidak bekerja secara default tetapi tidak mencari lebih jauh.
Laurent

15

Jalan terbaik

//region DESCRIPTION_REGION
int x = 22;
// Comments
String s = "SomeString";
//endregion;

Kiat: Masukkan ";" di akhir "endregion"


1
gerhana tidak melipat kode, IDE apa yang Anda gunakan?
Ohad Cohen

Ini bekerja dengan Android Studio dan IntelliJ IDEA (keduanya dibuat dari basis kode yang sama oleh JetBrains)
prashu132

IDE adalah singkatan dari "integrated development environment"
Pini Cheyni

12

Jika ada yang tertarik, di Eclipse Anda dapat menutup semua metode Anda dll dalam sekali jalan, cukup klik kanan saat Anda biasanya memasukkan titik istirahat, klik 'Lipat'> 'Ciutkan semua'. Itu tahu itu bukan jawaban untuk pertanyaan, tetapi hanya memberikan alternatif untuk kode lipat cepat.


1
Anda juga dapat membuat Eclipse auto-collapse semuanya saat membuka file kode sumber. Preferensi> Java> Editor> Lipat> "Awalnya lipat elemen-elemen ini" (centang semua dalam daftar). Saya merasa nyaman untuk fokus hanya pada apa yang saya butuhkan terutama dalam file kode sumber panjang.
ADTC

@ADTC - Terima kasih - ratusan kali saya melakukannya secara manual setiap kali saya membuka file - tidak pernah lagi !!
ToolmakerSteve

@ToolmakerSteve Jika Anda bisa melakukan apa saja berulang-ulang secara manual pada komputer, ada saja memiliki menjadi cara untuk mengotomatisasi itu.= D
ADTC

8
#region

// code

#endregion

Benar-benar hanya memberi Anda manfaat dalam IDE. Dengan Java, tidak ada standar yang ditetapkan dalam IDE, jadi benar-benar tidak ada standar yang paralel #region.


3
Nah jika ada standar untuk region, maka kita dapat yakin bahwa java IDE akan mendukungnya bukan?
Pacerier

@Pacerier jika mereka mendukung standar itu, ya. Saya pikir #region lebih merupakan fitur IDE daripada standar. Secara teori, IDE java dapat mengimplementasikan perilaku ini dan menjadikannya standar de-facto
El Mac

4

berikut ini sebuah contoh:

//region regionName
//code
//endregion

100% bekerja di studio Android


Saya tidak tahu mengapa Anda telah diturunkan, ini benar-benar berfungsi di Android Studio tanpa konfigurasi apa pun!
maxdelia

2

Saya biasanya memerlukan ini untuk kode komentar jadi saya menggunakan kurung keriting di awal dan akhir itu.

{
// Code
// Code
// Code
// Code
}

Ini dapat digunakan untuk cuplikan kode tetapi dapat membuat masalah dalam beberapa kode karena mengubah cakupan variabel.


1

Sebenarnya johann, yang #menunjukkan bahwa itu adalah arahan preprosesor, yang pada dasarnya berarti memberitahu IDE apa yang harus dilakukan.

Dalam hal menggunakan #regiondan#endregion dalam kode Anda, itu membuat TIDAK ada perbedaan dalam kode akhir apakah itu ada atau tidak. Bisakah Anda benar-benar menyebutnya elemen bahasa jika menggunakannya tidak mengubah apa pun?

Selain itu, java tidak memiliki arahan preprocessor, yang berarti opsi kode lipat didefinisikan pada basis per-ide, dalam netbeans misalnya dengan pernyataan // <code-fold>


1
dapatkah Anda benar-benar menyebutnya elemen bahasa jika menggunakannya tidak mengubah apa pun? - bagaimana dengan komentar ?!
epeleg

2
Saya pernah mendengar argumen sebelumnya bahwa itu bukan fungsi dari bahasa. Dan pertanyaan ini "Bisakah Anda benar-benar menyebutnya elemen bahasa jika menggunakannya tidak mengubah apa pun?" itu konyol. Banyak waktu refactoring membuat kode lebih mudah dibaca untuk manusia dan tidak melakukan apa pun (semoga) untuk memengaruhi fungsi kode.
Menefee

1

Di Mac dan Android Studio ikuti urutan ini:

  1. Sorot kode sumber untuk dilipat
  2. Tekan Alt+ Command+t
  3. Pilih <editor-fold>

Anda juga dapat memilih opsi lain:

masukkan deskripsi gambar di sini


-1

Di Eclipse Anda dapat menutup tanda kurung yang membungkus blok wilayah variabel. Yang paling dekat adalah melakukan sesuatu seperti ini:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

8
Ini tidak berguna. Itu tidak berfungsi di dalam suatu metode, ditambah lagi BREAKS CODE! (Variabel pribadi akan mengeluh bahwa mereka ingin menjadi final. Variabel tanpa definisi ruang lingkup tidak akan dapat diakses di luar kurung bagian dalam!)
ADTC

1
Saya tidak suka metode ini, menambahkan terlalu banyak kurung kurawal. Ini dapat menyebabkan kode membingungkan :(
Broken_Window

-3

Cukup intall dan aktifkan plugin Coffee-Bytes (Eclipse)


Tidak hanya ini disebutkan dalam jawaban sebelumnya , tetapi Anda bahkan tidak memberikan informasi berguna tentang itu.
Xynariz

-12

Ada beberapa opsi untuk mencapai hal yang sama, Ikuti poin di bawah ini.

1) Buka penjelajah Makro:

2) Buat makro baru:

3) Beri nama "OutlineRegions" (Atau apa pun yang Anda inginkan)

4) Klik kanan pada "OutlineRegions" (Menampilkan pada Macro Explorer) pilih opsi "Edit" dan rekatkan kode VB berikut ke dalamnya:

    Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.Collections

Public Module OutlineRegions

    Sub OutlineRegions()
        Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection

        Const REGION_START As String = "//#region"
        Const REGION_END As String = "//#endregion"

        selection.SelectAll()
        Dim text As String = selection.Text
        selection.StartOfDocument(True)

        Dim startIndex As Integer
        Dim endIndex As Integer
        Dim lastIndex As Integer = 0
        Dim startRegions As Stack = New Stack()

        Do
            startIndex = text.IndexOf(REGION_START, lastIndex)
            endIndex = text.IndexOf(REGION_END, lastIndex)

            If startIndex = -1 AndAlso endIndex = -1 Then
                Exit Do
            End If

            If startIndex <> -1 AndAlso startIndex < endIndex Then
                startRegions.Push(startIndex)
                lastIndex = startIndex + 1
            Else
                ' Outline region ...
                selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                selection.OutlineSection()

                lastIndex = endIndex + 1
            End If
        Loop

        selection.StartOfDocument()
    End Sub

    Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
        Dim lineNumber As Integer = 1
        Dim i As Integer = 0

        While i < index
            If text.Chars(i) = vbCr Then
                lineNumber += 1
                i += 1
            End If

            i += 1
        End While

        Return lineNumber
    End Function
End Module

5) Simpan makro dan tutup editor.

6) Sekarang mari kita tetapkan pintasan ke makro. Pergi ke Alat-> Pilihan-> Lingkungan-> Keyboard dan cari makro Anda di "tampilkan perintah yang mengandung" kotak teks (Ketik: Makro ke dalam kotak teks, itu akan menyarankan nama makro, pilih salah satu Anda.)

7) sekarang di kotak teks di bawah "Tekan tombol pintas" Anda dapat memasukkan pintasan yang diinginkan. Saya menggunakan Ctrl + M + N.

Menggunakan:

return
{
//Properties
//#region
Name:null,
Address:null
//#endregion
}

8) Tekan tombol pintasan yang disimpan

Lihat hasil di bawah ini:

masukkan deskripsi gambar di sini


Di mana Macro Explorer? Saya menggunakan Eclipse 4.3.1 dan tidak dapat menemukannya.
Mohamed El-Nakib

1
Ini bahkan bukan Java?
Burak Karakuş

@ CJBS - re: This code seems to be for Visual Basic.NETyang akan menyarankan IDE Visual Studio.
Jesse Chisholm

@JesseChisholm - itu maksud saya. OP menginginkan Java, bukan VB, dan menargetkan Eclipse IDE, bukan VS.
CJBS

1
Jawaban RIP. Jika dia menggunakan visual studio, dia bisa saja menggunakan #regiondan#endregion
PNDA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.