şükela:  tümü | bugün
  • c++ dilinde belirli bir objenin tanımlı ve scope içinde olduğunu kontrol etmeye yarayan sistem fonksyonu
  • void assert( int expression );
    aslinda ansi-c de tanimli bir makrodur. expression alani false oldugu zaman asagidaki gibi hata mesaji basarak programdan cikar.
    ornegin:

    char *katar_dizisi_isaretcisi;
    .
    .

    assert( katar_dizisi_isaretcisi != null ); /*katar_dizisi_isaretcisi nal olamaz */
    /*eger bir olursa bak boyle olur*/

    assertion failed: katar_dizisi_isaretcisi != null, file assert.c, line 24

    abnormal program termination
  • ing. iddia etmek, beyan etmek ya da ileri sürmek.
  • bu fonksiyon c'de olduğu gibi swift'de de var ancak sadece debug modunda çalışıyor ve eğer parametre false ise programı sonlandırıyor. hatta swift 2 ile try-catch bloklarında ayrı ayrı yapmak yerine try! keywordü kullanılarak da kısmen aynı iş yapılabilir.
  • esasında bir macro olarak tanımlı olan ve argüman olarak aldığı ifadenin doğruluk durumuna bağlı olarak diagnostic mesaj almayı sağlayan, faydalı bir debugging aracı.

    bu macro'nun temelde yaptığı şey, argümanın false değer alması durumunda hata mesajını stderr'ye yazmak ve abort fonksiyonunu çağırmak suretiyle process'i sonlandırmaktır. benzer biçimde, unix/linux sistemlerde ise yine abort fonksiyonu sigabrt sinyalini raise ederek, process'i sonlandırır.
  • tanim : programlama dillerinde bulunan bir terim. diger terimler de oldugu gibi , bu keyword'du de bir degisken ismi olarak atayamazsiniz. ıf'e benzer bir yapisi vardir. fakat farkliliklari coktur. okudugum ve edindigim kaynaklardan baslica farklari sunlardir :

    * runtime aninda kullandiginiz kodlari kontrol edebilmenizi saglar. yani runtime aninda calistirilabilir. san diego universitesinde ki bir asistan profesor soyle demis: ornegin kodlar a varsayimiyla calisiyor ve bu a varsayimini true olarak kabul edelim. genellikle comment atilir ve buraya true denilir. comment atilan yerler ise genellikle gecmis tarihlidir ve unutulur. assert kullanimi, kod tekrardan yorumlanacagi zaman yardimci olur
    * bir assert deyimi basit bir anlatisla boolean kondisyonu denilebilir. eger assert icerisinde ki sorgu eger true ise program hicbir sey yapmadan devam edecektir. fakat false ise 'immediately' acil bir sekilde durdurulacaktir. ornegin assert x => 0 da x' in karekok islemi sonucu oldugunu dusunursek , karekok islemi sonrasinda hicbir zaman negatif olmayacagini kesin olarak biliyoruz.
    * ornegin bir proje yazdiniz ve kodlari parca parca yazdiniz. yazdiginiz kod parcalarini debug etmek istiyorsunuz, 'failures appear earlier and closer to the locations of the errors, which make them easier to diagnose and fix. ' denilmistir.
    * assert ifadesi kesinlikle emin oldugunuz kod parcalarinda kullanilmalidir.
    * projenizi bir kod butun degil de , parcalara ayrilmis bir kod butunu olarak gorebilirsiniz , bu sayede hangi noktaya kadar geldiginizi ve o noktaya kadar programin dogru calisip calismadigindan emin olabilirsiniz. 'when execution reaches a certain point, certain conditions are guaranteed to be met.'
    * peki assert ifadesi proje calisma suresini dusururmu adli bir soruda da su sekilde cevap verilmistir : gelistirilme suresi boyunca performans ilk dikkat etmeniz gereken yer degildir. gelistirme suresi ve kod kalitesi genellikle performanstan once gelinir ('bence iddiali bir konusma olmus') assert deyimi, projenizde gozle gorulur , olculebilir surelerde yavaslamalara neden olmaz. eger gercekten paranoyaksaniz : 'if you're really paranoid, surround your assert statements with an if guarded by some global const debug variable that you can switch off'.

    * birde python uzerinde ornek verecek olursam ,

    foo = 'hello'
    assert foo == 'hello' , 'x should be "hello"' #herhangi bir hata vermeyecektir .

    foo = 'hello'
    assert foo == 'hi' , 'x should be "hello"' #assertionerror: x should be "hello" hatasi verecektir.
  • ing. öne sürmek, ileri sürmek.