CodeGym /جاوا بلاگ /Random-UR /تشریحات۔ حصہ 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. لومبوک - 2اس مقام پر، مجھے امید ہے کہ آپ، میرے قارئین، دلچسپی لے چکے ہوں گے، کیونکہ ذیل میں تفصیلات کے لنکس کے ساتھ ایک مختصر تعارف ہوگا۔ لومبوک آپ کو کوڈ جنریشن کو اپنی مرضی کے مطابق بنانے کی بھی اجازت دیتا ہے، جیسے کہ تمام گیٹرز اور سیٹرز کی ہمیشہ ضرورت نہیں ہوتی ہے، یا آپ کو ہیش کوڈ بنانے کے لیے مختلف الگورتھم کی ضرورت پڑ سکتی ہے۔ اس کو پورا کرنے کے لیے، الگ الگ تشریحات ہیں (میرے خیال میں ان میں سے بہت سے کو تفصیل کی ضرورت نہیں ہوگی): @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