Apa kebalikan dari menginisialisasi (atau init)? [Tutup]

94

Istilah ini akan digunakan sebagai nama metode. Metode ini dipanggil ketika bagian dari antarmuka pengguna disembunyikan (atau dihapus), dan digunakan untuk mengatur ulang nilai ke default dan membuang objek yang tidak akan digunakan lagi.

Kemungkinan nama adalah: lepaskan, hapus, buang, hapus dll.

Menurut Anda mana yang paling tepat?

Gabriel Diaconescu
sumber
1
Menghancurkan? (butuh lebih banyak surat)
Deiwin
31
Tidak dapat melihat bagaimana ini tidak konstruktif, pemindaian cepat dari jawaban di bawah ini menunjukkan banyak pengembang tidak cukup mendapatkan antonim. Nama metode IMO sangat penting dan "menginisialisasi" tidak memiliki antonim yang jelas, namun merupakan istilah umum dan berguna.
earcam
2
Sayangnya saya tidak dapat menambahkan jawaban lagi karena pertanyaan itu sudah ditutup (Seperti yang dikatakan earcam: Bagaimana ini tidak konstruktif?), Jadi saya akan menambahkan jawaban saya di sini. Bentuk singkat, ramah komentar adalah ini: Gunakan Initializehanya jika Anda tidak memerlukan antonim! Jika Anda membutuhkan satu kata kerja pilih lain (sebagian besar waktu ada alternatif yang lebih deskriptif). Untuk referensi lebih lanjut, saya memberikan daftar antonim untuk programmer di GitHub.
Max Truxa
3
Saya menemukan jawaban untuk ini sangat membantu ketika saya memiliki pertanyaan yang persis sama. Seharusnya tidak ditutup.
Ian Goldby
3
Saya setuju ... menutup pertanyaan ini sama sekali tidak membantu.
Harald

Jawaban:

80

Saya menggunakan :

  • inisialisasi ()
  • mengakhiri()

Saya merasa lebih tepat:

  • sulit untuk tidak melihatnya dalam kode, karena itu kata-kata yang panjang (saya tidak menggunakan init)
  • itu bahasa Inggris yang benar (AFAIK)
  • di kepalaku, terminasi menghindari ambiguitas. Itu tidak cocok dengan awal (yang cocok berakhir), mulai (yang cocok berhenti), membuat (yang cocok menghancurkan), pengaturan (yang cocok tidak disetel), memuat (yang cocok membongkar) dll.

Namun, beberapa orang dapat menemukannya sebagai masalah selera.

Klaim
sumber
6
+1 untuk terminate(). Saya merasa ini umumnya tidak ambigu dan mungkin cukup berlaku di seluruh kasus penggunaan.
Ben Hocking
9
Saya setuju sepenuhnya dengan "terminasi" semua saran lainnya adalah kata-kata dengan antonim yang tepat dan terkenal; hancurkan (buat), tearDown (setUp), tutup (buka), lepaskan (peroleh), dll. Mengejutkan betapa banyak pengembang gagal melihat ini.
earcam
Defenestrate. Itulah yang saya lakukan dengan objek ketika saya selesai dengan mereka. (Tapi Hentikan akan menjadi pilihan kedua saya.)
Nicki
3
@Nicki Terlihat mahal harus menginstal ulang windows di setiap penghancuran objek ...
Klaim
Seperti yang ditunjukkan earcam : Ini set up(yang cocok tear down) tidak setup(tidak ada kata kerja seperti itu dalam bahasa Inggris).
Max Truxa
25

Saya biasanya pergi dengan Finalisasi, Hancurkan, atau Hentikan tergantung pada apa fungsi objek.

Untuk kasus yang Anda jelaskan, Finalisasi adalah apa yang akan saya ikuti berdasarkan skema saya.

Brian Dishaw
sumber
Sayangnya, 'Finalisasi' bisa berupa sinonim atau antonim 'Inisialisasi', jadi saya pikir itu akan menjadi pilihan yang buruk secara umum. Namun, 'Hancurkan' dan 'Hentikan' adalah pesaing. Lihat mw.com/dictionary/finalize untuk definisi yang mengatakan "untuk dimasukkan ke dalam bentuk akhir atau selesai". Saya bahkan pernah melihatnya menggunakan kode ini. Yaitu, menyelesaikan objek adalah langkah terakhir dalam inisialisasi. Sebaliknya, kelas Objek Java memiliki finalize()metode yang menunjukkan tidak ada lagi referensi ke objek.
Ben Hocking
@BenHocking Saya pikir Anda mengambil "untuk dimasukkan ke dalam bentuk akhir atau selesai" dengan cara yang salah. Bagi saya, ini berarti bahwa Anda selesai dengan objek dan sudah waktunya untuk membersihkan / mengatur ulang semua properti. Inilah yang ingin OP lakukan. Jadi saya pikir definisi itu membuktikan kasus saya.
Brian Dishaw
Juga, ada umpan balik mengapa downvote? (Saya berasumsi itu bukan @BenHocking karena dia tidak menunjukkan bahwa dia adalah downvoter)
Brian Dishaw
a) Anda benar bahwa saya tidak memilih. Saran Anda masuk akal dan saya pikir diskusi ini bermanfaat. b) Saya telah melihat finalisasi () digunakan persis seperti yang saya sebutkan. Sebagai contoh, dalam kelas yang menghitung triangularisasi Delauney, setelah semua poin ditambahkan, finalize () dipanggil untuk melakukan beberapa perhitungan tambahan sebelum hasilnya dapat digunakan darinya. Dalam hal ini, itu menunjukkan bahwa objek tidak lagi terbuka untuk modifikasi, tetapi masih tersedia untuk digunakan, yaitu, untuk mendapatkan hasil triangularisasi.
Ben Hocking
14

Saya suka releaseuntuk metode yang membuang benda dan sumber daya lainnya (misalnya sebagai persiapan untuk kehancuran). Saya akan memilih resetmetode yang mengembalikan nilai ke default.

Jika keadaan "default" tidak memerlukan sumber daya apa pun, maka resetmungkin dapat menelepon releaseuntuk melakukan bagian dari operasinya.

datang badai
sumber
6

close()

Belum ada yang mengusulkan close (). Java 7 memiliki fitur "coba dengan sumber daya" yang baru. Kelas yang dibersihkan secara otomatis harus mengimplementasikan java.lang.AutoCloseable yang memiliki metode satu tutup (). shutdown () atau cleanup () mungkin bagus juga.

Tidak finalize()

finalize () berarti sesuatu yang khusus untuk pemulung di Jawa, dan cara kerjanya agak aneh. Saya akan tinggal jauh dari menyelesaikan () kecuali jika Anda ingin persis apa yang dilakukan Java dengan menyelesaikan ().

GlenPeterson
sumber
2
Anda membuat poin yang valid tentang finalisasi () di Jawa ... tetapi OP tidak menunjukkan di mana pun saya melihat bahwa pertanyaannya secara khusus berhubungan dengan Java, dan bukan bahasa OO lainnya dengan "nama metode" (misalnya, C ++).
EliSko
Dalam C #, Finalizedigunakan untuk merusak instance kelas.
Olivier Jacot-Descombes
4

Saya sangat suka 'menghancurkan'. Tidak bisa lebih jelas kecuali Anda sedang menulis permainan video atau sesuatu.

Eliot Ball
sumber
4
Menurut saya, "hancurkan" dipasangkan dengan "buat".
EliSko
4

Saya akan mengatakan itu tergantung pada apakah tindakan itu opsional atau diperlukan (tanpa sumber daya bocor), dan jika bahasa mendukung konstruktor / destruktor. Untuk kasus opsional, saya menggunakan:

  • bersih
  • atur ulang
  • sembunyikan (dalam konteks UI)

Dalam kasus lain di mana tindakan sebaliknya diperlukan (dalam bahasa tanpa konstruktor / destruktor, atau ketika destruktor tidak melepaskan sumber daya), saya menggunakan:

  • init - fini
  • inisialisasi - deinitialize
  • buat - hancurkan

Dalam kasus Anda, saya pikir saya lebih suka hide. Itu masih dapat melepaskan memori / sumber daya jika mau - yang penting adalah itu opsional, yaitu bahwa destruktor akan mengurusnya jika Anda tidak.

Oskar N.
sumber
3

Pikiran pertama saya adalah runtuh, tetapi itu digunakan dalam banyak kerangka pengujian. Menyelesaikan dan membuang memiliki masalah yang sama. Atur ulang, atau bersihkan keduanya sepertinya pilihan yang baik. Inisialisasi ulang memperjelas kembali ke kondisi inisialisasi, yang akan lebih baik jika Anda kembali ke kondisi inisial.

Pastikan istilah Anda tidak kelebihan beban dalam konteks Anda saat ini.

Tanda
sumber
Saya tidak melihat bagaimana ini merupakan masalah tersendiri. Diberikan, Finalizedan Disposekeluar dalam kode .NET. Selain itu, saya tidak melihat masalah dengan menggunakan kembali nama mapan.
Konrad Rudolph
1
@KonradRudolph Menggunakan kembali nama mapan baik-baik saja, JIKA konsep menyelaraskan dengan sangat baik. Tak satu pun dari istilah yang saya cantumkan selaras dengan apa yang saya pahami untuk dijelaskan. Jadi akan lebih membingungkan karena Anda akan melihat istilah berpikir, saya tahu apa yang dilakukannya, dan salah.
Masuk
3

dan digunakan untuk mereset nilai ke default dan membuang objek yang tidak akan digunakan lagi.

resetsepertinya istilah yang bagus jika Anda menyetel ulang objek ke default. reinitializejuga bisa tepat jika penggunaan objek ini mirip dengan apa yang initializedilakukannya. Kedengarannya seperti metode ini akan membuang objek lain , bukan yang menerima pesan, dalam hal ini salah satu di atas harus baik-baik saja. Jika Anda benar-benar melakukan kebalikan dari initdan menyiapkan penerima untuk dihancurkan, disposeakan menjadi pilihan yang baik.

Caleb
sumber
1

http://www.wordhippo.com/what-is/the-opposite-of/initialize.html

Saya akan pergi dengan final. Namun saya pikir itu sedikit tergantung kasus penggunaan yang tepat: misalnya Jika Anda menggunakannya terutama untuk melepaskan sumber daya, menutup koneksi, file kemudian rilis akan lebih bermakna.

Jika Anda mencari gagasan untuk penggunaan umum, atau standarisasi, saya akan memilih beberapa yang kurang bermakna, sesuatu tanpa makna khusus seperti rilis, atau hapus.

Konsep init vs (apa pun) mirip dengan (konstruktor vs destruktor), atau dalam java finalisasi.

( Catatan : Jika bahasa memiliki konsep membangun dan merusak objek, sedikit atau tidak perlu menggunakan init ().)

pengguna1063963
sumber
FYI: finalizedicadangkan di Jawa.
Basil Bourque
0

Jika objek metode ini dipanggil akan berhenti digunakan, saya hanya akan menggunakan destruktor standar. Itu tidak terdengar seperti kasus, jadi, daripada menjadi terlalu generik, nama yang lebih baik mungkin sesuatu seperti hide()jika objek itu sendiri sedang disembunyikan atau hideUserInterfacePart()jika objek yang tersusun sedang disembunyikan.

Karl Bielefeldt
sumber