İçindekilerGirişİndex
YukarıİlkÖnceki YokSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Sık Yapılan Programlama Hataları

Bir program yazarken hata yapmamanız mümkün değil. Sürekli hata yapacaksınız. Önemli olan bu hatayı çabuk görüp düzeltebilmek. Java'da kodu derlediğinizde size hata mesajlarını gösterecektir. Eğer java bilginiz iyi ise bu hataları hemen çözersiniz. Ancak javayı yeni öğreniyorsanız bu hataları bulmanız ve çözmeniz zor olabilir. BT dershanesinde java öğretmeni olduğum için öğrencilerin hangi hataları sık yaptığı konusunda bilgi sahibi oldum. Bu yazıda bu sık yapılan hatalardan bahsedeceğim.

İmport

En çok yapılan hatalardan biri bir paketteki class'ı kullanıp o paketin import edilmemesidir. Bu nedenle derleyici böyle bir class'ın olmadığı gibi bir hata mesajı verir. Bu konuda diğer yapılan hata ise bir paket * ile import edildiğinde alt paketlerinde import edileceğini zannetmektir. Örneğin java.awt.* import etmeniz java.awt.event paketinin import edildiği anlamına gelmez. java.awt.event paketini ayrı olarak import etmelisiniz.

Scope

En çok hata bu konuda yapılıyor. Scope bir değişkenin yaşama alanı olarak düşünülebilir. Java'da yarattığınız bir değişkene her yerden erişemezsiniz. Değişkeni yarattığınız yere göre bu işlem değişir. Örneğin bir fonksiyon içinde bir değişken yarattıysanız bu değişkeni bu fonksiyonun dışında herhangi bir yerde kullanamazsınız. Örneğin aşağıdaki kodda bu tür bir hata bulunmakta.

class A{
	void set(){
		int a=4;
		...
	}
	void get(){
		int b=a*2; //burada a kullanılamaz.
	}
} 

set fonksiyonu içinde tanımlanmış bir a değişkeni get fonksiyonu içinden kullanılmaya çalışılıyor. Bu kod derlendiğinde hata oluşur. {} içinde yaratılan değişken ancak içerde kullanılabilir. Class'larda kullanılan değişkenler içinde aynı şey geçerli. Aşağıda A class'ı içinde yaratılan bir değişkene B class'ından erişilmeye çalışılıyor. Bu kod hata oluşturur.

class A{
	int a=5;
	...
} 
class B{
	int c=a*2;
}

Ancak bir class değişkeni private değilse ClassAdı.değişkenAdı (örnekte A.a şeklinde) şeklinde erişilebilir.

Fonksiyonun Dışında Kod Satırları Yazmak

Bir class içinde kurucular,değişkenler ve method'lar bulunur. Yazılan bir kod, kurucu veya method'ların içinde olmalı veya bir değişken ataması veya deklerasyonu olmalıdır. Örneğin aşağıdaki gibi bir ifade yanlıştır.

class A{
	boolean b=true;
	if(b){
		..
	}else{
		..
	}
	
}

yukarıdaki if-else bloğu yanlış yerdedir. Class'ın hemen içinde olamaz. Ya bir method'un ya da bir kurucunun içine koymanız gerekir.

Class İsmi ile Dosya İsmini Farklı Yapmak.

Java'da kod dosyaları ClassAdı.java şeklindedir. ClassAdı.java dosyasının adı ile içindeki public class'ın adı aynı olmalıdır. Örneğin Test.java dosyası aşağıdaki gibi olursa bir hata oluşur.

class Test1{
	...
}

Düzeltmeniz için ya class adını Test yapacaksınız ya da dosyanın adını Test1.java yapacaksınız.

Bir Paketteki Class'ın "package" İfadesini Kaldırmak.

Java'da her class istenilen pakete koyulabilir. Örneğin aşağıdaki class'ı com.godoro.tools paketine koyuyoruz.

package com.godoro.tools
class A{
	...
}

Bu class'ı yarattıktan sonra package ile başlayan satırı silerseniz derlediğinizde derleyici hata verir. Çünkü A.java dosyası com\godoro\tools klasöründedir. Siz package ifadesini silerseniz paketi olamayan bir class yaratmış olursunuz. A.java dosyasını com\godoro\tools klasörü içinden kaldırmanız gerekir.

Varaolan Bir Class ile Aynı İsimle Bir Class Yaratmak

Vector class'ı java.util paketindedir. Eğer sizde Vector ismiyle bir class yaratırsanız iki class ismi aynı olacaktır. Örneğin aşağıdaki gibi kod olamaz.

import java.util.*;
class Vector{
	Vector(){
		Vector v=new Vector();
		v.add("A");		
	}
}

Burada derleyici Vector'un add method'un olmadığını söyleyecek. Vector sizin yarattığınız class'tır ve sizin yarattığınız class'ta add method'u yok. Bu yüzden kendi yarattığınız class'a başka bir isim vermelisiniz. ancak aynı ismi vermekte israr ediyorsanız java.util paketindeki vectoru kullanmak için

java.util.Vector v=new java.util.Vector();

şeklinde Vector class'ının tam adını yazarsınız. Böylece sizin yaptığınız Vector ile util paketindeki Vector çakışmamış olur.

İçindekilerGirişİndex
YukarıİlkÖnceki YokSonrakiSon
Geriİleri
Yazdır