CodeGym /Blog Jawa /Acak /8 kesalahan umum sing digawe dening programer anyar
John Squirrels
tingkat
San Francisco

8 kesalahan umum sing digawe dening programer anyar

Diterbitake ing grup
Hi! Dina iki kita bakal ndeleng 8 kesalahan umum sing ditindakake dening pangembang Java sing anyar (lan liyane). Sampeyan bakal nemokake akeh dhaptar kasebut ing web: akeh sing padha karo siji liyane. Nalika kita ngumpulake dhaftar kita, kita padha dipandu dening siji kritéria: apa kita nggawe kesalahane dhéwé sak sinau utawa Employment :) Padha ora diurutake dening wigati — padha merata penting kanggo sampeyan ngerti lan elinga.
  1. Mbandhingake obyek nggunakake == .

    Operator == mbandhingake referensi obyek.

    Referensi nuduhake alamat ing memori. Yen disimpen ing alamat sing beda, perbandingan nggunakake == bakal ngasilake false .

    
    public class Vehicle {
     
        String model;
        int maxSpeed;
        int yearOfManufacture;
     
        public Car(String model, int maxSpeed, int yearOfManufacture) {
            this.model = model;
            this.maxSpeed = maxSpeed;
            this.yearOfManufacture = yearOfManufacture;
        }
     
        public static void main(String[] args) {
            Car ferrari = new Car("Ferrari 360 Spider", 280, 1996);
            Car ferrariTwin = new Car("Ferrari 360 Spider", 280, 1996);
            System.out.println(ferrari == ferrariTwin);
        }
    }
    

    Kanggo mbandhingake obyek, kelas Obyek nduweni cara khusus: padha () . Terus terang, implementasine standar ora ala:

    
    public boolean equals(Object obj) {
        return (this == obj);
    }
    

    Ing kelas Obyek dhewe, cara sing padha () dileksanakake minangka perbandingan saka rong referensi. Sabanjure, kanggo mbandhingake obyek kanthi bener, sampeyan kudu nemtokake maneh cara iki miturut kritéria sing cocog ing program tartamtu kanggo obyek tartamtu. Kriteria kesetaraan terserah sampeyan.

    Ing bab mung sampeyan kudu ora lali dhaftar syarat kanggo bener overriding padha () . Sampeyan bisa nemokake kanthi gampang ing Internet.

  2. Nggunakake variabel non-statis ing cara statis (lan kosok balene).

    Yen sampeyan wis ndeleng pesen "Variabel non-statis x ora bisa dirujuk saka konteks statis", sugeng rawuh ing klub :)

    Cara statis ora nduweni akses menyang variabel non-statis (kayata).

    Iki ndadekake pangertèn: sawise kabeh, cara statis bisa diarani tanpa nggawe obyek saka sawijining kelas, lan kabeh kolom kagungane obyek tartamtu. Lan ing kene ana kontradiksi sing nyebabake kesalahan.

    Miturut cara, cara liya bisa digunakake kanthi becik: sampeyan bisa nggunakake variabel statis ing cara non-statis:

    
    public class Main {
     
        public int x = 10;
     
        public static int staticX = 100;
     
        public static void main(String[] args) {
     
            System.out.println(x); // Compilation error - you can't do this!
        }
     
        public void printX() {
     
            System.out.println(staticX); // But you can do this!
        }
    }
    

  3. Kesalahpahaman babagan cara argumen diterusake menyang metode: kanthi referensi utawa kanthi nilai.

    Obyek lan primitif diterusake menyang metode kanthi rong cara: pisanan, kanthi referensi; kapindho, miturut nilai.

    Pamula asring angel ngerti konsep iki. Akibaté, kode kasebut tumindak kanthi ora sengaja:

    
    public class Main {
     
        public static void main(String[] args) {
     
            int x = 7;
            incrementNumber(x);
            System.out.println(x);
     
            Cat cat = new Cat(7);
            catLevelUp(cat);
            System.out.println(cat.getAge());
     
        }
     
        public static void catLevelUp(Cat cat) {
     
            cat.setAge(cat.getAge()+1);
        }
     
        public static void incrementNumber(int x) {
            x++;
        }
    }
    

    Yen sampeyan ora ngerti persis nomer sing bakal nambah lan sing ora bakal (nomer lawas kosong utawa umur kucing), banjur waca maneh pelajaran babagan topik kasebut .

  4. Nglirwakake aturan coding.

    Iki ditrapake ora mung kanggo netepi prinsip "teknis" tartamtu, nanging uga kanggo konvensi jeneng biasa.

    Kabeh aturan kasebut (carane jeneng variabel, cara nulis jeneng metode) diciptakake kanthi alesan. Dheweke pancen mengaruhi keterbacaan kode

    Sawise kabeh, kode ora mesthi dadi duweke dhewe. Sampeyan bisa uga ditransfer menyang proyek liyane ing perusahaan sampeyan. Rekan kerja sing marisi kode sampeyan mesthi ora bakal seneng yen ndeleng kaya iki:

    
    public class Cat {
     
        private int S_O_M_E_T_H_I_N_G = 7;
        public String striiiiiiiiiiiiiing;
        protected double I_HAVE_NO_IDEA_WHAT_THIS_IS = 3.14;
        boolean random = Math.random() > 0.5;
     
    }
    

    Kode sampeyan bisa uga duwe kinerja sing apik banget, nanging yen ora bisa maca lan ngerti kepiye cara kerjane, mula, sayange, ora ana regane.

    Yen sampeyan tetep nganggo standar coding, sanajan kode sampeyan adoh saka ideal, paling ora kanca kerja sing luwih berpengalaman bakal bisa menehi pitutur marang sampeyan carane bisa ditingkatake saka sudut pandang teknis :)

  5. Salah pangerten kelas String

    
    public class Main {
     
        public static void main(String[] args) {
     
            String s1 = "I'm learning Java";
            String s2 = new String("I'm learning Java");
     
            System.out.println(s1 == s2);
        }
    }
    

    Yen sampeyan ora ngerti kenapa kode iki nuduhake palsu , sampeyan kudu nambah kawruh :)

    Pamula asring ora ngerti babagan Kolam String lan cara kerjane.

    Akibaté, dheweke ora ngerti carane mbandhingake senar kanthi bener ing kode kasebut. Kita njelajah topik iki kanthi rinci ing salah sawijining pelajaran .

  6. Nangani pangecualian kanthi salah.

    Pemula ora mung sing kesandhung babagan iki. Pangembang sing berpengalaman uga bakal kesandung. Alasane akeh.

    Kaping pisanan, ora ana resep universal. Program duwe macem-macem kesalahan lan skenario penanganan kesalahan sing beda.

    Kapindho, ora saben wong ngerti carane tilak tumpukan wis kabentuk. Ana akeh kesalahan nangani antipatterns, lan saben wong "salah" ing cara dhewe. Iki tegese iku luwih gampang kanggo njaluk kesalahan nangani salah saka mung bab liyane.

  7. Ora ngerti carane operator (aritmetika, logis lan liya-liyane).

    8 kesalahan umum sing ditindakake dening programer anyar - 2

    Punika conto prasaja. Bisa langsung ngomong apa kode iki bakal ditampilake?

    
    public class Main {
     
        public static void main(String[] args) {
     
            int i = 6;
            System.out.println(7 == i++);
        }
    }
    

    Yen sampeyan salah mangsuli utawa mung ngira, sampeyan isih duwe kesenjangan kawruh ing wilayah iki :)

    Kode bakal nampilake palsu , amarga operator kesetaraan ( == ) nduweni prioritas sing luwih dhuwur tinimbang operator increment postfix ( ++ ). Mulane, 7 == i comparison excuted pisanan, lan mung banjur i++ operasi dileksanakake.

    Miturut cara, kita uga duwe pawulangan rinci babagan iki. Iki link yen sampeyan ora kejawab.

  8. Ngilangi tembung break ing statement switch .

    Akeh wong sing maca artikel iki mesthi nggawe kesalahan iki! :)

    
    public class Main {
     
        public static void main(String[] args) {
     
            int i = 1;
     
            switch (i) {
     
                case 1: {
                    System.out.println("The number is equal to 1");
                }
                case 2: {
                    System.out.println("The number is equal to 2");
                }
                case 3: {
                    System.out.println("The number is equal to 3");
                }
            }
        }
     }
    

    Akibaté, eksekusi tumbles liwat kabeh opsi bisa:

    Output:

    Nomer padha karo 1 Nomer padha karo 2 Nomer padha karo 3

    A statement break interrupts eksekusi statement switch nalika salah siji opsi wis rampung dieksekusi. Aja lali yen sampeyan bisa entuk asil sing ora dikarepake :)

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION