CodeGym /جاوا بلاگ /Random-SD /روڪي پروگرامرز پاران ڪيل 8 عام غلطيون
John Squirrels
سطح
San Francisco

روڪي پروگرامرز پاران ڪيل 8 عام غلطيون

گروپ ۾ شايع ٿيل
سلام اڄ اسان ڏسنداسين 8 تمام عام غلطيون جيڪي ٺاھيل آھن روڪي (۽ ٻيا) جاوا ڊولپرز. توھان کي ويب تي ڪافي اھڙيون لسٽون ملنديون: انھن مان گھڻا ھڪ ٻئي سان ملندڙ جلندڙ آھن. جيئن اسان اسان جي لسٽ مرتب ڪئي، اسان کي ھڪڙي معيار سان ھدايت ڪئي وئي: ڇا اسان پنھنجي پڙهائي يا ملازمت دوران پاڻ کان غلطيون ڪيون :) اھي اھميت جي لحاظ کان ترتيب نه آھن - اھي اوھان لاء سمجھڻ ۽ ياد ڪرڻ لاء برابر آھن.
  1. استعمال ڪندي شين جو مقابلو == .

    == آپريٽر اعتراض جي حوالن جي ڀيٽ ڪري ٿو.

    حوالو ياداشت ۾ پتي ڏانهن اشارو. جيڪڏهن اهي مختلف پتي تي ذخيرو ٿيل آهن، پوء == استعمال ڪندي مقابلو غلط واپس ٿيندو .

    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);
        }
    }

    شين جو مقابلو ڪرڻ لاءِ، Object class وٽ هڪ خاص طريقو آهي: equals() . سچ پچ، ان جي ڊفالٽ عمل درآمد خراب ناهي:

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

    خود اعتراض طبقي ۾ ، برابر () طريقو ٻن حوالن جي مقابلي جي طور تي لاڳو ڪيو ويو آهي. موڙ ۾، شين کي صحيح طرح سان مقابلو ڪرڻ لاء، توهان کي هن طريقي جي وضاحت ڪرڻ جي ضرورت آهي معيار مطابق جيڪي توهان جي خاص پروگرام ۾ لاڳاپيل آهن توهان جي خاص شين لاء. برابري جا معيار توهان تي آهن.

    صرف هڪ شيءِ جيڪا توهان کي نه وسارڻ گهرجي اها آهي ضرورتن جي فهرست صحيح طور تي اوور رائيڊنگ equals() لاءِ . توهان ان کي آساني سان انٽرنيٽ تي ڳولي سگهو ٿا.

  2. جامد طريقن ۾ غير جامد متغير استعمال ڪندي (۽ ان جي برعڪس).

    جيڪڏھن توھان ڏٺو آھي اھو پيغام "غير جامد متغير x جامد حوالي سان حوالو نٿو ڪري سگھجي"، ڪلب ۾ ڀليڪار :)

    جامد طريقن کي غير جامد (مثال) متغير تائين رسائي نه آهي.

    اهو سمجھ ۾ اچي ٿو: سڀ کان پوء، هڪ جامد طريقو سڏيو وڃي ٿو بغير ان جي طبقي جو اعتراض پيدا ڪرڻ، ۽ سڀني شعبن جو تعلق مخصوص شين سان آهي. ۽ هتي اهو تضاد آهي جيڪو غلطي جو سبب بڻجندو آهي.

    رستي ۾، ٻئي طريقي سان وڃڻ ٺيڪ ڪم ڪري ٿو: توهان غير جامد طريقن ۾ جامد متغير استعمال ڪري سگهو ٿا:

    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. غلط فهمي ڪيئن دليلن کي طريقن ڏانهن منتقل ڪيو وڃي ٿو: حوالي سان يا قدر جي ذريعي.

    شيون ۽ primitives ٻن مختلف طريقن سان طريقن ڏانهن منتقل ڪيا ويا آهن: پهريون، حوالي سان؛ ٻيو، قدر جي لحاظ کان.

    شروعات ڪندڙ اڪثر ڪري هن تصور کي سمجهڻ ڏکيو پئجي ويندا آهن. نتيجي طور، انهن جو ڪوڊ غير متوقع طور تي عمل ڪري ٿو:

    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++;
        }
    }

    جيڪڏھن توھان نه ٿا ڄاڻو ته ڪھڙو تعداد وڌندو ۽ ڪھڙو نه ٿيندو (سادو پراڻو نمبر يا ٻلي جي عمر)، ته پوءِ اسان جو سبق پڙھو موضوع تي .

  4. ڪوڊنگ ضابطن کي نظرانداز ڪرڻ.

    اهو لاڳو ٿئي ٿو نه رڳو ڪجهه ”ٽيڪنيڪل“ اصولن جي تعميل تي، پر دنيا جي نامناسب ڪنوينشنن تي پڻ.

    اهي سڀئي ضابطا (متغير کي ڪيئن نالو ڏيڻ، طريقن جا نالا ڪيئن لکڻ) هڪ سبب لاء ايجاد ڪيا ويا. اهي واقعي ڪوڊ جي پڙهڻ جي صلاحيت کي متاثر ڪن ٿا

    آخرڪار، ڪوڊ هميشه توهان جو اڪيلو نه هوندو. توهان شايد توهان جي ڪمپني ۾ هڪ مختلف منصوبي تي منتقل ڪيو وڃي. توهان جا همراه جيڪي توهان جي ڪوڊ کي ورثي ۾ رکندا آهن اهي واضح طور تي خوش نه ٿيندا جڏهن اهي هن وانگر ڪجهه ڏسندا:

    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;
    
    }

    توھان جو ڪوڊ شايد ھوشيار طور تي اعليٰ ڪارڪردگي وارو آھي، پر جيڪڏھن اھو ناممڪن آھي پڙھڻ ۽ سمجھڻ لاءِ ته اھو اصل ۾ ڪيئن ڪم ڪري ٿو، پوءِ، افسوس، اھو گھڻو قدر ناھي.

    جيڪڏهن توهان ڪوڊنگ جي معيار تي قائم رهو، پوءِ به جيڪڏهن توهان جو ڪوڊ مثالي کان پري آهي، گهٽ ۾ گهٽ توهان جا وڌيڪ تجربيڪار همراهه توهان کي ٻڌائي سگهندا ته ان کي ٽيڪنيڪل نقطي نظر کان ڪيئن بهتر بڻائي سگهجي ٿو :)

  5. اسٽرنگ ڪلاس کي غلط سمجھڻ

    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);
        }
    }

    جيڪڏهن توهان کي خبر ناهي ته هي ڪوڊ غلط ڇو ڏيکاري ٿو ، توهان کي واضح طور تي پنهنجي ڄاڻ کي وڌائڻ جي ضرورت آهي :)

    شروعات ڪندڙ اڪثر بي خبر هوندا آهن اسٽرنگ پول ۽ اهو ڪيئن ڪم ڪري ٿو.

    نتيجي طور، اهي مڪمل طور تي نه سمجھندا آهن ته ڪيئن صحيح طريقي سان انهن جي ڪوڊ ۾ تارن جو مقابلو ڪجي. اسان هن موضوع کي تفصيل سان اسان جي هڪ سبق ۾ دريافت ڪيو .

  6. استثناء کي غلط طريقي سان سنڀالڻ.

    صرف شروعات ڪندڙ ئي نه آهن جيڪي هن تي ٺٺوليون ڪن ٿا. تجربا ڊولپرز پڻ ٽپي ويندا آهن. سبب ڪيترائي آهن.

    پهريون، اتي ڪو عالمگير ترڪيب نه آهي. پروگرامن ۾ سڀني قسمن جون مختلف غلطيون ۽ مختلف غلطيون سنڀالڻ جا منظرنامو آهن.

    ٻيو، هرڪو اهو نٿو سمجهي ته اسٽيڪ ٽريس ڪيئن ٺهيل آهي. اينٽي پيٽرن کي سنڀالڻ ۾ ڪيتريون ئي غلطيون آهن، ۽ انهن مان هر هڪ پنهنجي طريقي سان "غلط" آهي. هن جو مطلب اهو آهي ته اهو تمام گهڻو آسان آهي غلطي کي سنڀالڻ جي غلطي کان سواء ٻيو ڪجهه.

  7. مڪمل طور تي نه سمجھڻ وارا ڪيئن آپريٽرز (رياضي، منطقي ۽ ٻيا) ڪم ڪن ٿا.

    روڪي پروگرامرز پاران ڪيل 8 عام غلطيون - 2

    هتي هڪ سادي مثال آهي. ڇا توهان فوري طور تي ٻڌائي سگهو ٿا ته هي ڪوڊ ڇا ڏيکاريندو؟

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

    جيڪڏهن توهان غلط جواب ڏنو يا صرف اندازو لڳايو، ته توهان وٽ اڃا تائين هن علائقي ۾ ڄاڻ جي فرق آهي :)

    ڪوڊ غلط ڏيکاريندو ، ڇاڪاڻ ته برابري آپريٽر ( == ) پوسٽ فڪس انڪريمينٽ آپريٽر ( ++ ) کان وڌيڪ ترجيح رکي ٿو. تنهن ڪري، 7 == i مقابلي کي پهريون ڀيرو لڳايو ويو آهي، ۽ صرف ان کان پوء i ++ آپريشن ڪيو ويو آهي.

    رستي ۾، اسان ان تي تفصيلي سبق پڻ ڪيو هو. هتي لنڪ آهي جيڪڏهن توهان ان کي وڃائي ڇڏيو.

  8. سوئچ بيان ۾ لفظ وقفي کي ختم ڪرڻ .

    ڪيترائي ماڻهو هن مضمون کي پڙهي رهيا آهن ضرور هن غلطي ڪئي آهي! :)

    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");
                }
            }
        }
     }

    نتيجي طور، عملدرآمد هر ممڪن اختيار ذريعي ختم ٿئي ٿو:

    پيداوار:

    انگ برابر آهي 1 نمبر برابر 2 نمبر برابر 3

    هڪ وقفي بيان سوئچ بيان جي عمل ۾ مداخلت ڪري ٿو جڏهن اختيارن مان هڪ تي عمل ڪيو وڃي ٿو. ان کي نه وساريو يا توهان غير متوقع نتيجا حاصل ڪري سگهو ٿا :)

تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION