İlklendirmenin (veya init) tersi nedir? [kapalı]


94

Terim bir yöntem adı olarak kullanılacaktır. Bu yöntem, kullanıcı arayüzünün bir kısmı gizlendiğinde (veya kaldırıldığında) çağrılır ve değerleri varsayılana sıfırlamak ve artık kullanılmayacak nesneleri elden çıkarmak için kullanılır.

Muhtemel isimler şunlardır: salıvermek, kaldırmak, elden çıkarmak, temizlemek vs.

Sizce en uygun hangisi?


1
Yıkım? (daha fazla harfe ihtiyacınız var)
Deiwin

31
Bunun nasıl yapıcı olmadığını göremiyorum, aşağıdaki cevapların hızlıca taranması birçok geliştiricinin çok fazla zıtlamadığını gösteriyor. IMO yöntem isimleri çok önemlidir ve "başlat" ifadelerinin net bir zıtlığı yoktur, ancak genel ve yararlı bir terimdir.
earcam

2
Maalesef, soru kapatıldığından beri artık bir cevap ekleyemiyorum (earcam'ın dediği gibi: Bu nasıl yapıcı değil?), Bu yüzden cevabımı buraya ekleyeceğim. Kısacası, yorum dostu formu şudur: Kullanım Initializesen seçeneğini yalnızca değil bir zıt anlamlı gerek! Birine ihtiyacınız varsa başka bir fiil seçin (çoğu zaman daha açıklayıcı bir alternatif vardır). Daha fazla referans için GitHub’daki programcılar için zıt listemi veriyorum .
Max Truxa

3
Ben de aynısını sorduğumda cevapları çok faydalı buldum. Kapatılmamalıydı.
Ian Goldby

3
Katılıyorum ... bu soruyu kapatmak hiç de yardımcı değil.
Ocak'ta 16.06

Yanıtlar:


79

Kullanırım :

  • ) (Başlat
  • () Sona

Daha uygun buluyorum:

  • Kodda görmemek zor, çünkü her ikisi de uzun kelimeler (init kullanmıyorum)
  • doğru ingilizce (AFAIK)
  • kafamda, sonlandırma belirsizlikten kaçınır. Başlangıç ​​(hangisi bitiş ile eşleşir), başlangıç ​​(hangisi dur ile eşleşir), oluştur (hangi imha ile eşleşir), kurulum (unset ile eşleşen), yük (unload ile eşleşir) vb. İle eşleşmez.

Bazı insanlar buna rağmen bir zevk meselesi bulabilirdi.


6
İçin +1 terminate(). Kullanım koşullarında genellikle belirgin ve muhtemelen makul şekilde uygulanabilir olduğunu düşünüyorum.
Ben Hocking

9
"Sonlandır" ile tamamen aynı fikirdeyim, diğer tüm öneriler kesin, iyi bilinen zıt kelimelerle yazılmış; yok et (yarat), tearDown (kurulum), kapat (açık), serbest bırak (edin), vb. Geliştiricilerin bunu görememesi şaşırtıcı.
earcam

Kertenkele. Onlarla işim bittiğinde nesnelerle yaptığım şey bu. (Ama Terminate ikinci tercihim olur.)
Nicki

3
@Nicki Her nesnenin imhasında pencereleri yeniden kurmak zorunda kalmak pahalı gibi
gözüküyor

Earcam belirtildiği gibi : set up(eşleşir tear down) değil setup(İngilizce dilinde böyle bir fiil yoktur).
Max Truxa

25

Nesnelerin işlevine bağlı olarak genellikle Sonlandır, Yok Et veya Sonlandır ile giderim.

Tarif ettiğin dava için, Finalize, planımı temel alarak giderim.


Maalesef, 'Finalize' ifadesi bir eş anlamlı veya 'Initialize' zengini olabilir, bu yüzden genel olarak kötü bir seçim olacağını düşünüyorum. Ancak 'Yok' ve 'Sonlandır' yarışmacılar. "Nihai ya da bitmiş biçime sokmak" ifadesi için mw.com/dictionary/finalize adresini ziyaret edin. Bu şekilde kodda kullanıldığını bile gördüm. Yani, bir nesneyi sonlandırmak, başlangıçtaki son adımdır. Buna karşılık, Java'nın Object sınıfı, finalize()nesneye artık başvuru olmadığını belirten bir yönteme sahiptir .
Ben Hocking

@BenHocking "Nihai ya da bitmiş form koymak" yanlış yoldan alıyorsunuz bence. Bana göre bu, nesneyle işiniz bittiği ve tüm özellikleri temizleme / sıfırlama zamanı demektir. OP yapmak istediğini söylediği şey bu. Bence bu tanım benim davamı kanıtlıyor.
Brian Dishaw

Ayrıca, neden aşağı oyladığına dair herhangi bir geri bildirim? (Sanırım @BenHocking olmadığını farz ediyorum ki, oyuncu düşürücü olduğunu göstermedi.)
Brian Dishaw

a) Haklı olmadığım için oy kullanmadınız. Öneriniz makul ve bu tartışmanın faydalı olduğunu düşünüyorum. b) Finalize () 'in tam olarak belirtilen anlamda kullanıldığını gördüm. Örneğin, Delauney üçgenleşmesini hesaplayan bir sınıfta, tüm noktalar eklendikten sonra, sonuçların kullanılmasından önce ek bir hesaplama yapmak için finalize () çağrıldı. Bu durumda, nesnenin değişiklik için artık açık olmadığını, ancak üçgenleştirme sonuçlarının elde edilmesi için hala kullanım için uygun olduğunu belirtti.
Ben Hocking

14

releaseNesneleri ve diğer kaynakları elden çıkaran bir yöntemi severim (örneğin, imha hazırlık olarak). resetDeğerleri varsayılana sıfırlayan bir yöntem seçerdim .

"Varsayılan" durum herhangi bir kaynak gerektirmiyorsa, işlemlerinin bu bölümünü gerçekleştirmek resetiçin çağrı releaseyapabilir.


6

close()

Henüz kimse close () önerisinde bulunmadı. Java 7, yeni bir "kaynakları dene" özelliğine sahiptir. Otomatik olarak temizlenen bir sınıf, tek bir close () yöntemine sahip olan java.lang.AutoCloseable uygulamak zorundadır. shutdown () veya cleanup () da iyi olabilir.

Değil finalize()

finalize (), Java'daki çöp toplayıcıya özgü bir şey anlamına gelir ve çalışma şekli biraz gariptir. Java'nın finalize () işleviyle tam olarak ne yapmasını istemiyorsanız, finalize'den () uzak dururum.


2
Java'da finalize () hakkında geçerli bir noktaya değindiniz ... ancak OP, sorunun özel olarak Java ile ilgili olduğunu ve hiçbir yerde "yöntem adları" olan (örneğin, C ++) herhangi bir OO dili olmadığını gördüğümü göstermedi.
EliSko

C #, Finalizesınıfların örneklerini imha etmek için kullanılır.
Olivier Jacot-Descombes,

4

'Yok etmeyi' çok seviyorum. Bir video oyunu yazmıyorsan daha net olamazdı.


4
Aklıma "yok", "yarat" ile eşleştirildi.
EliSko

4

Eylemin isteğe bağlı mı yoksa gerekli mi (kaynaklar sızıntısı olmadan) ve dilin yapıcıları / yıkıcıları destekleyip desteklemediğine bağlı olduğunu söyleyebilirim. İsteğe bağlı durumlar için kullanıyorum:

  • açık
  • Sıfırla
  • gizle (UI bağlamında)

Karşıt eylemin gerekli olduğu diğer durumlarda (kurucu / yıkıcı olmayan dillerde veya yıkıcı kaynağı serbest bırakmadığında) kullanıyorum:

  • init - fini
  • başlat - deinitialize
  • oluştur - yok

Senin durumunda tercih edeceğimi düşünüyorum hide. Eğer isterse yine de belleği / kaynakları serbest bırakabilir - önemli olan isteğe bağlı olması, yani eğer yapmazsanız yıkıcı onunla ilgileneceğidir.


3

İlk düşüncem parçalamaktı, ancak birçok test çerçevesinde kullanılıyor. Sonlandırın ve elden çıkarın benzer sorunlar var. Sıfırlama veya temizleme her ikisi de iyi seçimler gibi görünüyor. Yeniden başlat, başlangıç ​​durumuna geri döndüğünü açıkça gösterir; bu, gittiğiniz durum başlangıç ​​durumuysa iyi olur.

Teriminizin geçerli bağlamınızda aşırı yüklenmediğinden emin olun.


Bunun nasıl bir problem olduğunu anlamıyorum. Verildi Finalizeve Dispose.NET kodunda değil. Bundan başka, isimleri yeniden kullanmakta bir sorun görmüyorum.
Konrad Rudolph

1
@KonradRudolph Yerleşik bir ismin tekrar kullanılması iyi, eğer kavramlar çok iyi uyum sağlarsa. Listelediğim terimlerin hiçbiri, onu tanımlamakta ne anladığımı iyi bir şekilde uymuyor. Bu yüzden, düşündüğümüzü düşündüğünüzden daha kafa karıştırıcı olurdu, bunun ne olduğunu biliyorum ve yanlış olun.
Sign

3

ve değerleri varsayılana sıfırlamak ve artık kullanılmayacak nesneleri elden çıkarmak için kullanılır.

resetnesneyi varsayılanlara sıfırlarsanız iyi bir terim gibi görünür. reinitializeBu nesnenin kullanımı ne yaptığına benzer ise, uygun olabilir initialize. Bu yöntem , mesajı alan nesneyi değil diğer nesneleri elden çıkaracak gibi görünüyor , bu durumda yukarıdakilerden herhangi birinin iyi olması gerekir. Gerçekten de bunun karşıtı yapıyorsanız initve alıcının imha edilmesini hazırlıyorsanız, disposeiyi bir seçim olacaktır.


1

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

Finalize ile giderdim. Bununla birlikte, kesin kullanım durumunun biraz bağımlı olduğunu düşünüyorum: örneğin, kaynakları serbest bırakmak için kullanıyorsanız, bağlantıları kapatın, dosyalar daha sonra yayınlar daha anlamlı olacaktır.

Genel kullanım için bir fikir arıyorsanız veya standartlaştırıyorsanız, daha az anlamlı, serbest bırakma veya kaldırma gibi özel bir anlamı olmayan bir şey seçerdim.

İnit vs kavramı (neyse) benzer (yapıcı vs yıkıcı) veya java sonuçlarında.

( Not : Dil kavramı nesneleri inşa edip yok ederse, init () kullanmaya çok az gereksinim duyar veya gerek yoktur.)


Bilginize: finalizeJava ile saklıdır.
Basil Bourque

0

Yöntemin çağrıldığı nesne kullanılmazsa, standart imha cihazını kullanırdım. Her ne kadar kulağa hoş gelmiyor olsa da, jenerik olmaktan ziyade, daha iyi bir isim muhtemelen hide()nesnenin kendisi gizleniyorsa veya hideUserInterfacePart()oluşan nesneler gizlendiyse böyledir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.