CodeGym /Kurslar /Java SELF AZ /Kompilyatorun məşhur səhvləri

Kompilyatorun məşhur səhvləri

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Nöqtəli vergül unutmaq

Java-da yeni proqramçıların ən çox buraxdığı səhv - nöqtəli vergüldür. Daha doğrusu, onun lazım olan yerdə olmamasıdır.

Metod daxilindəki hər bir əmrin sonunda nöqtəli vergül olmalıdır. Nöqtəli vergül - bu əmrlərin ayıracıdır: biz bununla Java-kompilyatoruna bir əmrin harada bitdiyini və növbəti əmrə harada başlanıldığını anlayırıq.

Səhv vəziyyətlərin nümunələri:

Səhv kod Düzəldilmiş kod
int a
int b = 5
int c = a + b
int a;
int b = 5;
int c = a + b;
System.out.println("Salam")
System.out.println("Salam");
if (2 > 3)
   System.out.println("Biz Avstraliyadayıq?")
if (2 > 3)
   System.out.println("Biz Avstraliyadayıq?");


2. Dırnaq işarələrini bağlamağı unutdunuz

Java-da yeni başlayanların ən populyar ikinci səhvi — kodda mətn yazıb dırnaq işarələrini bağlamağı unutmaqdır.

Koddakı hər bir mətn iki tərəfdən qoşa dırnaq işarəsi ilə əhatə olunmalıdır — «"». Yeni başlayan proqramçılar çox vaxt mətnin əvvəlində dırnaq işarəsi yazır, amma sonda bağlamağı unudurlar.

Belə vəziyyətlərə misallar:

Xətalı kod Düzəldilmiş kod
String s = "Salam;
String s = "Salam";
System.out.println("Hello);
System.out.println("Hello");
String s = "Salam";
String message = s + " və hələlik. ;
String s = "Salam";
String message = s + " və hələlik.";


3. Sətirləri birləşdirərkən "+" işarəsi unudulub

Sətirlərlə işləmək zamanı ən çox rast gəlinən səhvlərdən biri - sətirləri birləşdirərkən "+" işarəsini yazmağı unutmaqdır. Bu səhv xüsusilə kodda uzun ifadədə mətn və dəyişənlər birləşdirilərkən tez-tez baş verir.

Belə vəziyyətlərin nümunələri:

Səhv kod Düzəldilmiş kod
String s = "Salam";
String message = s  " və sağ ol.";
String s = "Salam";
String message = s + " və sağ ol.";
int age = 35;
System.out.println("Yaş=" age);
int age = 35;
System.out.println("Yaş=" + age);
int age = 35;
System.out.println("Yaş=", age);
int age = 35;
System.out.println("Yaş=" + age);


4. Əyri mötərizələri bağlamağı unutmaq

Bu çox yayılmış bir səhvdir. Adətən bu iki halda baş verir:

Birinci hal: hardansa kodu kopyalamağa qərar verdiniz və təsadüfən bəzi əyri mötərizələri buraxdınız. Və ya ikinci hal: açıq mötərizəyə uyğun bağlayıcı mötərizə yerləşdirməyə diqqət etmirsiniz.

Bu cür səhvlərdən qaçmaq üçün proqramlaşdırmaya yeni başlayanlara adətən açıq mötərizənin altında bağlayıcı mötərizəni yazmaq tövsiyə olunur.

Nümunələr:

Səhv olan kod Düzəliş edilmiş kod
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Riyaziyyat!");
   }
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Riyaziyyat!");
   }
}
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Riyaziyyat!");
      }
   }
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Riyaziyyat!");
      }
   }
}


5. Dairəvi mötərizələri yazmağı unutmaq

Ən çox bu səhvi, oxşar hallarda dairəvi mötərizələrin məcburi olmadığı proqramlaşdırma dillərini bilən proqramçılar edirlər.

Birinci variant — metod çağırışının sonunda mötərizəni sadəcə unutdular:

İkinci variant — if-else operatorunun şərtini mötərizəyə salmağı unutdular.

Nümunələr:

Xəta ilə kod Düzgün kod
System.out.println("Salam!");
System.out.println;
System.out.println("Və sağ ol!");
System.out.println("Salam!");
System.out.println();
System.out.println("Və sağ ol!");
if 2 < 3
{
   if 3 < 4
   {
      System.out.println("Riyaziyyat!");
   }
}
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Riyaziyyat!");
   }
}


6. Metod main-in başlığı səhv yazılıb

Metod main-in bəxtindən nə yamansılıqlar keçməyib, necə yazılmır ki. Yəqin ki, yeni başlayanlar heç nəyi bu qədər təhqir etmirlər bu bədbəxt metodu qədər. Əsas isə budur ki, hər dəfə təəccüblənirlər: bəs nə üçün proqramımız işləmir?

Və əlbəttə ki, problem proqramçıda deyil, proqramda, kompilyatorda, validatorda, Java-maşında olur. Günahkarların siyahısını sonsuz davam etmək olar.

Nümunələr:

Səhv kod İzah
static void main(String[] args)
public yazılmayıb
public void main(String[] args)
static yazılmayıb
public main(String[] args)
staticvoid yazılmayıb
void main(String[] args)
publicstatic yazılmayıb
public static void main(String args)
[] yazılmayıb
public static void main()
String[] args yazılmayıb
public static int main(String[] args)
void əvəzinə int yazılıb


7. Faylın adı sinfin adından fərqlənir

Standarta əsasən, Java-da bütün siniflər elə bir faylda saxlanılmalıdır ki, faylın adı sinfin adı ilə uyğun olsun. Və artıq əvvəlcədən deyildiyi kimi, burada hərf ölçüsü də əhəmiyyət kəsb edir:

Faylın adı Sinfin adı Qeyd
Solution.java
Solution
Hər şey qaydasındadır
Solutions.java
Solution
Faylın adında artıq s hərfi
solution.java
Solution
Faylın adı kiçik hərflərlədir
Solution.txt
Solution
Fayl genişlənməsi txt əvəzinə java
Solution.java
solution
Sinfin adı kiçik hərflərlədir

Əslində, java genişlənməsinə malik faylda bir neçə sinif elan edilə bilər, amma onlardan yalnız birinin adı qarşısında public sözü ola bilər. Bax onun adı faylın adı ilə uyğun gəlməlidir.

Java faylında həmişə bir sinif olmalıdır ki, onun adı faylın adı ilə uyğun olsun və onun public modifikatoru olsun. Misal:

Solution.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

Java dilində sinifləri siniflər daxilində yazmağa da icazə verilir. Bu da yuxarıda qeyd olunan məhdudiyyəti aşmaq üsullarından biridir. Faylda adı faylın adı ilə uyğun olan public sinif (modifikator public) elan edildikdə bu public sinif daxilində istənilən qədər sinif elan etmək olar. Amma bunlar artıq adi deyil, daxili və ya daxil edilmiş siniflər olacaq. Misal:

Solution.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}


8. package yazmağı unutmusunuz

Proqramlarda adətən minlərlə class olur, onların hər birinə sadə, anlaşılan və unikal adlar seçmək çətindir. Buna görə də Java-da bütün class-lar paketlər üzrə qruplaşdırılır — package. Eynilə faylların qovluqlar üzrə qruplaşdırıldığı kimi.

Ona görə hər class-ın başlanğıcında onun mənsub olduğu paketi yazmaq lazımdır. Məsələn

Paket olmadan kod Düzəldilmiş nümunə
public class Solution
{
}
package com.codegym.tasks.task0001;

public class Solution
{
}


9. import əlavə etməyi unutmuşuq

Əgər biz proqramımızda hansısa başqa bir class istifadə etmək istəyiriksə, bizim iki variantımız var: hər dəfə kodumuzda həmin class-ın adından öncə onun paket adını yazmalıyıq. Və ya bir dəfə həmin class-ın tam adını import sözü ilə birlikdə yaza bilərik.

Nümunə:

Import istifadə edilmədən Import istifadə edilərək
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

public class Solution
{
 Scanner console = new Scanner();
}

Hər iki variant işləkdir, amma əgər siz kodunuzda sadəcə Scanner yazıb import əlavə etməsəniz, kompilyator hansı paketdən Scanner class-ını götürməli olduğunu anlaya bilməyəcək və proqramınızı kompilyasiya etməyəcək.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION