লম্বোক গেটর / সেটার বনাম জাভা 14 রেকর্ড


10

আমি লম্বোক প্রকল্প পছন্দ করি তবে এই দিনগুলিতে আমি জাভা 14 এর কয়েকটি নতুন বৈশিষ্ট্য পড়ছি এবং চেষ্টা করছি।

নতুন সামর্থ্যের ভিতরে, রেকর্ড কীওয়ার্ড রয়েছে যা ইতিমধ্যে অন্তর্নির্মিত নিম্নলিখিত কার্যকারিতা সহ একটি শ্রেণি তৈরি করতে দেয়: কনস্ট্রাক্টর, বেসরকারী চূড়ান্ত ক্ষেত্র, অ্যাক্সেসর, সমান / হ্যাশকোড, গেটরস, টুস্ট্রিং পদ্ধতিগুলি।

এখন আমার প্রশ্নটি হল: লম্বোকের বৈশিষ্ট্যটির উপর নির্ভর করা ভাল বা আমাদের রেকর্ড কার্যকারিতাটি ব্যবহার করা উচিত:

এটি ব্যবহার করা ভাল:

record Person (String name, String surname) {}

বা যে:

@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class GetterSetterExample {
  @Getter private int name;
  @Getter private int surname;
}

উভয় পদ্ধতির পক্ষে কি কি?


একটি জিনিসের জন্য, recordজাভাবিয়ান-স্টাইলের গেটার্স এবং সেটটারদের প্রত্যাশার জিনিসগুলির জন্য কাজ করবে না।
মার্ক রোটভেল

2
রোটভেলের মন্তব্যটির অর্থ কী তা হ'ল রেকর্ডে থাকা সম্পত্তি অ্যাক্সেসার পদ্ধতির সম্পত্তির একই নাম রাখা হয়েছে। সুতরাং, alice.phoneNumber()বরং সঙ্গে prefixing এর JavaBeans সম্মেলন চেয়ে get, হিসাবে alice.getPhoneNumber()
তুলিল বাউরক

1
recordবৈশিষ্ট্য একটি হল প্রিভিউ বৈশিষ্ট্যটি , এখনো প্রস্তুত উৎপাদনে ব্যবহারের জন্য।
তুলিল বাউরকে

রেকর্ডস বিধিনিষেধ অনেক ক্লাস তুলনায়, একটি রেকর্ড উদাহরণস্বরূপ একটি অন্য রেকর্ড বা বর্গ প্রসারিত করতে পারবেন না, এই JEP উপর বিধিনিষেধ বিভাগটি পরীক্ষা openjdk.java.net/jeps/359 আরও বিস্তারিত জানার জন্য
NAIT

উত্তর:


9

লম্পোক এবং recordজাভা ভাষার বৈশিষ্ট্য হ'ল বিভিন্ন জিনিসের জন্য আলাদা সরঞ্জাম। কিছু পৃষ্ঠপোষক ওভারল্যাপ রয়েছে, তবে এটি আপনাকে বিরক্ত করতে দেবেন না।

লম্বোক মূলত সিন্ট্যাকটিক সুবিধার বিষয়ে; এটি একটি ম্যাক্রো-প্রসেসর কোডের কিছু পরিচিত দরকারী নিদর্শনগুলির সাথে প্রি-লোড। এটি কোনও শব্দার্থবিজ্ঞান প্রদান করে না; আপনি টীকা সহ কোডটিতে সেট করেছেন এমন কিছু নকফ অনুসারে এটি নিদর্শনগুলিকে কেবল স্বয়ংক্রিয় করে তোলে। লম্বোক পুরোপুরি ডেটা বহনকারী ক্লাস প্রয়োগের সুবিধার্থে is

রেকর্ডস একটি শব্দার্থক বৈশিষ্ট্য; তারা নামমাত্র tuples হয় । একটি শব্দার্থক ঘোষণাপত্রের একটি Point প্রধান বিষয় হিসাবে (int x, int y), সংকলক এই রাষ্ট্রের বিবরণ থেকে তার উপস্থাপনা, পাশাপাশি নির্মাণ, ঘোষণা, সাম্যতা, হ্যাশিং এবং স্ট্রিং প্রতিনিধিত্বের প্রোটোকল পেতে পারে। যেহেতু তারা শব্দার্থবিজ্ঞান বহন করে, পাঠক এবং ফ্রেমওয়ার্কগুলি রেকর্ডগুলির এপিআই সম্পর্কে উচ্চ আত্মবিশ্বাসের সাথে যুক্ত হতে পারে। (এটি সিন্টেক্সিকভাবে সুবিধাজনকও হতে পারে; যদি তা হয় তবে দুর্দান্ত।


1
+1 ব্রায়ান গয়েটস: এবং এটি ধরে নিয়েছে যে আপনি আপনার আইডিইতে বর্তমান লম্বক সংস্করণটি পেতে পারেন। আমি ভাবছি যে লম্বোকের দ্রুত কোড পাঠের বিষয়ে কোনও অর্থবহ সুবিধা রয়েছে যা কোনও শ্রেণীর মন্তব্য প্রদান করে না।
ট্রাঙ্ক

4

আমি এই সংমিশ্রণের সাথে কিছু সময় ধরেও খেলছিলাম এবং সামান্য কিছুটা হাতের সাথে আমি নীচের পার্থক্যগুলি তালিকাভুক্ত করতে পারলাম:

Lombok

  • রেকর্ডগুলি এখনও প্রকাশিত বৈশিষ্ট্য নয় এবং এটি কেবল একটি পূর্বরূপ বৈশিষ্ট্য। সুতরাং লম্বোকের সাথে থাকা আরও বোধগম্য।
  • লম্বোককে একসাথে একত্রিত করার জন্য তারা এখনও শক্তিশালী কোনও সরঞ্জাম নয়। মনে রাখবেন যে লাইব্রেরিটিতে কেবলমাত্র পাঠ্যক্রমের চেয়ে আরও অনেক বেশি অফার রয়েছে @Getter, @AllArgsConstructor, @ToString, @EqualsAndHashCode
  • স্বয়ংক্রিয়ভাবে অভিজ্ঞ, এটি রেকর্ডে স্থানান্তরিত করার সময়EqualsAndHashCode আপনি প্রত্যাশা মতো নন ।

রেকর্ডস

  • অন্য একটি নোটে, যদি আপনার অবজেক্টের উপস্থাপনের প্রয়োজনীয়তা যদি "ডেটা ক্যারিয়ার" হয় তবে আপনি বয়লারপ্লেট কোডটি সুনির্দিষ্টভাবে সম্পাদন করতে কোনও অতিরিক্ত লাইব্রেরীর উপর নির্ভর না করে আপনি রেকর্ডগুলির সুবিধা নিতে পারেন। এই কারণেই একটি চূড়ান্ত নোট হিসাবে এই ব্লগটি নিম্নলিখিতটি পড়বে:

    এটি দলগুলিকে অন্তর্নিহিত প্যাটার্নের অনেকগুলি হ্যান্ড-কোডেড বাস্তবায়ন এবং লোমবকের মতো লাইব্রেরির প্রয়োজনীয়তা হ্রাস বা অপসারণে সহায়তা করবে help

অবশ্যই, প্রতিদিনের ভিত্তিতে, কোন প্রকল্প অনুসরণ এবং অনুশীলন করতে হবে তা বেছে নেওয়া কোনও প্রকল্পের প্রয়োজনীয়তার উপর ভিত্তি করে সর্বদা বুদ্ধিমান।


দ্রষ্টব্য - বর্তমানে ব্যবহারকারী উভয়কেই প্রায়শই ঘন ঘন ব্যবহার করার জন্য আরও উদাহরণ সহ আমি এটি আপডেট করার চেষ্টা করব।
নামান

3

এনবি: টীকাগুলির ক্রিসমাস গাছের পরিবর্তে, আপনি কেবল @Valueক্লাসে ব্যবহার করতে পারেন । নোট করুন যে এটি ক্লাসটিকে চূড়ান্ত করে তোলে এবং সমস্ত ক্ষেত্রকে ব্যক্তিগত এবং চূড়ান্ত উভয় করে তোলে এবং আপনাকে বাকিগুলিও দেয়। এটি রেকর্ডগুলির নিকটেই রয়েছে (সেগুলিও চূড়ান্ত, এবং অভ্যন্তরের সমস্ত ক্ষেত্র চূড়ান্ত)।

recordএখনও পূর্বরূপে রয়েছে, সুতরাং উত্পাদনের কোডের জন্য, অবশ্যই এটি উপযুক্ত নয়। লম্বোক ব্যবহার করুন।

রেকর্ডগুলি পূর্বরূপের বাইরে চলে গেলে, এটি আরও জটিল। Lombok হয় দূরে নমনীয়; আপনি সমস্ত কোড নতুন করে না লিখে সহজেই কিছু নতুন দিক পরিবর্তন করতে পারেন (আপনি কেবল উদাহরণস্বরূপ, সমান এবং হ্যাশকোড পদ্ধতিটি হস্তাক্ষর না করেই আপনার শ্রেণিতে একটি 'প্রসারিত' ধারা যুক্ত করতে পারেন; কিছু রেকর্ড আপনাকে দিতে পারে না)। লম্বোক আপনাকে আরও বৈশিষ্ট্যও দেয়: উদাহরণস্বরূপ আপনি @Builderটীকা যুক্ত করে কোনও বিল্ডার যুক্ত করতে পারেন ; কিছু রেকর্ড করতে পারে না।

আপনি যদি ডিজাইন করছেন এমন শ্রেণীর জন্য আপনি যদি এটির কোনও ব্যবহার করতে যাচ্ছেন না - আমি রেকর্ড ব্যবহার করব।

অস্বীকৃতি: আমি লজবোক প্রজেক্টের একজন মূল অবদানকারী।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.