“Doğru”, “yanlış” ve bir boole geçişi için terminoloji var mı? [kapalı]


23

Diyelim ki teknik bir toplantıda kodumu açıklamaya çalışıyorum.

İlk önce, booleanı foobarolarak ayarladım .true

ve

İkinci olarak, boole set foobariçinfalse

biraz wordy görünüyor. Eğer foobartoggled edildi, muhtemelen, denebilir

Üçüncü olarak, geçiş yapıyorum foobar

Buradaki ima yoluyla, bunun bir boole olduğunu biliyorsun. Öyle yapmamalı mıyım:

Dördüncüsü, ben foobar gerçeği

ve

Beşinci olarak, ben tahrif filanca

Hangi ima yoluyla da, dinleyicilerime bir boole değişkeni ile karşı karşıya olduğumuzu söyleyeceğim? Bunun için uygun bir terminoloji var mı? Teşekkürler.


16
“Foobar'ı true / false olarak ayarladım” bu endişe değildir ve bunun bir bool olduğu açıktır. “Geçiş” dinleyiciler için oldukça açık, IMO.
Filip Milovanović

8
"İlk olarak, boole foobarını true olarak ayarlayın, İkincisi, boole foobarını false olarak ayarladım". İlk başta onu yanlış ayarlayamaz mıydın? ;)
David Arno

2
Ben her zaman saygısızlık olarak adlandırıldığını düşündüm, ama görünüşe göre bu bitler için terim ,
bools

16
Bir sahtekarlık yaratmaya eşdeğer olarak yanlış okurdum ve değeri yanlış olarak ayarlamazdım.
CodesInChaos

6
Kodunuzu bu kadar düşük seviyede açıklamanız beklendiğinden emin misiniz? Şüphesiz birisi bu kadar düşük bir seviye açıklaması isterse, sadece kodu okurlardı. Böyle bir terminolojiyi kullanmak için asla bir neden olmadığını söylemiyorum , ancak nadir olmasını beklerdim.
Dukeling,

Yanıtlar:


52
  • Gerçek bir değer girildiğinde edilir ayarı onu
  • Yanlış olarak ayarlamak onu temizliyor .
  • Mevcut değeri değiştirmek onu değiştiriyor .

Tabii ki "doğruya ayarlamak " ve "yanlışa ayarlamak " da kullanabilirsiniz .


10
Bir değeri ayarlamakla, onu silmek gibi yanlış olarak ilişkilendirmiyorum. Benim için temizlenmesi demek: ne doğru ne de yanlış.
Pieter B,

49
@ PieterB: Bağlamına göre değişir; eğer bir Boole bayrağı hakkında konuşuyorsak, o zaman "ayarlamak" ve "temizlemek" oldukça yaygın bir terminolojidir.
Filip Milovanović

7
@ FilipMilovanović Değişkenler bağlamında, bir değişken ayarlamak, söz konusu değişkene bir değer atamak, boolean değişken bağlamında bu değer doğru veya yanlış olabilir. Söylemek garip olurdu: hey, bir değişkene ayarlamak, bir değere değer vermek anlamına gelir ... bir boole değişkeni olması dışında, sonra gerçekte onu ayarladığımız zaman, şu değeri veririz: "true"
Pieter B

6
@PieterB "Ne doğru ne de yanlış" olabilirse, o zaman bir ikili boolean (çoğu insan kelimeyi duyduğunda ne düşündüğüdür), ama üçlü bir doğru / yanlış / belirsiz şeydir. Olduğu söyleniyor, açık / net terminoloji bayraklardan geliyor. Tüm boole değişkenleri bayrak değildir, bu nedenle terminoloji birçok kullanım durumu için uygun değildir.
Kübik

7
@PieterB: Evet - "bool değişkenini ayarla" demek ve herkesin onu "doğru olarak ayarlamak" anlamına gelmesini beklemek garip olurdu; ancak bir bayrağı temsil ederse, "bayrağı ayarla", yaygın olarak kullanılan bir şeydir ve bayrağı temsil eden boolun değerini (veya bayrağı temsil eden biti 1) ayarlamak anlamına gelir. (PS Ancak immibis'in cevabı bunu hesaba katmıyor.)
Filip Milovanović

66

Mümkünse, boolean değere odaklanmak yerine, neyi temsil ettiğini açıklamaya çalışmalısınız. Bazı örnekler:

  • servis? Başlatmak yerine start / stop = true / false
  • oyun motorunda özel bir efekt? açık kapalı
  • elektrik sinyali mi? set / reset
  • ...

Bu şekilde daha doğal terimlerle konuşursunuz. Ve böylece toplantınızda, "foobar'ı doğrulamak sonra tahrif etmek yerine" basitçe "foobar'ı başlatıp durdurun" yerine (foobar gerçekten bir hizmetse).

Gerçekten bir boolean değeri hakkında konuşmanız gerektiğinde, "set / reset" veya "true olarak" ve "false" olarak ayarlayabilirsiniz. "Geçiş" tüm bağlamlarda kulağa oldukça hoş geliyor.

Eğer bir boolean mağazasında çalışıyorsanız (bu ne anlama gelebilirse), o zaman muhtemelen sözlükten daha fazla kelimeye ihtiyacınız olacak. Bu durumda, doğrulamak ve tahrif etmek basitçe sizin mikro konuşmanızın bir parçasıdır .


16
Kabul etmelisiniz ... boolean, GERÇEKTEN bahsettiğiniz şeyi modelleyen uygulamadır ... bu yüzden bunun hakkında konuşun!
Maybe_Factor

2
Gerçekleştirmek için bir boolean yapmaktan bahsetmekten hoşlanmıyorum. Çünkü değişkenlerle çalışma biçimim başlatılmamış olarak başlıyor, yani temelde onları henüz kullanamıyorsunuz ve bir değişken ayarlama (doğru veya yanlış) eylemi başlatılıyor. Her zaman gerçek demek için ayar yapmak karışıklığa neden olur.
Pieter B

1
Ayrıca, terminolojinin bu kullanımı da kod anlamına gelir; Genellikle - her zaman elbette değil - yerleşik boole türü yerine iki değerlik bir enum kullanmak daha iyidir; signal = HighVoltageveya signal = ActiveIMHO'dan çok daha net signal = true.
Kübik

Düzgün bir şekilde adlandırılmış bir boolean özellik / değişkenin her zaman değerler için kullanmanız gereken adı hemen göstereceğini unutmayın. Düşünün isStarted, isActive, isCaseSensitive, mockConnectionben kısmen size katılıyorum: ... @PieterB. "Booleanı ayarla", doğal olarak onu true olarak ayarlamak anlamına gelmez. Bununla birlikte, " isActiveBayrağı ayarla ", doğru olarak ayarlanacağı anlamına yorumlanabilir.
Flater

1
@ Cubic: Ben katılmıyorum. Gelecekteki genişleme bir yana, ikili bir enum gereksiz görünüyor. signal = trueGerçekten açık değil, ama eğer kullanacaksanız, signal = Activeo zaman da kullanabilirsiniz isSignalActive = true. Bunun esas olarak açıkça birbirini dışlayan ve kesin tamamlayıcı olan tanımlayıcılar için geçerli olduğunu unutmayın. Aktif / Aktif Değil faturaya uyar. Yüksek Gerilim, "yüksek gerilim değil", örneğin "düşük gerilim" veya "düşük veya orta gerilim" anlamına gelebileceği için yapılmaz. İkinci durumda, boole argümanı açıkça geçerli değildir. Eskiden, öyle.
Flater

2

Ben "set" / "clear" komutunu beğendim, fakat ifadelerinizde belirsizliğe dikkat edin. Filip'in işaret ettiği gibi , "bool değişkenini ayarla" değişkene bir değer yazmak anlamına gelebilir. Ancak "bayrağın ayarlanması" daha açıktır.


İlgili terminoloji: 0 / sıfır olmayan bir tamsayı 0/1 değerine dönüştürmek "booleanizing" olarak adlandırılır .

Gerçekten de 0/1 değerini tam sayı olarak kullanırsanız (doğru / yanlış yerine bool), bu sözcüğü kullanmak isteyebilirsiniz. Aksi halde, sadece derleyicinin gerçekleştirmesi gereken işlemlerin maliyetinden söz ediyorsanız ortaya çıkacaktır. (Ya da her bir vektör öğesinde hepsi bir arada / hepsi bir bit üretmek için bir SIMD karşılaştırması ile elle vektörleştiriyorsanız).

C ve C ++ 'da, bir boolörtük olarak 0 veya 1 olarak bir tamsayıya dönüştürebilir ve normal uygulamalarda bool0 veya 1 (yalnızca sıfır olmayan bir değer değil) bir bayt değer olarak depolanır. Verimli a && bolmasına rağmen pratikte birçok C derleyicisi optimizasyonları kaçırmıştır .


bool booleanize(int a) { return a; }   // C++

Bu işlev ret, çoğu mimaride (dahil değildir ) birden çok talimat için derlenir . (MIPS, ilginç bir istisnadır, ayrı bir bayrak / durum kodu kaydı yerine, kayıt karşılaştırması talimatına sahiptir). x86-64, MIPS ve ARM thumb için Godbolt derleyici gezgininde , x86-64 sürümünü görüyoruz:

    test    edi, edi    # set flags according to   a & a
    setne   al
    ret                 # return value in AL, the low byte of RAX

Maalesef ne booleanizing için biraz büyük / konu dışı!


0

Bence " doğruya Foobarset" ve " Foobaryanlışa set " basit ve özlüdür. Bu ifadeler için tek tek kelimeler olduğuna inanmıyorum ve hem teknik hem de kesin olmanız gerektiğinde, bazen kitlenizi şaşırtma riskinden biraz endişe duymaya istekli olmak daha iyidir.


-1

"Ayar", bir değişkene değer atama eylemini tanımlamanın doğru yoludur. Eğer bu konuda bilgili olmak istersen, "atama" diyebilirsin, ama "set" çok yaygındır. Aslında, atama yapmak için yöntemler yazmak setFoobar()(ve getFoobar()) aptalca Java . C # getve setözellik tanımlarıyla daha ileri bir adımı atıyor .

“Doğrulama” ve “yanlışlama” ile ima etme yoluyla ikinci noktaya gelince, dinleyicilerime bir boolean değişkeni ile karşı karşıya olduğumuzu söyleyin ”deyince, dinleyicilerinize zaten değişkenin Boolean olduğunu söyleyin:

Ben set Foobariçintrue


1
Boolean özellikleri döndüren yöntemler için Java'daki "standart" aslındaisFoobar()
JimmyJames

-1

Assert veya Retract , aynı zamanda, örneğin Prolog'da basit değişkenlerden ziyade önermeler hakkında konuşurken de kullanılabilir. Genellikle, booleanın neyi temsil ettiğine bağlı olarak, bool değerleri olan tüm diller için genel bir terimden ziyade farklı terimler vardır (bayrak veya bit belirleme / silme, cihazı veya modu etkinleştirme / devre dışı bırakma, önerme / geri çekme teklifi, muhtemelen daha fazlası).


Ben hak verirdim assert (ifade zaten doğru değilse, örneğin bir istisna atma) zaten başka bir şey diğerlerinden farkı anlamına geldiğini bir programcı için dışında.
ChrisW

@ChrisW Prolog'u programlayan insanların programlayıcı olmasalar da ne olduğunu düşündüğünüzü bilmiyorum, ancak 1972'de Prolog'da kullanıldı, bu yüzden mevcut anlamı değiştiren C makrosu.
Pete Kirkham

-1

Bir boolenin değerini, olarak truedeğiştirmek falseveya tam tersi için olumsuzlama denir .

Bir boole değerini ayarlamak, boole değerini tahrif etmek falseolarak söylenir . “Doğrula” derseniz sizi anlarım, ancak bu doğru gelmiyor. Bir şey yapmak için fiilin ne olduğundan emin değilim , bu yüzden doğru olabilir.true

Willy-nilly "truthify" kullanmaya başlamadan önce daha iyi cevapları olan birini beklerdim.


1
Buradaki sorun, olumsuzlama , tahrif etme terimlerini kullanabilmenizdir , ancak sırasıyla değiştirme ve sıfırlama / temizleme işlevini kullanırdım. Aslında bu soruyu okuyana kadar, asla sahtekârlıkla karşılaşmam . Belki de sadece yaşlanıyorum ve bu yılın modaya uygun şartlarına
David Arno

7
'falsify' ingilizce dilinde, boolean değişkenleri kullanımınızla gerçekten uyuşmayan bir anlamı vardır; Eğer "tahrif" sizsiniz, sizin değişkenleri söyleseydi ben olabilir söylemeye çalıştığını anlıyorum, ama sen sahip oldukları değerleri hakkında yalan söylediğini anlatmaya çalıştığını olarak ilk parse olur.
Kübik

1
IMO, "tahrif etme" nin tam tersi, "İngilizce" olur, ancak bu ("iddia") bir programcıya yanlış izlenim verir.
ChrisW

-3

Bir boolean, bir SPST (tek kutuplu, tek atış) elektrik anahtarının eşdeğeridir: biri onu açar ya da kapatır .


2
" doneDeğişkeni aç" veya " errorDeğişken kapalı" ikisi de en azından benim için biraz kapalı. Diğer cevaplar tarafından önerilen alternatifler daha yaygın görünüyor - " done/ bool / flag değişkenini [true] olarak ayarla " veya " errorBayrak temizlendi."
Sebi
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.