CodeGym /جاوا بلاگ /Random-SD /تشريحون. حصو 2. لومبوڪ
John Squirrels
سطح
San Francisco

تشريحون. حصو 2. لومبوڪ

گروپ ۾ شايع ٿيل
تشريحون. حصو 1 — ٿورو بورنگ ھن حصي ۾، مون لومبوڪ لئبريري کي ڇھڻ جو فيصلو ڪيو، ڇاڪاڻ ته اھا سورس ڪوڊ جي تشريحن جو ھڪ مشهور نمائندو آھي. مان ايندڙ آرٽيڪل ۾ رن ٽائم اينوٽيشنز کي خطاب ڪندس. تشريحون.  حصو 2. لومبوڪ - 1هڪ دفعي، اتي هڪ جاوا پروگرامر هو. هر روز هوء عام ڪوڊ لکيو، مثال طور، هن وانگر:
package lombok;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
هي طبقو عام آهي - صرف 2 شعبا (آخرڪار، ڪڏهن ڪڏهن 10-15 شعبن کان وڌيڪ آهن). يقينن، اهو سڀ ڪجهه IDE ۾ ٺاهي سگهجي ٿو. پر لعنت آهي، اهو ان جي جاء وٺندو آهي. جيڪڏهن 15-20 شعبا آهن، انهن مان هر هڪ کي گيٽر، سيٽرز، ڪنسٽرڪٽرز جي ضرورت آهي ... انهن سڀني مان، ڪجهه ٻيا طريقا، جيڪي اکين کان پوشيل آهن، آساني سان گم ٿي سگهن ٿا. اسان هن پروگرامر کي تيز ۽ گهٽ لکڻ ۾ ڪيئن مدد ڪريون ٿا؟ لومبوڪ. فرائينگ پين مان ٻاهر ۽ توهان سان گڏ باھ ۾. هتي ساڳيو طبقو آهي، پر هاڻي اسان استعمال ڪريون ٿا Lombok:
package lombok;

@Data
public class Person {
    private String name;
    private int age;
}
اهو ئي سڀ ڪجهه آهي. ٿڌو، ها؟ @Data تشريح ڇا ڪندو آهي؟ تاليف جي دوران، هي تشريح سڀني شعبن لاءِ حاصل ڪندڙ/سيٽرز ٺاهي ٿي، ۽ معياري ضابطن جي مطابق String()، equals()، ۽ hashCode() کي اوور رائيڊ ڪري ٿي. توهان IDE ۾ پلگ ان انسٽال ڪري سگهو ٿا. اهو ڪنهن به طريقن کي ڏسندو جيڪو اڃا تائين پيدا نه ڪيو ويو آهي. تشريحون.  حصو 2. Lombok - 2هن موقعي تي، مون کي اميد آهي ته توهان، منهنجا پڙهندڙ، دلچسپي ورتي، ڇو ته هيٺ ڏنل تفصيلن جي لنڪ سان گڏ هڪ مختصر تعارف هوندو. Lombok پڻ توهان کي ڪوڊ جي نسل کي ترتيب ڏيڻ جي اجازت ڏئي ٿو، مثال طور سڀ حاصل ڪندڙ ۽ سيٽرز هميشه گهربل نه هوندا آهن، يا توهان کي هيش ڪوڊ ٺاهڻ لاء مختلف الگورتھم جي ضرورت پوندي. هن کي مڪمل ڪرڻ لاءِ، الڳ الڳ تشريحون آهن (منهنجو خيال آهي ته انهن مان گھڻن کي وضاحت جي ضرورت نه هوندي): @Getter/@Setter، @ToString، @EqualsAndHashCode، @NoArgsConstructor، @RequiredArgsConstructor، @AllArgsConstructor، @Log اهي سڀ کان وڌيڪ آهن. عام سڄو سيٽ هتي ڏسي سگھجي ٿو . var ۽ val ڏانهن خاص ڌيان ڏيو. ان جو مطلب آهي ته توهان هن طرح ڪوڊ لکي سگهو ٿا:
package lombok;

import lombok.experimental.var;

@Data
public class Person {
    private String name;
    private int age;

    public static void main(String[] args) {
        var person = new Person();
        person.setAge(22);
        System.out.println(person);
    }
}
اهو ڇو ضروري آهي؟ مثال طور، اسان وٽ ھڪڙو RandomAccessFileChannel ڪلاس آھي. ڇو ته اسان هن طرح ڪوڊ لکڻ چاهيون ٿا؟
RandomAccessFileChannel channel = new RandomAccessFileChannel();
جيڪڏهن اسان اهو ڪري سگهون ٿا؟
var channel2 = new RandomAccessFileChannel();
منهنجي خيال ۾، اهو هميشه قابل قبول ناهي. مثال طور، اسان وٽ ھڪڙو بڇڙو طريقو آھي جيڪو ھڪڙو بڇڙو نقشو موٽائي ٿو:
public static Map<List<Set<Integer>>, Set<List<String>>> evilMap() {
    return new HashMap<>();
}
جيڪڏهن توهان هن کي سڏيندا آهيو:
Map<List<Set<Integer>>, Set<List<String>>> listSetMap = evilMap();
پوء اهو وڌيڪ يا گهٽ واضح آهي جيڪو اسان ڪم ڪري رهيا آهيون. جيڪڏهن ڪال هن طرح آهي:
var listSetMap = evilMap();
پوءِ صرف شيطان ڄاڻي ٿو ته ڪهڙو برائي ميپ() اتي واپس ايندو، ۽ جيستائين توهان طريقي سان نه ڏسندا، توهان کي خبر ناهي. سرچ فائلن جي چوڌاري ڊوڙڻ ڇو؟ عام طور تي، توهان کي هن سان محتاط رکڻ جي ضرورت آهي. تجرباتي شاخ: هتي آئون ذڪر ڪرڻ چاهيان ٿو @UtilityClass تشريح. اهو هڪ خانگي تعمير ڪندڙ ٺاهي ٿو جيڪو هڪ استثنا اڇلائي ٿو (تنهنڪري ننڍڙا ننڍڙا هٿ اتي مداخلت ڪرڻ لاء عڪس استعمال نٿا ڪن). ۽ اهو هڪ ڪلاس جي شروعات ۾ تمام خوبصورت آهي - اهو اسان کي ٻڌائي ٿو ته اتي افاديت جا طريقا آهن. @Delegate تشريح وفد جي نموني کي لاڳو ڪري ٿي . فرض ڪريو توھان وٽ ھڪڙو طبقو آھي جيڪو ڪنھن ٻئي طبقي کي ڪنھن شيءِ جي نمائندگي ڪري ٿو، ۽ توھان صرف ڪجھ طريقن ۾ تبديليون آڻيو ٿا- ھي تشريح توھان کي طريقن جي نقل ڪرڻ کان بچائيندو ۽ اھو انھن تي نظر رکندو. جيڪڏھن توھان ھٽايو يا ھڪڙو طريقو شامل ڪريو، ھي تشريح نوٽيس ڪندو. تجرباتي تشريح شاخ GitHub آفيشل ويب سائيٽ IDE لاءِ لومبوڪ سان صحيح ڪم ڪرڻ ۽ طريقن کي نمايان نه ڪرڻ لاءِ جيئن غير موجود آهي، توهان کي پلگ ان انسٽال ڪرڻ گهرجي. سرڪاري ويب سائيٽ تي هڪ سيٽ اپ سيڪشن آهي جتي توهان ڏسي سگهو ٿا ته هر IDE لاءِ پلگ ان ڪيئن ڳنڍجي. جئين توهان ڏسي سگهو ٿا، لومبوڪ مشهور آهي: >5,000 تارن ۽ > 1,000 فورڪ. بهار پنهنجي طبقن ۾ لومبوڪ استعمال ڪري ٿو. جيڪڏهن توهان جي پروجيڪٽ ۾ بهار آهي، هڪ نظر وٺو - اهو شايد توهان جي ڄاڻ کان سواء لومبوڪ کي ڇڪايو آهي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION