Soru: Daha iyi bir mIRC coder nasıl olurum?
Bu soruya basit bir açıdan ele alıyoruz.

sorumuza ek bir soru. neye göre iyi bir coder?
unutmayın ki rakibiniz başkası değil sizsiniz.
daha önceki yazdığınız kod ile şimdiki yazdığınız arasında
iyiye doğru bir gelişme görüyorsanız daha iyi bir codersiniz.

1. ben kod yazıyorum yada yazacam arkadaş diyorsanız
ilk yapacağınız iş mIRC deki string fonksiyonlarını öğrenmek, nedeni basit mirc de %99 yazılar üzerinde çalışacaksınız.

String nedir?
sözlüğe göre ip,sicim veya dizi demek. bilgisayar terimi ile
düz yazı demektir.

mIRC de en çok kullanılan string fonksiyonları nelerdir?
$gettok, $left, $right, $strip, $str, $regex, $regsubex, $mid

$left(selam,1) in s yi döndüğünü biliyoruz
$left(selam,-1) in sela yı döndüğünü biliyormusunuz?
elam ı dönmek içinde $right(selam,-1) i kullanabiliriz

mIRC in helpindeki $right ve $left teki
If N is a negative value, it returns all but N characters.
yazısının ne anlama geldiğini anlamış bulunuyoruz

peki $left $right olmadan nasıl elam ı nasıl elde edecektik:
i. $mid(selam,2,$calc($len(selam) - 1))
ii. $regsubex(selam,(^.),$null)

buradan da anlaşıldığı gibi kodlamada 1 yol yoktur gördüğünüz yollar vardır
ama siz mümkünse bu görebildiğiniz yolların en kısa ve en az işlemlisi olanını seçmelisiniz
ayrıca mIRC in ortalama 950 kusur byte(harf) i desteklediğini unutmamalısınız.
yani siz mIRC 1001 satır uzunluğunda bir string ile işlem yapmak istiyorsanız derdiniz
var demektir. bunu çözmek için:
i. dosyadan okutuyorsanız stringleri 900 er byte şeklinde almalısınız
ii. gelen satırı mesela socketten ise ilk geldiğinde daha $remove ile kırpıp
/sockread teki değere atayabilirsiniz (yada $regsubex)
irc de gelen stringlerin 900 u geçmez eğer irc den gelen stringler ile uğraşıcaksanız
derdiniz yok demektir.

2. // ile senli-benli olun
mesela $regex(deneme,(^d.(e|n)me)) gibi bir fonksiyonu denemek için
aliasesi yada remoteyi açıp alias ile başlayan, bir fonksiyon yazıp
o fonksiyonu çağırmak ile mi uğraşıyorsunuz? VAZGEÇİN
komut satırına:
//echo - $regex(deneme,(^d.(e|n)me))
yazın mirc otomatik evaluate(sonucunu vermek) eder.

3. kendi denediğiniz fonksiyonlarda /echo dan sonra mutlaka - gibi bir karakter koyun
nedeni de echo dan sonra $regex(deneme,(^d.(e|n)me)) gibi bir fonksiyonda olduğu
gibi sayı dönmesi ve mIRC ninde bunu echo nun renk kodu sanmasından dolayı * /echo: insufficient parameters demesi, ve bununda belli bir süreden sonra bizi çıldırtma seviyesine getirmesi .

4. /* */ ve ; leri kullanın
fonksiyon yazıyorsunuz diyelim denemek içinde içine
//echo %değer yazdınız ama kodu yayarken onu unuttunuz
üzerine
;-kaldır
//echo %değer
yazarsanız kodu yaymadan önce ;-kaldır ı aratıp rahatlıkla kaldırabilirsiniz
yada bir fonksiyon için ;bunu çözemedim adi fonksiyon gibi kendinize not bırakmanız
yada benim gibi en üstte
/*
bilmemne fonksiyonunda r/e/c param larına bak
timeri durdur
*/
gibi not bırakın. tabi benim gibi timeri durdur yazarsanız ve 3 gün sonra okursanız ne timeri bu diye aramarsınız .

5. elseif ve else yi bol bol kullanın
mesela gelen %i değerimiz 1 olsun eğer:
if %i == 1 { %i = 2 }
if %i == 2 { halt }

gibi 2 if kullanırsak %i değerimiz ilk önce
%i == 1 e uyar ve %i değeri 2 yapılır, sonrada %i == 2 ye uyar ve işlem durdurulur(halt).

bunu istemiyorsak(ki istemiyoruz) elseif i kullanmalıyız
if %i == 1 { %i = 2 }
elseif %i == 2 { halt }

diyelim bunun sonuna da if %i != 1 && %i != 2 { echo uymuyor } gibi bir if fonksiyonu yerine:
if %i == 1 { %i = 2 }
elseif %i == 2 { halt }
else { echo uymuyor }

basitçe acımadan else yazabiliriz .

6. if lerde bol bol && ve || leri kullanın
if a == b {
if c == d {
yerine
if a == b && c == d kullanmak tekrar gözden geçirir iken size daha kolaylık sağlar

bunları yazarkende
&& = ve
|| = veya
olarak düşünürseniz ne kadarda kolay olduklarını anlarsınız.
&& ve || kullanırken () leride kullanın.
if a == b && (c == d || e == f) { <- burada a b ye eşitse ve c ve d eşitse veya e ve f eşitse uyguladır
parantez koymasaydık
if a == b && c == d || e == f { burada sadece e ve f eşit olsa idi fonksiyon doğru değeri dönüp işlem yapardı
biraz karışık, pratik gerektiriyor.

7. kodu yazarken mümkünse | kullanmayın
yukarda kullan burada kullanma dedi ne alaka diyorsanız bu | işaret bir sonraki komut işareti örn:
/echo denem | /echo deneme2 <- gibi
bunu kullanmayın dememdeki amaç kodu yazarken | kullanırsanız hata olunca bulmanız aşırı derecede zorlaşır
tamam yayınlarken kod çorbası olsun istiyorsanız | ile kısaltıp yayınlayın ama yazarken basit şeyler dışında
mümkünse kullanmayın. basit şeylere örnek aynı dialogda işlemler için örn: dialog -r $dname 2 | dialog -a $dname 3 deneme gibi.

8. goto kullanmayın
c dersinde hocamız(tamam bilgisayar programcısı yada mühü değilim ,daha farklı bir müh) bunu dediğinde mIRC de felan kullandığımdan direk niye diye atladım ama tatmin edici cevap alamadım. mircoprocessor dersinde assembly öğrenirken goto(JNZ,JMP) kullanınca belirli bir byti geçince owerflow olması biraz fikir verir gibi oldu ama asıl sebebini software engineering dersinde öğrendim.
Evet meşhur sebebi, programı trace(deneme) yaparken yada hata ayıklarken goto kullanırsanız takip etmenizin okadar zorlaşabildiğini biliyormuydunuz. o yüzden ne yapıyoruz goto kullanmıyoruz goto kullanmadan yapılamıyorsa mutlaka bir şeylerde if leri atlamışızdır yada while göngülerinden çıkmak için break komutunu bilmiyoruzdur.
tamam arada sırada bir kaç tane kullanmaktan zarar çıkmaz yinede .

9. while döngüsü içinde while döngüsü kullanmayın
iki döngüyü iç içe sokmak bayağı bir işlem zamanı gerektirir mümkünse bundan sakının.

10. set %değer yerine var %değer kullanın
hem %değer değeriniz fonksiyon bitiğinde hafızada kalmaz hemde tanımlamanız kolay bile olabilir
var %değer1 = değeri, %değer2 = değeri ... gibi
eşitlemek içinde %değer1 = %yenideğer
tabi kalmasını istiyorsanız set kullanın tabiki.